【发布时间】:2017-01-13 12:07:14
【问题描述】:
在下面的示例中,我正在使用 CSS 进行 background-color 转换,并尝试为两个 div 处理 transitionend 事件。
很遗憾,transitionend 不会为 div2 触发,因为初始和最终背景颜色相同:
var div1 = $('#div1');
var div2 = $('#div2');
$('#toggle').on('click', function() {
div1.toggleClass('toggled');
div2.toggleClass('toggled');
})
div1.on('transitionend', function() {
console.log('div1 transitionend')
})
div2.on('transitionend', function() {
console.log('div2 transitionend')
})
div {
width: 100px;
height: 100px;
transition: background-color .5s;
}
#div1 {
background-color: red;
}
#div2 {
background-color: green;
}
.toggled {
background-color: green !important;
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<div id="div1"></div>
<div id="div2"></div>
<button id="toggle">Toggle animation</button>
即使在初始状态和最终状态相同的情况下,如何处理transitionend?
【问题讨论】:
-
如果我没记错的话,只有当值不同时才会触发转换。因此,如果转换本身没有发生,那么我认为不会触发该事件。
-
对规格有任何参考吗?我找不到与我的问题相关的任何内容
-
不,这更像是我期望浏览器工作的方式。当没有任何东西可以转换时启动一个转换事件是一种矫枉过正的做法。我认为规范不会为何时开始过渡定义任何内容,他们会将其留给实施,但我会为您检查:)
标签: javascript css dom-events css-transitions transitionend