javascript - 如何从JS触发CSS动画?

标签 javascript css css-animations

我有一个气球,当它悬停时,它会膨胀并消失(类似弹出的动画)。我用 CSS 做了这个,但是当光标移动时,气球又回来了。我希望气球永远消失,直到我刷新页面,所以我猜它需要 onclick,但该选择器在 CSS 中不可用。

这是我在 CSS 中的内容

@keyframes pop
{
    from{
        opacity:1;
        transform: translateZ(0) scale(1,1);
    }

    to{
        opacity:0;
        transform: translateZ(0) scale(1.5,1.5);
    }
}

.balloon:hover
{
    animation: pop 0.5s cubic-bezier(0.16, 0.87, 0.48, 0.99) forwards;
}

我看到另一个问题说最接近的是 :active 但它需要按住鼠标。如果我想让它成为 onclick,我需要使用 Javascript。但我不知道需要写什么来触发动画。

是否也可以做到当我弹出 1 个气球时,所有其他气球也会自动弹出,中间有 1 秒的延迟? (有 5 个气球)。

最佳答案

您可以使用 classList 通过 JS 添加和删除动画的类。

添加:

object.classList.add('balloon');

删除:

object.classList.remove('balloon');

工作示例:

const add = () => {
  document.getElementById('balloon').classList.add('animation')
}

const remove = () => {
  document.getElementById('balloon').classList.remove('animation')
}
@keyframes pop {
  from {
    opacity: 1;
    transform: translateZ(0) scale(1, 1);
  }
  to {
    opacity: 0;
    transform: translateZ(0) scale(1.5, 1.5);
  }
}

.animation {
  animation: pop 0.5s cubic-bezier(0.16, 0.87, 0.48, 0.99) forwards;
}

.balloon {
  height: 125px;
  width: 110px;
  background-color: #FF6B6B;
  border-radius: 50%;
}

.controls{
  position: absolute;
  bottom: 10px;
  right: 10px;
}
<div id="balloon" class="balloon" onmouseover="add()"></div>
<div class="controls">
  <button onClick="add()">Hide</button>
  <button onClick="remove()">Show</button>
</div>

关于javascript - 如何从JS触发CSS动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61170262/

相关文章:

html - 鼠标悬停时弹出的按钮的 css 样式存在问题

javascript - 在 JavaScript 中动态创建 JSON 对象

javascript - 如何在 Javascript 字符串中使用括号

javascript - 使用 javascript/Jquery 动态创建一个 Div

javascript - 如何使用 Jquery 对货币进行四舍五入

jquery - Nth-child 应用于每个按钮

javascript - 从 `before` 伪元素中获取 ComputedStyle

html - 六边形的CSS3动画气泡效果

html - 您如何打开/关闭网站上的视网膜图像以检查差异?

javascript - 在 CSS3 翻译动画后获取元素的新位置?