3

如果我在 CSS3 中有这个(据我所知,这不是 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

4 回答 4

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 的修订 -> http://jsfiddle.net/fud4n/9/

于 2012-06-22T10:36:27.297 回答
2

您可以像这样使用CSS 过渡

-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;
于 2012-06-22T10:37:24.970 回答
1

这是您要执行的操作:

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

重要的是要记住,要设置动画的元素的类/id 中的 origin 和 transition 属性,而不是表示动画状态的类。

干杯

于 2012-06-22T10:50:10.737 回答
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);  }
}  
于 2012-06-22T10:50:01.123 回答