“CSS3”上的动画旋转

时间:2012-06-22 10:33:33

标签: jquery html css

如果我在CSS3中有这个box(根据我的理解,这也不是CSS3,只是特定于浏览器):

HTML

<div id="container">
    <div id="box">&nbsp;</div>
</div>    ​

CSS

#container
{
    padding:100px;
}

#box
{
    width:200px;
    height:200px;
    background-color:red;
}

#box.selected
{
    transform: rotate(30deg);
    -ms-transform: rotate(30deg); /* IE 9 */
    -webkit-transform: rotate(30deg); /* Safari and Chrome */
    -o-transform: rotate(30deg); /* Opera */
    -moz-transform: rotate(30deg); /* Firefox */        
}
​

jQuery(仅用于管理框中的悬停)

$('#box').hover(
    function () {
        $(this).addClass('selected');
    },
    function () {
        $(this).removeClass('selected');
    }
);

如何将动画设置为css旋转?我的意思是,不是一步,而是流畅。因此,动画应该是“有生命的”。希望你理解我的意思:))

4 个答案:

答案 0 :(得分:5)

假设您只想将动画应用于转换,您可以使用CSS3转换,特别是transition-property(定义哪些属性将具有转换)和transition-duration(以指定转换的持续时间)从开始到完成)。还有transition-timing-function,允许您使用以下任何一种转换模式:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(n,n,n,n)

#box
{
    width:200px;
    height:200px;
    background-color:red;
    transition-property: all;
    transition-duration: 0.3s;
    /* Explicit above, can also use shorthand */
    -o-transition: all 0.3s;
    -moz-transition: all 0.3s;
    -webkit-transition: all 0.3s;
    -ms-transition: all 0.3s;
    /* Also shorthand with the easing-function */
    -ms-transition: all 0.3s linear;
}

查看我对你的jsfiddle的修订 - &gt; http://jsfiddle.net/fud4n/9/

答案 1 :(得分:2)

你可以这样使用CSS transitions

-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;

答案 2 :(得分:1)

以下是您要做的事情:

http://jsfiddle.net/fud4n/18/

重要的是要记住你想要动画的元素的类/ id中的原点和过渡属性,而不是表示动画状态的类。

干杯

答案 3 :(得分:0)

使用像这样的CSS3动画:http://jsfiddle.net/fud4n/15/(仅适用于firefox的示例)。这将执行连续旋转,只需根据您的喜好更改持续时间。

#box.selected {    
    -moz-animation-name: rotation;  
    -moz-animation-duration: 2s;  
}

@-moz-keyframes rotation {
    from {  -moz-transform: rotate(0deg);  }      
    to   {  -moz-transform: rotate(30deg);  }
}