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

CSS点击动画异常:鼠标按下仅短时播放,如何实现完整动画?

问题:点击div时动画仅播放0.1秒,需按住鼠标才能看完整动画

现有代码

CSS(Sass语法)

.part{
  &:active{
    animation: bounce 0.7s 1 linear;
  }
}

@keyframes bounce {
50% {
  transform: rotate(5deg) translate(20px, -50px);
}
to {
  transform: scale(0.9) rotate(10deg) translate(50px, -280px);
  opacity: 0;
}
}

HTML结构

<a href="[$_productLink]" class="" title="Bag">
      <div class="part">
         <i class="fas fa-shopping-bag"></i>
      </div>
 </a>

问题原因

:active伪类仅在鼠标按住不放时生效,一旦松开鼠标,元素脱离:active状态,动画会立即终止,无法完整播放。

修复方案

方法1:JavaScript控制动画类(推荐)

通过添加自定义类触发动画,确保动画不受鼠标状态影响,完整播放。

  1. 调整CSS,将动画绑定到自定义类:
.part{
  // 移除原:active的动画绑定
}

.part.play-bounce {
  animation: bounce 0.7s 1 linear forwards;
  // forwards属性让动画结束后停在最后一帧
}

@keyframes bounce {
50% {
  transform: rotate(5deg) translate(20px, -50px);
}
to {
  transform: scale(0.9) rotate(10deg) translate(50px, -280px);
  opacity: 0;
}
}
  1. 添加JS点击事件,触发动画并处理重复点击:
const partElement = document.querySelector('.part');

partElement.addEventListener('click', function() {
  // 先移除类名,避免连续点击时动画不触发
  this.classList.remove('play-bounce');
  // 强制重绘,确保类名重新添加能触发动画
  void this.offsetWidth;
  this.classList.add('play-bounce');
});

// 可选:动画结束后自动移除类名,方便下次点击
partElement.addEventListener('animationend', function() {
  this.classList.remove('play-bounce');
});

方法2:纯CSS方案(局限性较大)

通过:focus配合tabindex实现,但存在焦点残留问题:

  1. 修改HTML,给.part添加tabindex使其可获取焦点:
<a href="[$_productLink]" class="" title="Bag">
      <div class="part" tabindex="0">
         <i class="fas fa-shopping-bag"></i>
      </div>
 </a>
  1. 调整CSS,同时绑定:active和:focus:
.part{
  &:active,
  &:focus{
    animation: bounce 0.7s 1 linear forwards;
    outline: none; // 去除默认焦点边框
  }
}

@keyframes bounce {
50% {
  transform: rotate(5deg) translate(20px, -50px);
}
to {
  transform: scale(0.9) rotate(10deg) translate(50px, -280px);
  opacity: 0;
}
}

注意:此方案下元素会保持焦点状态,再次点击可能无法重新触发动画,且键盘操作也会触发动画,体验不如JS方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:45:39