我正在尝试设置glyphicon-refresh
图标的动画,以便在我点击图标时它应该旋转。我试图使用CSS3这样做,但它无法正常工作。
这是我的标记:
<a id="update" href="#"><i class="glyphicon glyphicon-refresh"></i></a>
这是我的css:
<style>
.glyphicon-refresh-animate {
animation-name: rotateThis;
animation-duration: .5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes "rotateThis" {
from { transform: scale( 1 ) rotate( 0deg ); }
to { transform: scale( 1 ) rotate( 360deg ); }
}
</style>
这是我的JS:
<script type="text/javascript">
$( document ).ready( function() {
$( "#update" ).on( "click", function( e ) {
var $icon = $( this ).find( ".glyphicon glyphicon-refresh" ),
animateClass = "glyphicon-refresh-animate";
$icon.addClass( animateClass );
// setTimeout is to indicate some async operation
window.setTimeout( function() {
$icon.removeClass( animateClass );
}, 2000 );
});
});
</script>
任何帮助或替代方法都将受到赞赏。
答案 0 :(得分:13)
首先:您的jQuery选择器是错误的:
.glyphicon glyphicon-refresh
必须是
.glyphicon.glyphicon-refresh
第二:您应该为所有animate
属性,keyframes
关键字和transform
属性添加前缀,并附上供应商前缀。 (只有Firefox和IE10 +支持不带前缀。http://caniuse.com/#feat=css-animation)例如Safari和Chrome:
.glyphicon-refresh-animate {
-webkit-animation-name: rotateThis;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
}
@-webkit-keyframes "rotateThis" {
from {
-webkit-transform: rotate( 0deg );
}
to {
-webkit-transform: rotate( 360deg );
}
}
http://jsfiddle.net/DX4AJ/这个小提琴仅适用于Safari和Chrome!