涟漪
实现效果
HTML代码
<!DOCTYPE html>
<head>
<link rel="stylesheet" href="demo.css">
</head>
<body>
<div class="ripple-bg">
<div class="ripple1"></div>
<div class="ripple2"></div>
<div class="ripple3"></div>
</div>
</body>
</html>
1. ripple-bg为波纹的中心点,该div元素不进行任何动画。
2. 这里用了三个div元素来实现多层涟漪的效果。
CSS代码
.ripple-bg {
width: 80px;
height: 80px;
border-radius: 50%;
background-color: rgb(0, 195, 255);
margin: 300px auto;
}
/* 共有样式 */
.ripple1, .ripple2, .ripple3{
width: 80px;
height: 80px;
border-radius: 50%;
background-color: rgb(0, 195, 255);
}
/* 单独样式 */
/* 设置位置以及动画延迟 */
.ripple1 {
animation: ripple-anim 3s ease-out 0s infinite;
}
.ripple2 {
position: relative;
top: -80px;
animation: ripple-anim 3s ease-out 1s infinite;
}
.ripple3 {
position: relative;
top: -160px;
animation: ripple-anim 3s ease-out 2s infinite;
}
/* 动画效果 */
@keyframes ripple-anim {
0% {
transform: scale(0.5, 0.5);
opacity: 1;
}
30% {
opacity: 1;
}
100% {
transform: scale(2, 2);
opacity: 0;
}
}
1. 类名为ripple1、ripple2和ripple3的div元素颜色应和父类元素相同;位置设置为relative,相对于父类元素进行调整,将三层涟漪的中心点与父类元素重合。
2. 为实现多层涟漪效果,ripple1、ripple2和ripple3的动画开始时间应不同,所以要设置延迟。
3. 在动画中,涟漪由小变大,在进行到100%时,要将透明度设置为0,涟漪消失。