JSFiddle - React, Tailwind, and code Playground
by youssef moudine
HTML
<div class='heart'>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
<div class='wave'>
<span></span>
</div>
</div>
<div class='heart'>
<div class='wave'>
...
CSS
@charset "UTF-8";
html, body {
width: 100%;
height: 100%;
}
body {
background-color: #140032;
overflow: hidden;
margin: 0;
}
body * {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
border-radius: 50%;
}
.heart:nth-child(0) {
-webkit-transform: scale(0);
transform: scale(0);
}
.heart:nth-child(1) {
-webkit-transform: scale(0.12);
transform: scale(0.12);
}
.heart:nth-child(2) {
-webkit-transform: scale(0.24);
transform: scale(0.24);
}
.heart:nth-child(3) {
-webkit-transform: scale(0.36);
transform: scale(0.36);
}
.heart:nth-child(4) {
-webkit-transform: scale(0.48);
transform: scale(0.48);
}
.heart:nth-child(5) {
-webkit-transform: scale(0.6);
transform: scale(0.6);
}
.heart:nth-child(6) {
-webkit-transform: scale(0.72);
transform: scale(0.72);
}
.heart:nth-child(7) {
-webkit-transform: scale(0.84);
transform: scale(0.84);
}
.heart:nth-child(8) {
-webkit-transform: scale(0.96);
transform: scale(0.96);
}
.heart:nth-child(9) {
-webkit-transform: scale(1.08);
transform: scale(1.08);
}
.heart:nth-child(10) {
-webkit-transform: scale(1.2);
transform: scale(1.2);
}
.heart .wave span {
width: 10px;
height: 150px;
-webkit-animation: heart 6s ease-in-out infinite;
animation: heart 6s ease-in-out infinite;
-webkit-transform-origin: top;
transform-origin: top;
border-left: 1px solid transparent;
}
.heart .wave span:after {
content: '♥';
position: absolute;
top: -20px;
left: calc(50% - 17px);
font-size: 35px;
}
.heart .wave:nth-child(0) {
-webkit-transform: rotate(0deg) translate(150px);
transform: rotate(0deg) translate(150px);
}
.heart .wave:nth-child(0) span {
-webkit-animation-delay: 0s;
animation-delay: 0s;
border-color: #ffaa00;
}
.heart .wave:nth-child(0) span:after {
-webkit-animation-delay: 0s;
animation-delay:...