javascript - 用 JavaScript 即时结束 CSS 动画

标签 javascript html css css-animations

我有一个分配了 CSS 动画的输入框,所以当页面加载时,它有一个漂亮的淡入动画。

CSS:

#search-box {
    /* ... */
    animation: 2s fade-in
}

@keyframes fade-in {
    from { opacity: 0 }
    to { opacity: 1 }
}

在某些情况下,当页面加载时(当存在 URL 参数时),我希望输入框的 CSS 动画停止并立即将不透明度设置为 1

我试过弄乱 animation-play-state 并尝试用 !important 覆盖不透明度,但没有成功。

Javascript:

let endAnimation = // ... boolean
if (endAnimation) {
    let elem = document.getElementById('search-box');
    // End the animation and set opacity to 1 somehow...
}

HTML:

<input id="search-box">

最佳答案

您可以在单独的类中制作动画,只需删除此类即可停止动画:

let stop = function() {
  let elem = document.getElementById('search-box');
  elem.classList.remove('animate');
}
#search-box {}

.animate {
  animation: 5s fade-in;
}

@keyframes fade-in {
  from {
    opacity: 0
  }
  to {
    opacity: 1
  }
}
<input id="search-box" class="animate">
<button onclick='stop()'>stop!</button>

或者简单地取消设置动画属性:

let stop = function() {
  let elem = document.getElementById('search-box');
  elem.style.animation='unset';
}
#search-box {
  animation: 5s fade-in;
}

@keyframes fade-in {
  from {
    opacity: 0
  }
  to {
    opacity: 1
  }
}
<input id="search-box" class="animate">
<button onclick='stop()'>stop!</button>

关于javascript - 用 JavaScript 即时结束 CSS 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48238542/

相关文章:

javascript - 从另一个 javascript 文件访问 main() 函数

javascript - 按多个值分组 Underscore.JS 但保留键和值

jQuery ScrollPane 不显示 p 标签的滚动条

HTML 表格 td 左边框颜色不随 rowspan 更新

css - 缩放时保持按钮文本外观

javascript - 在事件处理程序中使用它

javascript - 为什么我的 HTML Canvas 不旋转?

javascript - 缩小溢出的内容以适应容器?

javascript - Appcelerator Titanium - session 管理

jquery - 检查 div 是否可见