javascript - Wow.js 不会在不同的时间间隔为一个元素使用两个类
问题描述
我有一个图像元素,我想在其上应用两个动画类,一个在到达时,一个在某个固定时间。
例如,到达时我想要一个淡入淡出效果。所以我这样做:
img.classList.add("wow");
img.classList.add("fadeIn");
一段时间后,我再次想在同一张图像上添加心跳效果。所以我尝试了这样的事情:
setTimeout(function () {
img.classList.remove("fadeIn");
img.classList.add("heartBeat");
},3000);
这不起作用,并且看不到心跳效果。
笔记:
另一方面,如果我最初没有为图像设置淡入淡出效果,那么图像会在 3000 毫秒后获得心跳效果。
因此,像这样的独立代码运行良好。
setTimeout(function () {
img.classList.add("heartBeat");
},3000);
我无法弄清楚这个问题的原因。
解决方案
callback
您可以使用 WOW 实例中 的函数。
根据wow.js 文档,每次启动动画时都会触发它,并且“传入的参数是正在动画的 DOM 节点”(box
但在这种情况下,我直接使用img
变量)。
因此,当它被触发时,我们可以立即删除.fadeIn
该类,这不会影响动画,因为它是在 JavaScript 中内联添加的。此外,在 3 秒后,我们移除样式属性(导致“淡入”动画)并添加.heartBeat
将触发下一个心跳动画的类。
img.classList.add("wow");
img.classList.add("fadeIn");
new WOW({
callback: function(box) {
img.classList.remove("fadeIn");
setTimeout(function () {
img.removeAttribute("style");
img.classList.add("heartBeat");
},3000);
}
}).init();
推荐阅读
- printing - 斑马标签 zpl 没有完全显示在物理但是虚拟打印中
- discord.py - 在 cogs 中找不到命令
- php - 为什么只匹配记录中的第一个单词?
- python - Transform all list arguments of all functions?
- machine-learning - How to use Drake with deep reinforcement learning
- r - R-Markdown中数字向量的均匀间距
- c++ - 加载图像但没有存储在其数组中(C++,stbi_load)
- arrays - 为什么我不能使用 redux 从 Reactjs 中的数组中删除元素
- swift - 使用 SwiftUI 在 iPad 上纵向停靠侧边栏
- kubernetes - Kubernetes 运营商