<main>
  <div class="reference"></div>
</main>

<header>
  <code><span class="property">transform:</span></code>
</header>

<footer>
  <p>Use the CodePen JS panel to modify the transform</p>
</footer>
div {
  /* also try a different transform-origin for kicks*/
  --transform-origin-x: 50%;
  --transform-origin-y: 50%;
  transform-origin: var(--transform-origin-x) var(--transform-origin-y); 
  
  --graph-color: hsla(183, 80%, 0%, .05);
  
  background-color: hsla(var(--hue, 183), 80%, 50%, var(--alpha, 1));
  
  width: var(--side);
  height: var(--side);
  position: absolute;
  top: 0;
  left: calc(var(--side) * -1);
  opacity: 0;
  mix-blend-mode: normal;
  
  background-image: 
    linear-gradient(to right,
      var(--graph-color) 0px, 
      var(--graph-color) 1px),
    linear-gradient(to bottom,
      var(--graph-color) 0px, 
      var(--graph-color) 1px);
  background-position: var(--transform-origin-x) var(--transform-origin-y);
  background-size: 2px 100%, 100% 2px;
  background-repeat: no-repeat;
  
  transition: opacity 200ms ease-in;
}
div:last-of-type {
  mix-blend-mode: normal;
}
main {
  position: relative;
  width: var(--side);
  height: var(--side);
  
  --side: 33vmin;
}

.reference {
  opacity: .3;
  background-color: hsla(183, 80%, 0%, .15);
  border: 3px dashed hsl(183, 80%, 0%);
}

body {
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  background: hsl(183, 80%, 98%);
  
  --graph-color: hsl(0,0%,95%); 
  background-image: 
    repeating-linear-gradient(to right, 
      var(--graph-color) 0px, 
      var(--graph-color) 1px, 
      transparent 1px, 
      transparent 1vmin),
    repeating-linear-gradient(to bottom, 
      var(--graph-color) 0px, 
      var(--graph-color) 1px, 
      transparent 1px, 
      transparent 1vmin);
}
*, *::before, *::after {
  box-sizing: border-box;
}
header {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  text-align: center;
  padding: 1rem;
  font-size: calc(2vmin + .5rem);
  font-family: monospace;
}
header span {
  display: inline-block;
  padding: .5rem 0 .25rem;
  background: linear-gradient(to right, 
    hsla(var(--hue, 183), 80%, 50%, var(--hue, 0)), 
    hsla(var(--hue, 183), 80%, 50%, var(--hue, 0))) left bottom no-repeat;
  background-size: 100% 20%;
  transition: background 200ms linear;
  margin-right: .75rem;
}
footer {
  position: absolute;
  bottom: 0;
  right: 0;
  left: 0;
  text-align: center;
  padding: 2vmin;
  font-size: calc(1vmin + .5rem);
  font-family: system-ui, 'Segoe UI', -apple-system, sans-serif;
}
//add/remove transforms or rearrange them by modifying this array and running again
const transforms = [
  'translateX(66vmin)',
  'rotate(.125turn)',
  'scale(.5)',
  'translateY(66vmin)',
];

var main = document.querySelector('main');
var description = document.querySelector('header');

const opacityBase = transforms.length + 1;
const duration = 2000;
const endOpacity = 1;

const hues = [183, 43, 143, 343, 283];

var divs = [];
var descriptions = [];

transforms.forEach(function(t) {
  let div = document.createElement('div');
  let span = document.createElement('span');
  span.textContent = t;
  
  divs.push(div);
  descriptions.push(span);
  
  main.appendChild(div);
  description.appendChild(span);
});

animateIt(0);

function animateIt(i) {
  var el = divs[i];
  var hue = hues[i % hues.length]
  descriptions[i].style.setProperty('--hue', hue);
  el.style.setProperty('--hue', hue);
  el.style.setProperty('--alpha', (i+1)/opacityBase);
  
  var start = transforms.reduce(function(result, transform, index) {
    return index < i ? result + ' ' + transform : result;
  }, '').trim();
  
  el.style.opacity = endOpacity;
  var animation = el.animate([
    { transform: start || 'translateX(0)' },
    { transform: (start ? start + ' ' : '') + transforms[i] }
  ], {
    fill: 'forwards',
    duration: duration,
    easing: 'ease-out'
  });
  
  if (i < transforms.length - 1) {
    animation.onfinish = function() { animateIt(i+1) };
  }
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://s3-us-west-2.amazonaws.com/s.cdpn.io/61811/web-animations-next-2.2.5.min.js