HTML代码
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>泡泡</title> <link rel="stylesheet" href="pp.css"> </head> <body> <div class="container"> <div class="pp"></div> <div class="shadow"></div> </div> </body> </html>
CSS代码(可根据想要的效果改动相应的数值)
*{ margin: 0; padding: 0; } body{ height: 100vh; /* 弹性布局 居中显示 */ display: flex; justify-content: center; align-items: center; /* 渐变背景 */ background: linear-gradient(150deg,#ffd9e5,#fff0b2,#affffc); /* 溢出隐藏 */ overflow: hidden; } .container{ width: 200px; height: 200px; /* 相对定位 */ position: relative; } /* 泡泡 */ .pp{ width: 100%; height: 100%; /* 径向渐变 */ background: radial-gradient(circle at 75% 30%,#fff 5px,#ff21c0 8%,#5b5b5b 60%,#ff21c0 100%); border-radius: 50%; /* 阴影 */ box-shadow: inset 0 0 20px #fadbe5, inset 10px 0 46px #f8c4d5, inset 80px 0 60px #c5faf8, inset -20px -60px 100px #9cf6f3, inset 0 50px 140px #ccfffd, 0 0 90px #eafefd; /* 执行动画:动画名 时长 加速后减速 无限次播放 */ animation: bubble 5s ease-in-out infinite; } .shadow{ background-color: rgba(0,0,0,0.15); width: 150px; height: 40px; border-radius: 50%; /* 绝对定位 */ position: absolute; left: 50%; margin-left: -75px; bottom: -100px; /* 一点点模糊效果 */ filter: blur(1px); /* 执行动画:动画名 时长 加速后减速 无限次播放 */ animation: shadow 4s ease infinite; } /* 定义动画 */ /* 泡泡浮动动画 */ @keyframes bubble { 0%{ transform: translate(0px,0px); } 25%{ transform: translate(0px,-200px); } 50%{ transform: translate(100px,-200px); } 75%{ transform: translate(300px,0px); } 100%{ transform: translate(0px,0px); } } /* 投影动画 */ @keyframes shadow { 0%,100%{ transform: scale(1); } 50%{ transform: scale(2); } }