<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="0" height="0">
<defs>
<filter id="goo">
<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 18 -7" result="goo" />
<feBlend in="SourceGraphic" in2="goo" />
</filter>
</defs>
</svg>
<div class="demo">
<div class="demo__buttons">
<div class="demo__social-btn-4 demo__social-btn"><i class="fa fa-snapchat"></i></div>
<div class="demo__social-btn-3 demo__social-btn"><i class="fa fa-instagram"></i></div>
<div class="demo__social-btn-2 demo__social-btn"><i class="fa fa-facebook"></i></div>
<div class="demo__social-btn-1 demo__social-btn"><i class="fa fa-twitter"></i></div>
<div class="demo__open-btn"><i class="fa fa-share-alt"></i></div>
</div>
<span class="about-me">Check out my other <a target="_blank" href="https://codepen.io/kiyutink">pens</a> and follow me on <a target="_blank" href="https://twitter.com/kiyutin_k">twitter</a></span>
</div>
*, *:before, *:after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
svg {
position: absolute;
}
.demo {
width: 100vw;
height: 100vh;
background: linear-gradient(45deg, darken(#CC9EC6, 30%), darken(#CC9EC6, 50%));
&__buttons {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
height: 200px;
transform: translate(-100px, -100px);
filter: url("#goo");
&.step-0 {
.demo__social-btn-1, .demo__social-btn-2, .demo__social-btn-3, .demo__social-btn-4 {
transform: translate3d(-50px, -50px, 0);
}
}
&.step-1 {
.demo__social-btn-1 {
transform: translate3d(-50px, -50px, 0);
}
.demo__social-btn-2, .demo__social-btn-3, .demo__social-btn-4 {
transform: translate3d(-50px, 50px, 0);
}
}
&.step-2 {
.demo__social-btn-1 {
transform: translate3d(-50px, -50px, 0);
}
.demo__social-btn-2 {
transform: translate3d(-50px, 50px, 0);
}
.demo__social-btn-3, .demo__social-btn-4 {
transform: translate3d(50px, 50px, 0);
}
}
&.step-3 {
.demo__social-btn-1 {
transform: translate3d(-50px, -50px, 0);
}
.demo__social-btn-2 {
transform: translate3d(-50px, 50px, 0);
}
.demo__social-btn-3 {
transform: translate3d(50px, 50px, 0);
}
.demo__social-btn-4 {
transform: translate3d(50px, -50px, 0);
}
}
}
&__social-btn {
position: absolute;
left: 65px;
top: 65px;
width: 70px;
height: 70px;
text-align: center;
line-height: 70px;
font-size: 30px;
background: white;
color: #261758;
border-radius: 50%;
cursor: pointer;
transition: all 0.2s ease;
&:hover {
color: #106279;
box-shadow: 0 0 15px white;
}
}
&__open-btn {
position: absolute;
left: 65px;
top: 65px;
width: 70px;
height: 70px;
text-align: center;
line-height: 70px;
font-weight: 700;
font-size: 30px;
font-family: sans-serif;
background: white;
color: #261758;
border-radius: 50%;
cursor: pointer;
transition: all 0.2s ease;
&:hover {
color: #106279;
box-shadow: 0 0 15px white;
}
}
}
.about-me {
position: absolute;
bottom: 10px;
width: 100%;
text-align: center;
font-size: 16px;
color: white;
font-family: Roboto, Arial, sans-serif;
a {
color: white;
&:hover {
color: lighten(blue, 20%);
}
}
}
View Compiled
"use strict";
$(document).ready(function() {
const $buttons = $(".demo__buttons");
const $toggle = $(".demo__open-btn");
let delay = 200;
let steps = [];
let open = false;
let curStep = 0;
for (let i = 0; i <= 3; i++) {
steps[i] = "demo__step-" + i;
}
function setStep(index) {
$buttons.removeClass("step-1 step-0 step-3 step-2").addClass("step-" + curStep);
}
let lastTimeout;
function animate() {
if (curStep >= 4) {
curStep = 0;
return;
}
open = true;
setStep(curStep);
curStep++;
lastTimeout = setTimeout(animate, delay);
}
$toggle.on("click", function() {
if (!open) animate();
else {
$buttons.removeClass("step-1 step-0 step-3 step-2");
clearTimeout(lastTimeout);
open = false;
curStep = 0;
}
});
});
This Pen doesn't use any external CSS resources.