HTML _CSS
Bubble Animation
HiroDaegu
2022. 7. 28. 00:40
728x90
SMALL
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SOUP BUBBLE ANIMATION</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="bubble">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="bubble">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="bubble">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="bubble">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<div class="bubble">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</body>
</html>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #000;
}
.bubble {
position: absolute;
width: 200px;
height: 200px;
border-radius: 50%;
box-shadow: inset 0 0 25px rgba(255, 255, 255, .25);
animation: animate 8s ease-in-out infinite;
}
.bubble:nth-child(2) {
position: relative;
zoom: .45;
left: -10px;
top: -100px;
animation-delay: -4s;
}
.bubble:nth-child(3) {
position: relative;
zoom: .25;
right: -80px;
top: -30px;
animation-delay: -6s;
}
.bubble:nth-child(4) {
position: relative;
zoom: .35;
left: -120px;
bottom: -200px;
animation-delay: -3s;
}
.bubble:nth-child(5) {
position: relative;
zoom: .5;
left: 0;
top: 200px;
animation-delay: -5s;
}
@keyframes animate {
0%, 100% {
transform: translateY(-20px);
}
50% {
transform: translateY(20px);
}
}
.bubble::before {
content: '';
position: absolute;
top: 50px;
left: 45px;
width: 30px;
height: 30px;
border-radius: 50%;
background-color: #FFF;
z-index: 10;
filter: blur(2px);
}
.bubble::after {
content: '';
position: absolute;
top: 80px;
left: 80px;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #FFF;
z-index: 10;
filter: blur(2px);
}
.bubble span {
position: absolute;
border-radius: 50%;
}
.bubble span:nth-child(1) {
inset: 10px;
border-left: 15px solid #0FB4FF;
filter: blur(8px);
}
.bubble span:nth-child(2) {
inset: 10px;
border-right: 15px solid #FF4484;
filter: blur(8px);
}
.bubble span:nth-child(3) {
inset: 20px;
border-top: 15px solid #FFEB3B;
filter: blur(8px);
}
.bubble span:nth-child(4) {
inset: 23px;
border-left: 15px solid #FF4484;
filter: blur(12px);
}
.bubble span:nth-child(5) {
inset: 10px;
border-bottom: 10px solid #FFF;
filter: blur(12px);
transform: rotate(330deg);
}
728x90
LIST