我对 transitionend 事件看似随机的行为完全感到困惑。我正在尝试使用 CSS3 创建类似新闻提示器的功能。我已将出错代码的核心放在jsFiddle中。这是用于测试的 HTML:
<div class="container">
<div class="el" id="el1">Text 1</div>
<div class="el" id="el2">Text 2</div>
<div class="el" id="el3">Text 3</div>
</div>
元素都绝对定位在彼此相邻的水平线上。现在我想将它们向左滑动,直到第一个项目消失。然后我可以删除第一项并继续翻译其余的 div。
var moveEm = function() {
var elements = $(".el");
var firstEl = $(".el").first();
firstEl.on("webkitTransitionEnd oTransitionEnd otransitionend transitionend msTransitionEnd", function(e){
$(".el").first().remove();
$(".el").each(function() {
$(this).css("left", $(this).position().left);
$(this).css({ transform: "none", transition: "none"});
});
moveEm();
});
elements.css({ transform: "translate(-100px,0px)", transition: "all 500ms linear"});
};
moveEm();
然而,transitionend 通常会触发第一个项目(如预期的那样),但也会立即触发第二个(有时是第三个)!试试 jsFiddle 代码,看看有时会发生,有时不会。
有谁知道是什么导致了这种行为?
PS它似乎有时在Safari中发生,总是在Chrome中,几乎从不在Firefox中......