<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="0" width="0">
  <defs>
    <filter id="gooey">
      <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
      <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 19 -7" result="gooey" />
     <feComposite in="SourceGraphic" in2="gooey" operator="atop"/>
    </filter>
  </defs>
</svg>
<p class="wrapper gooey">
  <button id="save">
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 22">
    <path class="icon" d="M7.682,3.364V1.636h8.637v1.728H7.682z M7.682,6.818h8.637V5.091H7.682V6.818z M16.318,12.863V8.545H7.682v4.318H2.5 l9.5,9.5l9.5-9.5H16.318z"/>
    </svg>
  </button>
</p>
html, body {
  height: 100%;
  margin: 0;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  background: #354456;
}
button {
  position: relative;
  display: block;
  width: auto;
  height: auto;
  border: 0;
  border-radius: 50%;
  background-color: transparent;
  cursor: pointer;
  
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  outline: none;
}
button::-moz-focus-inner {
  border: 0;
}
span {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  display: block;
  margin: auto;
  width: 1.25rem;
  height: 1.25rem;
  background-color: teal;
  z-index: -9999;
  transition: transform 0.5s 0s;
  transform-origin: center;
}
button svg {
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  padding: 1.25rem;
  background-color: teal;
  transition: transform 0.3s 0.5s;
}
.wrapper {
  padding: 1rem;
  margin: 0;
}
.gooey {
  -webkit-filter: url(#gooey);
  filter: url(#gooey);
}
.icon {
  fill: #e5f290;
}
button.pressed {
 cursor: default;
 animation: rotate 1s linear infinite;
}
button.pressed svg {
  transform: scale(0);
  transition: transform 1s;
}
button.pressed .icon {
  fill: teal;
}
button.pressed span {
  transition: transform 0.33s ease-out 0.5s;
}
button.pressed span:nth-of-type(1) {
  transform: translate(0rem, 4rem);
}
button.pressed span:nth-of-type(2) {
  transform: translate(-2.75rem, 2.75rem);
}
button.pressed span:nth-of-type(3) {
  transform: translate(-4rem, 0rem);
}
button.pressed span:nth-of-type(4) {
  transform: translate(-2.75rem, -2.75rem);
}
button.pressed span:nth-of-type(5) {
  transform: translate(0rem, -4rem);
}
button.pressed span:nth-of-type(6) {
  transform: translate(2.75rem, -2.75rem);
}
button.pressed span:nth-of-type(7) {
  transform: translate(4rem, 0rem);
}
button.pressed span:nth-of-type(8) {
  transform: translate(2.75rem, 2.75rem);
}
@keyframes rotate {
  to { transform: rotate(1turn)}
}
function startLoading(id) {
  id.classList.add("pressed");
}

function endLoading(id) {
  id.classList.remove("pressed");
}

save.addEventListener("click", function() {
  
  startLoading(save);
  
  setTimeout( function() {
    endLoading(save)
    }, 1500);
  }
);

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.