实现效果
HTML代码
CSS代码
<!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元素来实现多层涟漪的效果。
.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,涟漪消失。