animation-play-state - 播放状态
控制动画的播放和暂停
语法说明
animation-play-state: running | paused;
running- 动画正在运行(默认值)paused- 动画已暂停- 常用于创建可交互的动画效果
示例 1:悬停暂停动画
鼠标悬停在旋转的圆圈上,动画会暂停
悬停我暂停
/* 定义旋转动画 */
.spinner {
animation: spin 1s linear infinite;
}
/* 悬停时暂停动画 */
.spinner:hover {
animation-play-state: paused;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
示例 2:按钮控制动画
点击按钮控制动画的播放和暂停
/* CSS */
.box {
animation: moveAround 3s ease-in-out infinite;
}
.box.paused {
animation-play-state: paused;
}
/* JavaScript */
function pauseAnimation() {
box.classList.add('paused');
}
function playAnimation() {
box.classList.remove('paused');
}
示例 3:暂停多个动画
一个元素可以有多个动画,暂停时会同时暂停所有动画
旋转 + 脉冲
悬停暂停
/* 多个动画 */
.box {
animation:
rotate360 2s linear infinite,
pulse 1.5s ease-in-out infinite;
}
/* 悬停时暂停所有动画 */
.box:hover {
animation-play-state: paused;
}
💡 重要说明:
- 暂停位置:动画会在当前位置暂停,不会重置
- 多个动画:如果元素有多个动画,会同时暂停/播放所有动画
-
常见用法:悬停暂停
:hover { animation-play-state: paused; },或通过 JavaScript 添加/移除类名控制
💡 重要说明:
- 暂停位置:动画会在当前位置暂停,不会重置
- 多个动画:如果元素有多个动画,会同时暂停/播放所有动画
-
常见用法:悬停暂停
:hover { animation-play-state: paused; },或通过 JavaScript 添加/移除类名控制
常见应用场景
完整示例
/* 轮播图自动播放 */
.carousel {
animation: slide 10s ease-in-out infinite;
}
/* 悬停时暂停 */
.carousel:hover {
animation-play-state: paused;
}
/* 尊重用户的动画偏好 */
@media (prefers-reduced-motion: reduce) {
.carousel {
animation-play-state: paused;
}
}