css 想让图标在页面加载时弹跳动画怎么办_使用 transform translateY keyframes 实现弹跳

雨丽同学_7428

雨丽同学_7428

2026-01-19

377人浏览

原创

真正弹跳需分段贝塞尔曲线模拟物理过程:0%→25%快进慢出下落,25%→50%快出慢进触底回弹,50%→75%小幅二次反弹,75%→100%回稳,配合forwards填充和will-change优化性能。

css 想让图标在页面加载时弹跳动画怎么办_使用 transform translatey keyframes 实现弹跳

为什么直接用 transform: translateY() 做不出弹跳感

单纯线性位移(比如从 0-20px 再回 0)看着像上下晃,不是弹跳。真实弹跳有加速度变化:下落快、触底挤压、回弹衰减。CSS 的 @keyframes 本身不支持物理模拟,得靠贝塞尔曲线拟合“弹性”节奏。

  • 默认 ease-in-out 太匀速,像钟摆,不像弹簧
  • 必须用 cubic-bezier(0.28, 0.84, 0.6, 1) 这类高弹性值——这是模仿 Material Design 的弹跳缓动
  • 单次 keyframe 循环不够,要分段定义:下落 → 触底压缩 → 回弹 → 小幅二次反弹

怎么写一个真正像弹跳的 @keyframes bounce

下面这段是经过实测的「一次完整弹跳」动画,包含 4 个关键帧,用 cubic-bezier 控制每段节奏:

@keyframes bounce {
  0% {
    transform: translateY(0);
  }
  25% {
    transform: translateY(-30px);
    animation-timing-function: cubic-bezier(0.28, 0.84, 0.4, 1);
  }
  50% {
    transform: translateY(0);
    animation-timing-function: cubic-bezier(0.72, 0, 0.96, 0.28);
  }
  75% {
    transform: translateY(-10px);
    animation-timing-function: cubic-bezier(0.72, 0, 0.96, 0.28);
  }
  100% {
    transform: translateY(0);
  }
}
  • 25% 是下落峰值,位移最大,用「快进慢出」让下落加速、触底前减速(模拟重力+缓冲)
  • 50% 回到原位但立刻接小幅二次上抬(75%),制造弹簧余震感
  • 别省略每个 animation-timing-function,它只作用于当前关键帧到下一帧的过渡

图标元素怎么触发这个动画且只加载时执行一次

关键在动画触发时机和复用控制:用 animation 简写属性绑定,并禁用鼠标悬停等干扰行为。

Plan Dubai Travel — Flights, Hotels, Burj Khalifa, Desert Safari, Malls & Itineraries
Plan Dubai Travel — Flights, Hotels, Burj Khalifa, Desert Safari, Malls & Itineraries

规划您的迪拜之旅 — 哈利法塔观景、沙漠探险、迪拜购物中心购物、棕榈岛度假村及黄金市场砍价。还提供支持...

下载
  • 给图标加 class,比如 icon--bounce-on-load
  • 动画名、时长、填充模式、延迟、迭代次数都要显式声明:animation: bounce 0.8s ease-out forwards;
  • forwards 防止动画结束后图标跳回初始位置
  • animation-delay: 0.2s 可错开多个图标入场,避免同时抖动
  • 不要用 animation-iteration-count: infinite,否则会一直弹——除非你真想要魔性效果

示例样式:

.icon--bounce-on-load {
  display: inline-block;
  animation: bounce 0.8s cubic-bezier(0.28, 0.84, 0.6, 1) forwards;
}

容易被忽略的兼容性和性能坑

移动端 Safari 和旧版 Android WebView 对 transform + keyframes 组合有渲染毛刺,尤其在低配设备上。

  • 务必加 will-change: transform 提前告知浏览器该元素将动画,触发 GPU 加速
  • 避免同时对 top/lefttransform 动画——会强制重排,卡顿明显
  • IE11 不支持 cubic-bezier()@keyframes 内使用,如果还要兼容,得降级为 ease-out 并缩短动画时长(0.5s
  • 图标本身要是 inlineinline-block,否则 transform 可能失效(block 元素需明确宽高或触发 BFC)

最终上线前,在真机上快速滚动页面,看图标是否偶发闪烁或位移偏移——那是硬件加速未生效的信号。

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.20

2268

5

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

2024.01.03

3056

7

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

2025.12.06

286

9

function是什么
function是什么

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果。本专题为大家提供function是什么的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.04

2440

5

js函数function用法
js函数function用法

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。本专题提供js函数function用法的相关文章内容,大家可以免费阅读。

2023.10.07

414

5

android开发三大框架
android开发三大框架

android开发三大框架是XUtil框架、volley框架、ImageLoader框架。本专题为大家提供android开发三大框架相关的各种文章、以及下载和课程。

2023.08.14

862

4

android是什么系统
android是什么系统

Android是一种功能强大、灵活可定制、应用丰富、多任务处理能力强、兼容性好、网络连接能力强的操作系统。本专题为大家提供android相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.22

2447

5

android权限限制怎么解开
android权限限制怎么解开

android权限限制可以使用Root权限、第三方权限管理应用程序、ADB命令和Xposed框架解开。详细介绍:1、Root权限,通过获取Root权限,用户可以解锁所有权限,并对系统进行自定义和修改;2、第三方权限管理应用程序,用户可以轻松地控制和管理应用程序的权限;3、ADB命令,用户可以在设备上执行各种操作,包括解锁权限;4、Xposed框架,用户可以在不修改系统文件的情况下修改应用程序的行为和权限。

2023.09.19

4437

7

android重启应用的方法有哪些
android重启应用的方法有哪些

android重启应用有通过Intent、PendingIntent、系统服务、Runtime等方法。本专题为大家提供Android相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

545

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 5.5万人学习

CSS教程
CSS教程

共754课时 | 93.1万人学习