最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
HTML怎么做气泡上升效果_html气泡上升浮动动画实现【零基础】
时间:2026-07-22 10:51:53 编辑:袖梨 来源:一聚教程网
用CSS @keyframes实现气泡上升动画需定义位移、缩放与透明度变化,配合position:absolute、transform:translateY()及animation-delay错峰触发,推荐伪元素+自定义类控制延迟与渐变效果。
用 CSS @keyframes 做气泡上升动画最直接
纯 HTML 无法实现动画,必须配合 CSS。核心是用 @keyframes 定义从底部到顶部的位移 + 可选缩放/透明度变化,再通过 animation 应用到气泡元素上。
常见错误是只写 top 或 transform: translateY() 却没设 position: relative/absolute,导致动画无效果。气泡通常用 <div> 或伪元素 ::before 实现,推荐后者减少 DOM 节点。
- 气泡容器需设
position: relative,气泡本身设position: absolute - 动画时长建议 3–6s,太快像闪,太慢显滞涩
- 用
transform: translateY()比top性能更好(触发 GPU 加速) - 加
animation-timing-function: cubic-bezier(0.2, 0.8, 0.4, 1)让上升带点轻盈感,避免线性僵硬
多个气泡不同步上升要靠 animation-delay 随机化
如果所有气泡同时启停,看起来像集体操,失去自然感。真实气泡是错落、不规则上升的——这靠 animation-delay 控制起始时间差实现。
零基础不用手写 10 个不同 delay 值。可以用 CSS 自定义属性 + JS 动态赋值,或直接写 3–5 组预设类名,用 class 切换分配:
立即学习“前端免费学习笔记(深入)”;
`.bubble-1 { animation-delay: 0.3s; }.bubble-2 { animation-delay: 1.1s; }.bubble-3 { animation-delay: 1.9s; }`
更省事的做法:在父容器上用 animation: bubble-rise 4s infinite,再让每个气泡用 animation-duration 微调(比如 3.7s / 4.2s),也能打破同步感。
气泡大小渐变和淡出要用 transform + opacity 组合
只上升不够真实,真实气泡越往上体积略胀、边缘略虚、快到水面时开始半透明。这需要在 @keyframes 中同时控制 transform: scale() 和 opacity。
注意两个坑:
-
scale(0.8)到scale(1.2)比固定大小更显呼吸感,但别超过scale(1.4),否则失真 -
opacity从 0.6 → 1.0 → 0.3 是典型路径:底部稍透(水体遮挡),中段最实,顶部快破灭前又变淡 - 别在 keyframes 里写
border-radius: 50%动画——它不支持过渡,气泡会突然变圆或变方
移动端卡顿?关掉 animation-fill-mode 或降帧率
部分安卓 WebView 或低端 iOS 设备跑多个气泡动画会掉帧,尤其当气泡超 15 个或用了 box-shadow。优先排查 animation-fill-mode: forwards ——它会让元素停在终点状态,可能触发重排;改成 none 或干脆去掉。
其他有效手段:
- 用
will-change: transform提前提醒浏览器优化(但别滥用,每个气泡都加反而拖慢) - 把
animation-timing-function改成linear,比cubic-bezier计算开销小 - 气泡数量 > 10 时,用 JS 控制:屏幕外的气泡暂停
animation-play-state: paused - 真不行就降级:iOS Safari 下用
@supports (-webkit-animation: none)单独设更简动画
气泡动画真正的复杂点不在怎么动,而在“动多少”——数量、尺寸、延迟、透明度曲线,全得靠肉眼调。截图对比两版效果,比看一百行代码管用。
相关文章
- 崩坏:星穹铁道千冶 刃技能解析及加点推荐 07-31
- 《解压找茬烧脑》偷喝奶茶通关秘籍 07-31
- 崩坏:星穹铁道千冶-刃核心定位 07-31
- 《解压找茬烧脑》跨栏女神助力运动员加速跨栏夺冠通关攻略 07-31
- 解压找茬烧脑:妈妈洗脚给妈妈舒服的洗一次脚通关攻略 07-31
- 异环打卡拍照点介绍 07-31