title: Add border to scaling circles animation
body: <p>I'm implementing waves animation similar to this:</p>
  
  <p><a href="https://i.stack.imgur.com/ce2Ye.gif" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ce2Ye.gif" alt="enter image description here"></a></p>
  
  <p>I want to make the 2px border for each transparent wave circle - what is the best way to achieve this (preferably without width/height animation)?</p>
  
  <p>Currently I'm animating <code>box-shadow</code> property and seems I'm unable(?) to use several shadows to imitate the border as long as I need them to be half-transparent. Also I'm unable to use <code>scale</code> as <code>border-width</code> will be scaled as well. The only way I see here is to animate the actual <code>width/height</code> of each <code>&lt;i&gt;</code> element but I don't think this animation will be smooth on all devices(?)</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-css lang-css prettyprint-override"><code>:root {
    --size: 6px;
    --duration: 1000ms;
  }
  
  body {
    background: #333;
  }
  
  .blinker {
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-50%);
    position: absolute;
    z-index: 3;
    background: #fdfdf9;
    width: var(--size);
    height: var(--size);
    border-radius: 50%;
  }
  
  .blinker i {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-50%);
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    opacity: 1;
  }
  
  .blinker i:nth-child(1) {
    animation: blinkBoxShadow var(--duration) ease-out infinite;
    display: block;
    border: 1px solid white;
  }
  
  @keyframes blinkBoxShadow {
    from {
      box-shadow: 0 0 0 30px trasparent;
      background: transparent;
      opacity: 1;
    }
    to {
      box-shadow: 0 0 0 30px rgba(255, 255, 255, 0.7);
      background: rgba(255, 255, 255, 0.7);
      opacity: 0;
    }
  }
  
  .blinker i:nth-child(2) {
    transform: translateX(-50%) translateY(-50%);
    width: 61px;
    height: 61px;
    animation: blinkBoxShadow2 var(--duration) ease-out infinite;
    animation-delay: calc(var(--duration) - 200ms);
  }
  
  @keyframes blinkBoxShadow2 {
    from {
      box-shadow: 0 0 0 0px rgba(255, 179, 117, 0.7);
      opacity: 0;
    }
    50% {
      opacity: 0.5;
    }
    to {
      box-shadow: 0 0 0 50px rgba(255, 179, 117, 0);
      opacity: 0;
    }
  }
  
  .blinker i:nth-child(3) {
    background: white;
  }</code></pre>
  <pre class="snippet-code-html lang-html prettyprint-override"><code>&lt;div class="blinker"&gt;
    &lt;i&gt;&lt;/i&gt;
    &lt;i&gt;&lt;/i&gt;
    &lt;i&gt;&lt;/i&gt;
  &lt;/div&gt;</code></pre>
  </div>
  </div>
  </p>