0

0

CSS3动画怎么让元素动起来_用transition和animation区别【详解】

雪夜

雪夜

发布时间:2026-01-06 18:51:08

|

368人浏览过

|

来源于php中文网

原创

用 animation 而非 transition,当需多关键帧、自动触发、循环播放、控制方向或延迟时;transition 仅支持两态插值且依赖属性变化,无法实现首帧动画或离散属性过渡。

css3动画怎么让元素动起来_用transition和animation区别【详解】

transition 还是 animation,取决于你想要的是“状态切换”还是“帧序列控制”。前者适合按钮悬停变色、菜单展开这类简单响应;后者才能做弹跳、循环轮播、路径运动等复杂效果。

什么时候必须用 animation

当你需要:多关键帧、自动触发、循环播放、控制播放方向或延迟起始时间时,transition 无能为力。

  • transition 只能在两个状态间插值(比如 opacity: 0 → 1),不能定义第 3 帧、第 4 帧
  • 没有 @keyframes 就没有 animation,而 transition 完全不依赖它
  • animation 可以设 animation-iteration-count: infinitetransition 永远只执行一次(除非反复触发)

transition 的坑:它不主动动,只等你“动手”

transition 不是动画声明,而是“当某个属性变化时,用什么方式过渡”。没变化,它就彻底沉默。

  • 写完 transition: all 0.3s 后元素不动?检查是否真有属性被修改(比如 JS 改了 className 或内联 style
  • display: none → block 不会触发 transition —— display 是离散属性,无法插值,改用 opacity + visibility
  • 想让元素一进来就动?transition 做不到,得靠 animation 配合 animation-fill-mode: forwards

animationtransition 能一起用吗?

能,而且很常见——但要注意叠加逻辑和优先级。

Refore
Refore

UI/UX智能设计工具,可以将任意网页、HTML文件或UI截图转换为设计稿

下载

立即学习前端免费学习笔记(深入)”;

  • 两者控制同一属性(如 transform)时,animation 会覆盖 transition 的中间过程,但不会阻止 transition 在动画结束后生效
  • 典型场景:一个按钮用 animation 做加载旋转,用户 hover 时再用 transition 缩放。只要 animation 没锁定 transform 的最终值,hover 缩放仍会触发
  • 避免冲突:给 animation 的关键帧明确写出所有要动画的属性(比如同时写 transformopacity),否则未声明的属性可能被 transition 拦截并意外插值
@keyframes slideIn {
  from { transform: translateX(-20px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}
.element {
  animation: slideIn 0.4s ease-out forwards;
  /* 下面这行不会干扰上面的动画,因为动画已结束且保持 final state */
  transition: opacity 0.2s;
}

真正容易被忽略的是:浏览器transition 的“变化检测”非常严格——哪怕只是 JS 里读了一次 offsetHeight,都可能强制重排,打断预期的过渡链。而 animation 是独立时序引擎,更可控,也更重。

相关专题

更多
css3教程
css3教程

php中文网为大家提供css3教程合集,CSS3的语法是建立在CSS原先版本基础上的,它允许使用者在标签中指定特定的HTML元素而不必使用多余的class、ID或JavaScript。php中文网还为大家带来css3的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

394

2023.06.14

有哪些css3渐变属性
有哪些css3渐变属性

css3中渐变属性有linear-gradient、radial-gradient、conic-gradient、repeating-linear-gradient、repeating-radial-gradient等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

138

2023.11.01

counta和count的区别
counta和count的区别

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

196

2023.11.20

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

510

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

253

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5260

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

475

2023.09.01

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

3

2026.01.09

热门下载

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

精品课程

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

共14课时 | 0.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.8万人学习

CSS教程
CSS教程

共754课时 | 18.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号