<button class="btn-download" id="btn-auto-click">
   <div class="arrow"></div>
</button>
@keyframes button-shadow{
  from{
    transform: rotate(0);
    bottom: -5px;
    right: -5px;
    opacity: 1;
  }to{
    transform: rotate(40deg);
    bottom: 50px;
    right: -60px;
    opacity: 0;
  }
}

@keyframes button-arrow-rotate{
  0%{
      width: 15px;
      margin: -25px auto 0;
  }1%{
      width: 10px;
      height: 0px;
      margin-top: 15px;
      transform: rotate(45deg);
  }100%{
      width: 10px;
      margin-top: 15px;
      transform: rotate(45deg);
      height: 35px;
  }
}

@keyframes button-arrow-down{
  from{
      bottom: -25px;
      opacity: 1;
  }to{
      bottom: -40px;
      opacity: 0;
  }
}

@keyframes button-arrow-up{
  0%{
      height: 20px;
      transform: rotateZ(45deg);
      right: -7px;
  }1%{
      right: 0px;
      height: 10px;
      width: 0;
      transform: rotateZ(0);
  }100%{
      right: 0px;
      height: 10px;
      width: 20px;
      transform: rotateZ(0);
  }
}

body{
  width: 90%;
  display: flex;
  background: #28df99;
  justify-content: center;
  align-items: center;
  height: 90vh;
}

button{
  background-color: #fff;
  width: 140px;
  height: 70px;
  border: none;
  outline: none;
  position: relative;
  border-radius: 5px;
  cursor: pointer;
  transition: all .5s;
  
  .arrow{
    height: 25px;
    width: 15px;
    background-color: #99f3bd;
    border-radius: 2px;
    margin: -25px auto 0;
    position: relative;
    &:after{
      content:'';
      height: 20px;
      width: 20px;
      position: absolute;
      background-color: #99f3bd;
      border-radius: 2px;
      transform: rotateZ(45deg) translate(1px,7px);
      bottom: 0;
      right: -7px;
      transition: all .5s;
      transition-delay: .5s;
    }
    &:before{
      content: '';
      background-color: #99f3bd;
      width: 25px;
      height: 10px;
      position: absolute;
      left: -5px;
      bottom: -25px;
      border-radius: 2px;
      transition: all .5s;
    }
  }
  
  &:after,&:before{
    content:'';
    position: absolute;
    z-index: -1;
    background-color: #99f3bd;
    height: 100%;
    width: 100%;
    bottom: -5px;
    right: -5px;
    border-radius: 5px;
  }
  
  &:after{
      animation-play-state: pause; 
  }
  
  &:active{
    width: 180px;
    height: 90px;
  }
  
  &:focus{
    &:after{   
      animation: button-shadow 1s;
    }
    
    .arrow{
      animation: button-arrow-rotate .5s forwards;
      animation-delay: .5s;
      &:after{
        animation: button-arrow-up .5s forwards;
        animation-delay: .5s;
      }
      &:before{
        animation: button-arrow-down .5s forwards;
      }
    }
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://code.jquery.com/jquery-3.5.1.min.js