webkit动画完成后是否有回调?见example
@-webkit-keyframes "blink" {
0% { opacity: 1; }
100% { opacity: 0; }
}
.animate {
background: #000;
height: 100px;
width: 100px;
opacity: 0;
-webkit-animation-direction: normal;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: 1;
-webkit-animation-name: blink;
-webkit-animation-timing-function: ease;
}
$("div").bind("webkitTransitionEnd", function() {
alert(1);
}).addClass("animate");
但是这个回调不起作用
答案 0 :(得分:2)
这样可以解决问题:
element.addEventListener('webkitAnimationEnd', function(event) { });
在firefox中,该事件被称为“animationend”,但是一些webkit浏览器会监听这两个。相反,如果你使用jquery你可以做的是使用
$element.on('webkitAnimationEnd animationend' , function(event){ });
更新
我最近使用.one('webkitAnimationEnd animationend')
进行了一次小事故,因为两个事件都是以chrome方式收听的,但一次只有一个被触发,同一个函数会在两个单独的动画结束事件中触发两次。
相反,一个小技巧可能是使用类似于此的函数:
getTransitionEndEvent : function(){
switch(this._currentBrowser){
case enums.Browser.SAFARI:
case enums.Browser.CHROME:
return "webkitTransitionEnd";
case enums.Browser.FIREFOX:
return "transitionend";
default:
console.log("unknown browser agent for transition end event");
return "";
}
}
并根据需要添加更多供应商特定的前缀。
为了识别浏览器我真的可以推荐这个:
How to detect Safari, Chrome, IE, Firefox and Opera browser?