如何在 CSS 转换期间阻止在事件循环中处理其他消息
How to block processing other messages in event loop during a CSS transition?
下面是一个例子:
document.getElementById("myDiv").addEventListener("mouseover", function() {
setTimeout(function() {
console.log(1)
}, 1)
})
div {
transition: all 2s;
position: fixed;
top: 10px
}
div:hover {
top: 100px;
}
<div id="myDiv">123</div>
我想做的是先显示一个CSS动画。当该动画完成后,运行一个 javascript 函数function() {console.log(1)}
.但是,当我运行此代码片段时,我发现function() {console.log(1)}
在动画结束之前执行。
这是否意味着 CSS 过渡独立于消息队列(事件循环)。有没有人对如何在消息队列(事件循环)中阻止其他处理消息直到 CSS 转换完成的想法?
我知道如果要注册新的回调,transitionend
可以工作,但是如果消息队列中已经setTimeout
注册了一些回调怎么办。我不知道如何暂时阻止它们。
您可以使用 transitionend 事件,但请注意,当输入鼠标和离开鼠标时,它将触发
var div = document.getElementById("myDiv");
div.addEventListener("transitionend", function() {
console.log(1)
})
div {
transition: all 2s;
position: fixed;
top: 10px
}
div:hover {
top: 100px;
}
<div id="myDiv">123</div>
相关文章:
- 如何在for循环中添加事件侦听器
- 注册OpenLayers事件时,即使使用匿名函数或绑定,JavaScript关闭也会触发循环内的所有内容
- 在循环中附加事件处理程序时出现浏览器性能问题
- 如何使用for循环添加所有按钮'单击事件
- 事件循环、回调队列和 Javascript 的单线程是如何连接的
- JavaScript运行时事件循环现有技术
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- jQuery触发器事件在一个循环中多次出现
- 单击中每个循环的事件多次激发
- 使用javascript点击事件的循环引用
- jQuery:如何在没有for循环的情况下将事件处理程序应用于$('#text'+'任意整数
- 基于事件在循环中隐藏元素
- 关于动态元素中循环中的事件
- 页面卸载期间的JavaScript事件循环
- 当从jquery的点击事件中的每个循环创建的数组到它之外时,它显示空白数组
- Node.js阻止事件循环
- 循环(事件)中的闭包问题
- 在FullCalendar插件上创建一个循环事件
- Jquery对话框循环事件
- 如何使用angular引导日历为循环事件提供dtStart和until