CSS 动画结束后保持最终状态的正确设置方法

发布时间 - 2026-01-02 00:00:00    点击率:

通过为动画添加 animation-fill-mode: forwards,可使元素在 css 动画执行完毕后保留最后一帧的样式(如 margin-top: -25px),避免动画回退到初始状态。

在使用 CSS @keyframes 定义动画时,浏览器默认会在动画播放结束后将元素样式重置为动画前的状态(即“回填”为原始值)。例如,你的 .animation 类触发了一个从 margin-top: 0px 上移到 margin-top: -25px 的动画,但若不显式声明动画结束后的状态保持策略,动画一结束,元素会立刻“弹回”原位。

解决方法是为动画规则添加 animation-fill-mode: forwards:

.animation {
  animation: up 750ms;
  animation-fill-mode: forwards; /* 关键:保持 100% 关键帧的样式 */
}

该属性告诉浏览器:动画结束后,元素应维持最后一帧(即 100%)所定义的样式,而非恢复初始状态。配合你已定义的 @keyframes,即可稳定停留在 margin-top: -25px。

✅ 补充说明:

  • forwards 仅影响动画结束后的样式保持,不影响动画播放过程;
  • 若需同时保持动画开始前的状态(如鼠标悬停前预设样式),可结合 backwards 或 both,但本例中只需 forwards;
  • animation-fill-mode 是 animation 复合属性的子属性,也可简写为:
    .animation {
      animation: up 750ms forwards; /* 写在 animation 值末尾即可 */
    }

⚠️ 注意事项:

  • 确保 animation-fill-mode 应用于触发动画的类(如 .animation),而非基础类(如 .block);
  • 若后续需再次触发动画(如重复点击上移),当前方案会因 .animation 类已存在而无效果;此时建议配合 animation-play-state 或使用 removeClass().addClass() 重置,或改用 animation: none 临时清除再应用;
  • 替代方案(现代推荐):优先考虑使用 transform: translateY(-25px) 替代 margin-top,性能更优且避免文档流扰动。

综上,animation-fill-mode: forwards 是实现“动画定格在终点”的标准、简洁且兼容性良好的解决方案。


# css  # 浏览器  # 解决方法  # margin  # transform  # animation  # 结束后  # 而非  # 鼠标  # 只需  # 会在  # 也可  # 应用于  # 后将  # 可使  # 停留在 


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


相关推荐: Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  如何在Windows虚拟主机上快速搭建网站?  如何在宝塔面板创建新站点?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何在IIS服务器上快速部署高效网站?  如何快速选择适合个人网站的云服务器配置?  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  Laravel怎么使用artisan命令缓存配置和视图  如何在新浪SAE免费搭建个人博客?  使用Dockerfile构建java web环境  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  EditPlus中的正则表达式实战(6)  公司门户网站制作流程,华为官网怎么做?  微信h5制作网站有哪些,免费微信H5页面制作工具?  浅谈redis在项目中的应用  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  高端网站建设与定制开发一站式解决方案 中企动力  Laravel用户密码怎么加密_Laravel Hash门面使用教程  C++时间戳转换成日期时间的步骤和示例代码  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  如何用5美元大硬盘VPS安全高效搭建个人网站?  实例解析Array和String方法  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  打造顶配客厅影院,这份100寸电视推荐名单请查收  javascript基本数据类型及类型检测常用方法小结  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  php 三元运算符实例详细介绍  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何在阿里云高效完成企业建站全流程?  Laravel怎么在Blade中安全地输出原始HTML内容  如何在局域网内绑定自建网站域名?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  详解CentOS6.5 安装 MySQL5.1.71的方法  网站优化排名时,需要考虑哪些问题呢?  如何将凡科建站内容保存为本地文件?  如何登录建站主机?访问步骤全解析  Bootstrap CSS布局之列表  如何在建站之星绑定自定义域名?  微信小程序 五星评分(包括半颗星评分)实例代码  免费网站制作appp,免费制作app哪个平台好?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  西安专业网站制作公司有哪些,陕西省建行官方网站?