当动画结束时,如何从html对象更改或删除css类?我希望在动画结束时删除div ...
.loginAnimado
{
width:100px;
height:100px;
background:#F2F2F2;
position:relative;
-webkit-animation:mymove 1s 1; /* Safari and Chrome */
}
@-webkit-keyframes mymove /* Safari and Chrome */
{
from
{
}
to
{
opacity: 0.0;
-webkit-transform: scale(2) rotate(0deg) translate(0px, 0px) skew(0deg, 0deg);
display:none;
}
}
答案 0 :(得分:6)
动画内容事件 区分大小写,因浏览器而异。官方规范都是小写的,尽管各种浏览器前缀的实现也各不相同。
Mozilla: mozAnimationEnd
Webkit: webkitAnimationEnd
Opera: oanimationend
IE: MSAnimationEnd
W3C: animationend
请参阅此jsfiddle获取live example。
答案 1 :(得分:3)
你需要Javascript,使用jQuery更容易......
$(document).ready(function(){
$('.loginAnimado').bind("webkitAnimationEnd mozAnimationEnd msAnimationEnd oAnimationEnd animationEnd", function(){
$(this).removeClass('loginAnimado');
});
});
答案 2 :(得分:1)
目前已接受的答案会针对Chrome中的动画触发两次(当jQuery 1.7的首选方法现在为.bind
时,它也会使用.on
)。大概是因为它识别webkitAnimationEnd
以及animationEnd
。以下肯定只会触发一次:
/* From Modernizr */
function whichTransitionEvent(){
var el = document.createElement('fakeelement');
var transitions = {
'animation':'animationend',
'OAnimation':'oAnimationEnd',
'MSAnimation':'MSAnimationEnd',
'WebkitAnimation':'webkitAnimationEnd'
};
for(var t in transitions){
if( transitions.hasOwnProperty(t) && el.style[t] !== undefined ){
return transitions[t];
}
}
}
$("#elementToListenTo")
.on(whichTransitionEvent(),
function(e){
// What you want to do here
$('.loginAnimado').removeClass('loginAnimado');
$(this).off(e);
});