javascript - 如何通过名称获取动画

标签 javascript html css animation

有没有办法通过名称获取动画样式规则?

我有这个动画:

@keyframes fadein {

    0% {
        opacity: 1;
    }
    37.5% {
        opacity: 1;
    }
    50% {
        opacity: 0;
    }
    87.5% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }

}

我在多个地方都这样使用它:

#MyElement {
    animation: fadein 5s linear 0s infinite;
    pointer-events: none;
}

我想使用 JavaScript 将动画持续时间从 5 秒动态更改为 1 秒。

如果我想在不知道在哪里使用它的情况下更改动画持续时间,我该怎么做?

最佳答案

您可以像这样更改animation-duration:
myElement.style['animation-duration'] = value;

const myAnimatedElements = document.querySelectorAll(`.anim`)

const mySelect = document.querySelector(`select`)

mySelect.addEventListener(`change`, handleSelectChange)

function handleSelectChange(event) {
  const value = event.target.value
  myAnimatedElements.forEach(el => el.style[`animation-duration`] = value)
}
@keyframes fadein {
  0% {
    opacity: 1;
  }
  37.5% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  87.5% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

.anim {
  animation: fadein 5s linear 0s infinite;
  pointer-events: none;
}
<select>
  <option value="5s">5s</option>
  <option value="4s">4s</option>
  <option value="3s">3s</option>
  <option value="2s">2s</option>
  <option value="1s">1s</option>
  <option value="0.5s">0.5s</option>
</select>

<div class="anim">Animated</div>
<div class="anim">Animated</div>
<div class="anim">Animated</div>
<div class="anim">Animated</div>
<div class="anim">Animated</div>
<div class="anim">Animated</div>

关于javascript - 如何通过名称获取动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57340977/

相关文章:

javascript - Vue组件中的递归组件错误

javascript - 如何在 Javascript 中创建包含多个数据的图表

javascript - 如何向 GWT 中的 Web 应用程序添加对插件的支持?

php - 如何将 css 类添加到我的示例 php 代码中

java - 每天不同的iframe

javascript - 如何在 $.ajax 调用中使用变量调用成功函数

php - Html5 视频在缓冲时在 safari 中重复

html - 如何在div中垂直居中元素?

css - 有没有工具可以检查 CSS url 文件是否存在?

javascript - 如何在标记中显示弹出窗口?