You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS动画与过渡样式层叠优先级异常问题咨询

CSS过渡未覆盖动画的问题解析与修复

问题根源

你提到的MDN层叠顺序里“过渡样式优先级高于动画”的表述容易产生误解——这里的“过渡样式”指的是过渡触发后生成的临时中间计算值,但CSS动画是持续主动逐帧更新属性值的,它会不断覆盖过渡的插值结果,导致过渡无法正常完成。哪怕你给hover状态的transform加上!important,动画的关键帧仍会在每帧强制更新transform属性,相当于持续打断过渡的插值过程,最终表现为动画优先、过渡失效。

修复方案

要让过渡正常生效,核心是在hover时暂停动画,避免它持续干扰transform属性的过渡过程:

修正后的代码

div {
  width      : 200px;
  height     : 200px;
  background : red;
  animation  : rota 2s linear forwards infinite;
  transition : transform 40s linear;
}
div:hover {
  background : green;
  transform  : translateX(1000px);
  animation-play-state: paused; /* 暂停动画,让过渡顺利执行 */
}
@keyframes rota {
  100% { transform: rotateZ(360deg); }
}
<div></div>

效果说明

当鼠标悬停时:

  • 动画被暂停,不再更新transform属性
  • 元素的transform会从动画暂停时的旋转状态,平滑过渡到translateX(1000px)的状态,符合预期
  • 背景色同步变为绿色

内容的提问来源于stack exchange,提问作者Eldar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:20:07