0

0

css 过渡的持续时间与延迟_如何使用时间控制动画的启动与停止

P粉602998670

P粉602998670

发布时间:2026-01-14 13:33:01

|

489人浏览过

|

来源于php中文网

原创

transition-duration 控制过渡持续时间,单位必须为 s 或 ms,仅对属性值变化生效,不支持循环;transition-delay 控制延迟启动,支持负值跳过前段;timing-function 调节运动节奏,需与属性顺序匹配;过渡启停依赖状态切换,无法原生暂停,中途保持帧需改用 animation。

css 过渡的持续时间与延迟_如何使用时间控制动画的启动与停止

transition-duration 控制动画跑多快

动画持续时间由 transition-duration 决定,单位必须是 sms,写成 0.3300 都会失效——浏览器不认纯数字。它只对「属性值变化时」起作用,比如 background-colorred 变 blue,或者 transformscale(1)scale(1.2)

常见错误是把它和 animation-duration 混用:transition 不是循环播放的动画,它只响应一次状态切换(如 hover、focus、class 切换),没有迭代次数或方向控制。

  • transition-duration: 0.3s 是合法写法,transition-duration: 300ms 同样有效
  • 设为 0s 会让过渡完全消失,变成瞬时切换(但仍有 transition 触发逻辑)
  • 多个属性过渡时,可统一设一个时间,也可用逗号分隔分别指定:transition-duration: 0.3s, 0.6s

transition-delay 决定动画等多久才开始

transition-delay 是在状态变化(比如鼠标移上)发生后,延迟多久才启动过渡效果。它不影响动画本身长度,只影响“起跑时间”。负值允许提前启动——比如设为 -0.1s,意味着动画会从中间某一帧开始播放,常用于让多个元素过渡产生错落感。

注意:延迟只对首次触发生效;如果状态反复切换(如快速 hover 进出),浏览器可能丢弃未完成的过渡,延迟会重新计算。

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

  • 正数延迟(0.2s)适合做“稍等一下再动”的交互反馈
  • 负延迟(-0.15s)配合 transition-duration: 0.5s,相当于跳过前 30% 动画
  • 延迟对 transition-property 中未列出的属性无效——哪怕该属性本可以过渡

用 transition-timing-function 调整运动节奏

光有时间和延迟还不够,运动快慢分布才是真实体验的关键。transition-timing-function 默认是 ease(缓入缓出),但多数 UI 需要更明确的节奏:比如按钮按下的反馈常用 ease-out(先快后慢),侧边栏展开适合 ease-in(慢启快收)。

Programming Helper
Programming Helper

AI代码自动生成器,在AI的帮助下更快地编程

下载

贝塞尔曲线参数必须是四个数值,漏掉一个或写错顺序(如 cubic-bezier(0.4, 0, 1, 1) 写成 cubic-bezier(0.4, 0, 1))会导致整个声明被忽略,退回到 ease

button {
  transition: transform 0.25s cubic-bezier(0.2, 0.8, 0.4, 1),
              background-color 0.3s ease-out;
}
  • linear 适合机械感强的操作(如进度条填充)
  • steps(4, end) 用于帧动画式过渡(如加载指示器的阶梯式跳变)
  • 多个属性过渡时,timing function 可分别对应,用逗号隔开,顺序必须和 transition-property 一致

如何可靠地启动与停止过渡

过渡本身没有“播放/暂停”API,它的启停完全依赖 CSS 状态是否改变。所谓“停止”,本质是中断当前过渡并重置状态——比如移除触发类、还原属性值、或强制重排(offsetHeight 读取)来清空队列。

最稳妥的启动方式是通过 class 切换,而非直接操作 style:后者容易绕过 transition 机制,尤其在 JS 批量修改时。

  • 想强制重新触发同一过渡(比如重复点击按钮),需在移除 class 后加 void element.offsetWidthelement.offsetHeight 强制重排
  • getComputedStyle(element).transitionProperty 可检测当前是否启用过渡,但无法判断是否正在运行
  • 过渡中修改同一属性会打断当前动画,从新起点重新开始——不是继续跑完,这点和 animation 不同

真正难处理的是“中途暂停并保持在某一帧”,这超出了 transition 的能力范围,得换 animation + animation-play-state,或者用 transform + requestAnimationFrame 手动控制。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
javascriptvoid(o)怎么解决
javascriptvoid(o)怎么解决

javascriptvoid(o)的解决办法:1、检查语法错误;2、确保正确的执行环境;3、检查其他代码的冲突;4、使用事件委托;5、使用其他绑定方式;6、检查外部资源等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

186

2023.11.23

java中void的含义
java中void的含义

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

134

2025.11.27

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

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

871

2024.01.03

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

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

30

2025.12.06

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

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

530

2023.06.20

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

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

576

2023.07.28

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

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

760

2023.08.03

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

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

6208

2023.08.17

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

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

精品课程

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

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.4万人学习

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

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