CSS关键帧动画为什么不生效? UX-林莹 提问于 2026-02-24 22:11:17 阅读 32 前端 我写了个简单的淡入动画,但加到元素上完全没反应,控制台也没报错。试过改animation-name和调用方式,还是不行。 关键帧代码是这样写的: @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .my-element { animation: fadeIn 2s ease-in; } CSS3动画效果 我来解答 赞 10 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 ❤怡萱 Lv1 代码放这了,问题大概率出在你没加前缀或者没正确引用动画名 先确认几个点: 第一,你是不是在 animation 里漏写了 forwards? 默认动画结束后会回到初始状态,如果你希望停在最后状态,得加 animation-fill-mode: forwards; 第二,检查下你用的浏览器支不支持无前缀关键帧——现在主流浏览器都支持了,但如果你在旧版 Safari 或某些国产浏览器里跑,可能得加 -webkit- 前缀 第三,最常见坑:你是不是把 @keyframes fadeIn 写在了某个媒体查询或者嵌套在别的规则里?比如这样: @media (min-width: 768px) { @keyframes fadeIn { ... } } 这种写法是无效的,关键帧必须直接写在根作用域 再给你个完整能跑的最小示例,直接复制试试: <div class="my-element">测试</div> <style> @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .my-element { opacity: 0; animation: fadeIn 2s ease-in forwards; } </style> 要是还不动,把你的完整 HTML 和 CSS 贴出来,我帮你看看是不是被其他样式覆盖了——比如 pointer-events: none 或者 display: none 之后又改成 block,这种也会导致动画不触发 回复 点赞 1 2026-02-24 22:13 加载更多 相关推荐 2 回答 66 浏览 为什么内联关键CSS后首屏渲染反而更慢了? 我按照教程把关键CSS内联到HTML里了,但首屏渲染时间反而比之前多了500ms,这是为什么? 之前用Webpack的ExtractTextPlugin把CSS抽离成单独文件,加载时间约1.2秒。按首... UX-玉淇 优化 2026-02-05 17:38:55 1 回答 32 浏览 为什么我的CSS动画在移动端卡顿严重? 我在做一个移动端的下拉刷新效果,用的是纯CSS动画,但真机测试时特别卡,尤其是低端安卓机。我试过加了transform: translateZ(0)开启硬件加速,还是没改善。 动画代码是这样的: @k... 若溪 移动 2026-03-28 07:46:16 2 回答 36 浏览 CSS关键帧动画在Vue里为什么不生效? 我在Vue组件里写了个简单的淡入动画,但页面上完全没反应,控制台也没报错。关键帧定义和animation属性都写了,是不是哪里写错了? 我试过把keyframes放在里面,也试过移到全局样式,都不行。... 景苑酱~ 前端 2026-03-17 15:23:19 1 回答 33 浏览 Jotai 的 atom 值更新后,为什么 CSS 动画没触发? 我用 Jotai 管理一个状态,控制元素的显示/隐藏,但状态变了,CSS 的 transition 却没生效,是哪出问题了? 我试过直接改 class,也试过用 useEffect 监听 atom 值... a'ゞ胜换 框架 2026-03-08 12:28:20 2 回答 34 浏览 预加载图片时为什么会阻塞关键CSS加载? 我在电商详情页用预加载商品轮播图,但发现首屏渲染变慢了。用Lighthouse检查发现关键CSS的加载时间被图片占用了,这是为什么? 尝试过这样写: <link rel="preload" hr... 极客清梅 优化 2026-02-19 16:29:24 1 回答 65 浏览 为什么React的CSSTransition在页面切换时动画不连贯? 大家好,我在用React做路由切换动画时遇到问题。用了CSSTransition包裹路由组件,设置进入和离开的CSS类,但切换时动画总是先跳一下再执行过渡效果,这是为什么呢? 我尝试过给容器加fixe... 司空树恺 组件 2026-02-18 12:45:28 2 回答 37 浏览 为什么我的CSS旋转加载动画在页面加载时会突然卡顿一下? 我在做一个简单的旋转加载组件,用CSS3动画实现图标旋转。但每次页面加载时,图标会先显示0.5秒的静态状态,然后才开始旋转。我尝试过把animation-delay设为0和调整will-change属... 司马翌岍 组件 2026-02-16 18:11:24 2 回答 130 浏览 为什么给关键CSS文件添加了preload链接标签后加载速度反而变慢了? 我在优化网站首页加载时,给关键CSS文件加了preload标签:<link rel="preload" href="/styles/main.css">,但监控显示首屏渲染反而比之前慢了0... 上官毅蒙 优化 2026-01-29 18:12:28 2 回答 82 浏览 为什么我的CSS动画在Chrome渲染面板显示大量重排但实际很卡? 我在用Chrome DevTools的Rendering面板调试一个CSS动画,发现Layers里显示有很多蓝色的Layout区域,但实际动画在60帧时偶尔还是会卡顿。我用的是transform和op... 百里艺天 工具 2026-01-27 10:43:27 2 回答 23 浏览 移动端用CSS动画卡顿怎么办? 我在手机上用CSS做了一个简单的滑入动画,但明显感觉卡顿不流畅,试过加transform: translateZ(0)也没啥用,是不是哪里写错了? 这是我的关键代码: .slide-in { anim... 雯婷 移动 2026-03-31 12:43:11
先确认几个点:
第一,你是不是在
animation里漏写了forwards?默认动画结束后会回到初始状态,如果你希望停在最后状态,得加
animation-fill-mode: forwards;第二,检查下你用的浏览器支不支持无前缀关键帧——现在主流浏览器都支持了,但如果你在旧版 Safari 或某些国产浏览器里跑,可能得加
-webkit-前缀第三,最常见坑:你是不是把
@keyframes fadeIn写在了某个媒体查询或者嵌套在别的规则里?比如这样:这种写法是无效的,关键帧必须直接写在根作用域
再给你个完整能跑的最小示例,直接复制试试:
要是还不动,把你的完整 HTML 和 CSS 贴出来,我帮你看看是不是被其他样式覆盖了——比如
pointer-events: none或者display: none之后又改成block,这种也会导致动画不触发