.container
  
  a.button.button-play(href)
    //- svg.circle(viewBox="0 0 120 120" xmlns="http://www.w3.org/2000/svg")
      circle(cx="60" cy="60" r="56" stroke-width="8" stroke="#fff" fill="transparent")
View Compiled
.container{
  display:flex;
  justify-content:center;
  align-items:center;
  width:100%;
  height:100vh;
  background:darkgrey;
}

.circle{
  display:block;
  position: absolute;
  top:-4px;
  left:-4px;
  width:120px;
  height:120px;
  stroke-dasharray:1000px;
  stroke-dashoffset:0;
  transform-origin: 50% 50%;
  transition: all .8s linear .2s, opacity 0s linear 0s;
  
}

.button-play{
  display:block;
  position:relative;
  border:8px solid white;
  box-shadow:0 4px 6px -3px rgba(black, .3), inset 0 3px 4px -2px rgba(black, .25);
  position:relative;
  width:112px;
  height:112px;
  background:grey;
  background-image: linear-gradient(120deg, rgba(lighten(grey, 15%), .3) 50%, grey 51%);
  border-radius:50%; 
  transition: all .2s cubic-bezier(0.68, -0.55, 0.465, 1.55) .2s, border-width .4s cubic-bezier(0.68, -0.55, 0.465, 1.55);
  
  &:before{
    display:block;
    position:absolute;
    content:"";
    bottom:50%;
    left:50%;
    width:0;
    height:0;
    border:30px solid transparent;
    border-width:25px 0px 25px 40px;
    border-radius:0;
    border-left-color:white;
    transform:translate(-13px, 50%);
    
  }
  
  &:hover, &.active{    
    border: 4px solid white;
    .circle{
      stroke-dasharray:-1000px;
      stroke-dashoffset:-500px;
      opacity:0;
      transition: all 2s linear .3s, opacity .1s linear 2s;
    }
    
    &:before{
      animation:playJump .5s linear infinite;
    }
  }
}

@keyframes playJump{
  
  0%   { transform:translate(-13px, 60%) scale(1.1,0.7) ; }
  10%   { transform:translate(-13px, 30%) scale(0.9,1.2); }
	20%  { transform:translate(-13px, 15%); }
	40%  { transform:translate(-13px, 10%); }
	// 45%  { top: 160px; height: 40px; width: 60px; margin-left: -30px; }
	50%  {transform:translate(-13px, 10%); }
	55%  { transform:translate(-13px, 18%); }
	60%  { transform:translate(-13px, 20%); }
	65%  { transform:translate(-13px, 25%); }
	70%  { transform:translate(-13px, 30%);}
	90%  { transform:translate(-13px, 60%) scale(1.2,0.7); }
	100% { transform:translate(-13px, 60%) scale(1.4,0.7);}
}
View Compiled
window.onload = ()=>{
  let button = document.querySelector('.button-play');
  
  addClass(button, 'active');
  setTimeout(()=>{
    removeClass(button, 'active')
  }, 2500)
  
  function addClass(el, className){
    el.className += ` ${className}`;
  }
  
  function removeClass(el, className){
    el.className = el.className.replace(className, '');
  }
}
View Compiled

External CSS

  1. https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css

External JavaScript

This Pen doesn't use any external JavaScript resources.