讲师中心 微信公众号
AI工具推荐 视频效率加速

css动画如何实现暂停和继续_css动画播放状态控制方法

夜萱姑娘_1247

夜萱姑娘_1247

发布时间:2026-01-23 09:04:43

|

410人浏览过

|

来源于php中文网

原创

animation-play-state 属性通过 running 和 paused 值控制动画暂停与继续,可继承、支持 transition,JS 可动态修改 style.animationPlayState,但仅影响已启动动画,单次动画结束后设 running 不重播,需重置 animation 才能重启。

css动画如何实现暂停和继续_css动画播放状态控制方法

animation-play-state 控制暂停与继续

CSS 动画的暂停和继续,核心靠 animation-play-state 属性,它只有两个合法值:running 和 paused。设置在动画元素上即可实时生效,无需重新定义关键帧或触发重绘。

  • 该属性可继承,但通常直接作用于动画元素更可控
  • 支持 CSS 过渡(transition),比如用 transition: animation-play-state 0.2s 实现淡入式暂停感
  • 注意:它只影响当前已开始的动画实例;若动画已结束(animation-fill-mode 未设为 forwards),再设 running 不会重播

JavaScript 动态切换播放状态

通过 JS 修改 style.animationPlayState 是最常用方式,适合绑定按钮、滚动监听或事件触发场景。

const box = document.querySelector('.animated-box');
const toggleBtn = document.querySelector('#toggle-btn');

toggleBtn.addEventListener('click', () => {
  const currentState = box.style.animationPlayState;
  box.style.animationPlayState = currentState === 'paused' ? 'running' : 'paused';
});
  • 读取时优先取内联样式(element.style.animationPlayState),若为空需用 getComputedStyle() 获取计算值
  • 不要用 className 切换类名来控制状态——除非你提前在 CSS 中定义了 .paused { animation-play-state: paused; },否则 class 方式无法覆盖原动画的内联 running
  • 多个动画同时存在时,该属性统一控制所有 animation-name,无法单独暂停某一个

配合 animation-delay 和 animation-iteration-count 的注意事项

暂停/继续行为在循环动画中表现自然,但在单次动画(animation-iteration-count: 1)或带延迟(animation-delay)的场景下容易误判状态。

jm-jsjkxyjs02-zlm-405
jm-jsjkxyjs02-zlm-405

使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。

下载
  • 动画尚未到达 animation-delay 时间点时,animation-play-state: paused 无效——此时动画根本没启动,设 paused 无意义
  • 单次动画播放完毕后,即使设为 running,也不会重播;必须配合 animation-direction: alternate 或重置 animation-name(如先设空再恢复)才能“重启”
  • 若用 JS 暂停后想彻底重置动画,推荐 el.style.animation = 'none'; setTimeout(() => el.style.animation = originalAnimationValue, 0),避免状态残留

兼容性与 fallback 处理

animation-play-state 在现代浏览器中支持良好(Chrome 43+、Firefox 16+、Safari 9+、Edge 12+),但 iOS Safari 8–11.3 存在 bug:暂停后再继续可能跳过部分关键帧。

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

  • 对老版本 iOS Safari,可用 transform: scale(0.999) 强制重绘 + 短暂延时恢复来绕过渲染异常
  • 服务端或构建时可加 PostCSS 插件自动补全 -webkit-animation-play-state,但目前主流已无需手动加前缀
  • 纯 CSS 方案无法监听暂停事件,如需精确感知状态变化,仍要结合 JS 的 animationstart/animationend 配合定时轮询 getComputedStyle
实际中最容易被忽略的是:暂停后元素的视觉状态是“冻结在那一刻”,但 transform、opacity 等属性不会回退——如果你依赖这些值做后续逻辑,得自己记录暂停时刻的 computed style。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2906

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5959

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

4247

2026.03.24

edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

3102

2023.08.21

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2954

2024.03.05

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

3312

2025.04.24

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

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

3688

2023.11.20

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

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

4416

2024.01.03

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

热门下载

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

精品课程

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

共14课时 | 1.6万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn