检查元素是否有css动画
Check if element has css animation
我有一个脚本,当css3动画触发jQuery中的AnimationEnd
时删除一个元素。问题是,这些动画被绑定到一个外部的css文件,可能不包括。
现在我称之为。
$element.one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(event) {
$(this).remove();
});
但是,如果元素没有动画,因为浏览器不支持它,或者动画文件不包括在内,我仍然需要删除元素。如何检查是否调用了
我已经试过了,但是它似乎没有改变值为true。
var hasAnimation = false;
$element.one('webkitAnimationStart oanimationstart msAnimationStart animationstart', function(event) {
hasAnimation = true;
});
if (!hasAnimation) {
$element.remove();
}
你在动画开始前检查hasAnimation
,因为你没有放弃你的'时间片'。(这是错误的术语,但我认为"时间片"只是描述了正在发生的事情)
我想没有Javascript实现是-抢占-多线程的,至少不是在脚本级别。所以如果你循环,你就循环,别的什么都不发生。
想象一下将函数放到队列中这样的事件,这些事件一个接一个地被触发/调用。表现好。因此,如果您想知道这样一个事件的结果,您必须结束当前函数(调用它放弃时间片)。现在活动开始了——现在是唯一的一次。
因此,如果您将cleanup_if_no_animation( hasAnimation )
与setTimeout(0)
排队,那么只要StartAnimation
不是由setTimeout
本身触发,您就会放弃,并在(可选的开始事件)之后重新开始
同样的情况,如果你想计数到1000并把它放入div中,你必须在步骤之间使用setTimeout(0)来更新显示。
就像下面这个例子
function bad_loop() {
for (i = 1; i < 100; ++i) {
$('#out').text(i)
} }
function good_loop(i = 1) {
$('#out').text(i)
if (i<50) setTimeout(good_loop,0,i+1) }
相关文章:
- 如何使用css动画/javascript使具有背景图像的元素出现
- 如何使用css动画从中心增加边界线
- 点击CSS动画
- 只在滚动时播放循环css动画-滚动停止时停止
- CSS动画暂停并使用javascript播放
- 使用javascript可以设置css动画的当前百分比
- 使用Jquery和'的CSS动画;.css'
- CSS动画背景图像的过渡越来越暗
- 单击css动画后丢失的事件
- CSS动画-显示和隐藏面板
- 更改javascript中的css动画
- Css动画-setTimeout没有't应用打断动画的更改
- firefox中的CSS动画不起作用
- 如何只有点击时才有CSS动画,而不是页面加载
- css动画和jquery.load()在移动设备上断断续续
- 如何在 CSS 动画遇到屏幕边缘时停止它
- CSS 动画将恢复为原始状态
- 通过javascript触发CSS动画
- CSS 动画在元素隐藏时暂停
- CSS 动画中的非动画帧序列