单击动画Glyphicon

时间:2014-03-19 10:18:07

标签: javascript jquery css twitter-bootstrap css3

我正在尝试设置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>

任何帮助或替代方法都将受到赞赏。

1 个答案:

答案 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!