使用 animation-play-state 属性可控制 CSS 动画暂停,其值为 running 或 paused,默认为 running;通过 JavaScript 切换添加 paused 类或利用 :hover 伪类,即可实现动画的暂停与恢复,无需重设关键帧或动画时间。

要实现 CSS 动画的暂停,可以通过 animation-play-state 属性来控制动画的运行与暂停。这个属性允许你在不改变其他动画设置的情况下,动态地暂停或恢复动画。
animation-play-state 基本用法
该属性有两个常用值:
- running:动画正常播放
- paused:动画暂停
默认状态下,动画是 running 状态。你可以通过 CSS 类切换来控制状态。
通过类切换控制暂停
例如,你有一个持续旋转的元素:
立即学习“前端免费学习笔记(深入)”;
@keyframes spin {from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.animated-element {
animation: spin 2s linear infinite;
}
.paused {
animation-play-state: paused;
}
在 HTML 中:
通过 JavaScript 添加或移除 .paused 类即可控制暂停:
const element = document.querySelector('.animated-element');element.classList.add('paused'); // 暂停动画
element.classList.remove('paused'); // 继续动画
鼠标悬停暂停动画
常见需求是鼠标悬停时暂停动画,可以直接用 :hover 伪类:
.animated-element:hover {animation-play-state: paused;
}
这样用户将鼠标移到元素上时,动画就会暂停,移开后自动继续(前提是 animation 没有被中断)。
基本上就这些,使用 animation-play-state: paused 是最直接、高效控制 CSS 动画暂停的方式,无需重置时间或修改关键帧。










