CSS 动画循环间添加暂停间隔的完整实现方案

发布时间 - 2025-12-26 00:00:00    点击率:

`animation-delay` 仅控制首次播放前的延迟,无法在每次循环之间插入停顿;要实现“循环间暂停”,需通过延长动画总时长 + 关键帧设计空闲期(如静止帧)来模拟。

在 CSS 动画中,animation-delay 的作用仅限于动画第一次启动前的等待时间,它不会在每次 iteration(迭代)之间重复生效。因此,像问题中期望的“每轮摇晃后停顿 1 秒”这类效果,直接设置 animation-delay: 1s 是无效的。

✅ 正确思路:将“动画动作 + 暂停”合并为单次完整动画周期,再设为无限循环。

以 fa-shake 为例,原动画持续 1s,若希望每次摇晃后暂停 1s,则新动画总时长应为 2s,其中:

  • 0% – 50%(即前 1s):执行原有摇晃动画;
  • 50% – 100%(后 1s):保持最终静止状态(如 rotate(0deg)),形成视觉暂停。

? 修改后的代码如下:

.fa-shake {
  animation-name: fa-shake-paused;
  animation-duration: 2s; /* 总时长 = 动作时长 + 暂停时长 */
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  animation-fill-mode: forwards;
  width: 150px;
  height: auto;
}

@keyframes fa-shake-paused {
  /* 0%–49.9%:执行原摇晃逻辑(压缩至前1秒内) */
  0%, 5%, 15%, 25%, 35%, 45%, 49.9% {
    transform: rotate(0deg);
  }
  5.5%, 16.5%, 27.5%, 38.5%, 49% {
    transform: rotate(10deg);
  }
  11%, 22%, 33%, 44% {
    transform: rotate(-20deg);
  }

  /* 50%–100%:完全静止,模拟1秒暂停 */
  50%, 100% {
    transform: rotate(0deg);
  }
}

? 关键技巧说明:

  • 使用百分比关键帧精确分配时间比例(如 50% 对应 1s 处);
  • animation-fill-mode: forwards 确保动画结束帧保持生效(虽此处非必需,但推荐作为良好实践);
  • 避免在 100% 帧使用 transform: none 或未定义值,以防渲染异常。

? 进阶提示:若需更灵活控制(如暂停时长动态调整),可结合 CSS 自定义属性(--pause-duration)与 JavaScript 动态计算关键帧(需配合 @property 或运行时注入样式),但纯 CSS 方案已能满足绝大多数场景。

总结:CSS 动画不支持“迭代间延迟”,但可通过“拉长周期 + 静止帧占位”的方式优雅实现等效效果——本质是把“动-停”封装为原子化的一次动画。


# css  # javascript  # java 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  linux top下的 minerd 木马清除方法  如何在云主机上快速搭建网站?  node.js报错:Cannot find module 'ejs'的解决办法  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  如何登录建站主机?访问步骤全解析  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  javascript基于原型链的继承及call和apply函数用法分析  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  免费网站制作appp,免费制作app哪个平台好?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  Laravel如何使用Telescope进行调试?(安装和使用教程)  文字头像制作网站推荐软件,醒图能自动配文字吗?  Swift中swift中的switch 语句  bing浏览器学术搜索入口_bing学术文献检索地址  如何在自有机房高效搭建专业网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何快速启动建站代理加盟业务?  制作电商网页,电商供应链怎么做?  如何快速搭建个人网站并优化SEO?  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Android Socket接口实现即时通讯实例代码  如何快速搭建自助建站会员专属系统?  如何在橙子建站上传落地页?操作指南详解  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  长沙做网站要多少钱,长沙国安网络怎么样?  PythonWeb开发入门教程_Flask快速构建Web应用  Laravel如何实现用户注册和登录?(Auth脚手架指南)  如何快速搭建二级域名独立网站?  如何快速建站并高效导出源代码?  重庆市网站制作公司,重庆招聘网站哪个好?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  网站制作免费,什么网站能看正片电影?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  ,怎么在广州志愿者网站注册?  如何在建站之星绑定自定义域名?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  javascript中闭包概念与用法深入理解  如何快速完成中国万网建站详细流程?  JavaScript如何操作视频_媒体API怎么控制播放  移动端脚本框架Hammer.js  南京网站制作费用,南京远驱官方网站?  如何在阿里云高效完成企业建站全流程?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】