HTML
<div></div>
CSS
div:before {
content: "";
display: block;
width: 100px;
height: 100px;
background-color: #000;
}
div.skew:before {
-webkit-animation: skew 1s linear;
-moz-animation: skew 1s linear;
animation: skew 1s linear;
}
@-webkit-keyframes skew {
0% { -webkit-transform: skew(0deg); }
100% { -webkit-transform: skew(50deg); }
}
@-moz-keyframes skew {
0% { -moz-transform: skew(0deg); }
100% { -moz-transform: skew(50deg); }
}
@keyframes skew {
0% { -webkit-transform: skew(0deg); transform: skew(0deg); }
100% { -webkit-transform: skew(50deg); transform: skew(50deg); }
}
jQuery(添加.skew
类以div
在悬停时触发动画)
$("div").bind("animationend webkitAnimationEnd oAnimationEnd", function(){
$(this).removeClass("skew");
});
$("div").mouseenter(function(){
$(this).addClass("skew");
});
请参阅此处(Internet Explorer 10) http://jsfiddle.net/uDddG/
在 Chrome 和 Firefox 中运行良好,但在 IE10 中,动画只能在 :before 或 :after 伪元素上触发一次。我认为这可能是一个问题animationend
,但它在非伪元素上运行良好。这里有什么问题?
- -编辑 - -
我认为问题可能与上面的 jQuery 有关,而不是在悬停 div 时使用 jQuery 添加 .skew 类,我尝试div:hover:before
了而不是,div.skew:before
并且动画可以在悬停时随时触发。看到这个:http: //jsfiddle.net/yaBwa/。
但是我需要动画完成,以防 div 在它仍在播放时变得悬停,所以使用:hover
而不是.mouseenter
添加 .skew 类来触发动画不是一种选择。