css动画反向播放怎么实现_使用alternate或reverse
发布时间 - 2026-01-30 00:00:00 点击率:次CSS动画反向播放通过animation-direction控制:alternate实现循环往返(奇数次正向、偶数次反向),需配合infinite或多次循环;reverse实现单次全程倒放(100%→0%),常用于退出动画;二者互斥,不可共用。
CSS

animation-direction 属性控制,其中 alternate 和 reverse 是两个关键值,但它们作用不同,不能混用。下面说清楚怎么用、什么时候用。
用 alternate 实现「来回循环」效果
alternate 不是让单次动画倒放,而是让每次循环时自动翻转播放方向:第1次正向(0% → 100%),第2次反向(100% → 0%),第3次再正向……如此往复。它必须配合 animation-iteration-count: infinite 或大于1的次数才看得出效果。
示例:
.box {animation: slide 2s ease-in-out infinite alternate;
}
@keyframes slide {
0% { transform: translateX(0); }
100% { transform: translateX(100px); }
}
这样元素就会在起点和100px之间平滑往返移动。
用 reverse 实现「全程倒放」一次
reverse 表示整个动画从结束状态开始,按逆序执行到起始状态——即完整地倒着播一遍(100% → 0%)。它只影响单次播放的方向,不改变循环行为。
常见用途:
- 做「退出动画」:比如某个弹窗关闭时,用和进入动画相同的 keyframes,但设
animation-direction: reverse,就能自然倒退收起; - 避免重复写 keyframes:不用为收起再定义一套从100%到0%的帧,复用原动画即可。
注意:reverse 本身不会自动循环,若要倒放多次,需额外设置 animation-iteration-count,且每次都是倒放。
想「暂停后倒播」?纯 CSS 做不到,需 JS 配合
CSS 动画没有内置的“倒带”或“从当前进度反向播放”能力。比如动画播到60%时,想让它倒退到0%,仅靠 animation-direction 无法实现——因为该属性只在动画开始时生效,运行中修改无效(除非重置动画)。
可行办法:
- 用 JavaScript 清除并重新触发动画,同时设
animation-direction: reverse; - 改用
transform+transition手动控制状态,更灵活; - 借助 Web Animations API(
element.animate())动态控制播放方向和时间。
别混淆:alternate ≠ reverse
这是最容易搞错的一点:
-
alternate:多轮循环中交替方向,视觉上是“来回动”,但每轮仍是完整播放 keyframes(只是顺序调换); -
reverse:单轮从末尾倒着播到开头,不循环时就只播一次倒序; - 两者互斥,不能同时写
alternate reverse,后者会覆盖前者。
# css
# javascript
# java
# js
# css动画
# count
# 循环
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
进行网站优化必须要坚持的四大原则
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
JavaScript实现Fly Bird小游戏
Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】
百度浏览器如何管理插件 百度浏览器插件管理方法
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
香港服务器网站卡顿?如何解决网络延迟与负载问题?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
微信推文制作网站有哪些,怎么做微信推文,急?
制作企业网站建设方案,怎样建设一个公司网站?
JS弹性运动实现方法分析
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel怎么上传文件_Laravel图片上传及存储配置
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
如何快速搭建虚拟主机网站?新手必看指南
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
如何在景安服务器上快速搭建个人网站?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
如何获取上海专业网站定制建站电话?
Laravel API资源类怎么用_Laravel API Resource数据转换
怎样使用JSON进行数据交换_它有什么限制
php 三元运算符实例详细介绍
Python正则表达式进阶教程_复杂匹配与分组替换解析
如何快速查询网站的真实建站时间?
如何获取免费开源的自助建站系统源码?
如何打造高效商业网站?建站目的决定转化率
如何有效防御Web建站篡改攻击?
Laravel如何处理和验证JSON类型的数据库字段
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
如何用VPS主机快速搭建个人网站?
PHP 500报错的快速解决方法
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
如何在Windows环境下新建FTP站点并设置权限?
如何在阿里云香港服务器快速搭建网站?
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
教你用AI润色文章,让你的文字表达更专业
中山网站推广排名,中山信息港登录入口?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
如何在阿里云部署织梦网站?
如何在企业微信快速生成手机电脑官网?

