<div class="bubbles">
<div class="bubble"></div>
<div class="bubble bubble--purple"></div>
<div class="bubble bubble--green"></div>
<div class="bubble bubble--blue"></div>
<div class="bubble bubble--orange"></div>
</div>
:root{
--background: #222;
--b-purple: #44355B;
--b-green: #9EE493;
--b-blue: #00A6FB;
--b-orange: #EE5622;
--b-yellow: #ECA72C;
}
@keyframes rotateBubble{
from{
transform: rotate(0deg);
}
to{
transform: rotate(359deg);
}
}
.bubbles{
background-color: var(--background);
height: 400px;
position: relative;
width: 100%;
}
.bubble{
--b-animate-time: 10000ms;
--b-border-width: 10px;
--b-color: var(--b-yellow);
--b-left: auto;
--b-position: absolute;
--b-size: 100px;
--b-top: auto;
--b-radius: 50%;
--b-right: auto;
--b-rotate: 0deg;
--b-bottom: auto;
animation: rotateBubble var(--b-animate-time) infinite forwards;
background-image: linear-gradient(var(--b-color), transparent);
border-radius: var(--b-radius);
bottom: var(--b-bottom);
height: var(--b-size);
left: var(--b-left);
position: var(--b-position);
right: var(--b-right);
top: var(--b-top);
transform: rotate(var(--b-rotate));
width: var(--b-size);
}
.bubble::after{
background-color: var(--background);
border-radius: var(--b-radius);
content: '';
display: block;
height: calc(var(--b-size) - var(--b-border-width));
left: calc(var(--b-border-width) / 2);
position: absolute;
top: calc(var(--b-border-width) / 2);
width: calc(var(--b-size) - var(--b-border-width));
}
.bubble--purple{
--b-animate-time: 5000ms;
--b-border-width: 20px;
--b-color: var(--b-purple);
--b-left: 65%;
--b-size: 300px;
--b-rotate: 45deg;
--b-bottom: 5%;
}
.bubble--green{
--b-color: var(--b-green);
--b-left: 20%;
--b-top: 15%;
}
.bubble--blue{
--b-color: var(--b-blue);
--b-left: 40%;
--b-size: 150px;
--b-top: 10%;
}
.bubble--orange{
--b-color: var(--b-orange);
--b-right: 10%;
--b-rotate: 90deg;
--b-top: 2%;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.