是因为CSS动画默认只会在元素第一次加载时播放一次,之后需要重新触发才能再次播放。这是因为CSS动画的播放状态是由CSS样式控制的,而JS触发的动画只是改变了元素的CSS样式,而不会改变CSS动画的播放状态。
要实现每次点击都能播放CSS动画,可以通过JS动态添加CSS类来触发动画。具体步骤如下:
@keyframes myAnimation {
/* 定义动画的关键帧 */
}
.myAnimationClass {
animation: myAnimation 1s; /* 指定动画名称和持续时间 */
}
<div id="myElement" class="myAnimationClass"></div>
var element = document.getElementById("myElement");
element.addEventListener("click", function() {
element.classList.remove("myAnimationClass"); // 先移除CSS类
void element.offsetWidth; // 强制浏览器重新计算样式,以便重新触发动画
element.classList.add("myAnimationClass"); // 再添加CSS类,触发动画
});
这样,每次点击元素时,都会先移除CSS类,然后重新添加CSS类,从而触发CSS动画播放。
推荐的腾讯云相关产品:腾讯云云服务器(CVM),产品介绍链接地址:https://cloud.tencent.com/product/cvm
领取专属 10元无门槛券
手把手带您无忧上云