CSS3旋转动画


244
<img class="image" src="" alt="" width="120" height="120">

无法使该动画图像正常工作,它应该进行360度旋转。

我猜下面的CSS有点问题,因为它保持静止。

.image {
    float: left;
    margin: 0 auto;
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin-top: -60px;
    margin-left: -60px;

    -webkit-animation-name: spin;
    -webkit-animation-duration: 4000ms;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;

    -moz-animation-name: spin;
    -moz-animation-duration: 4000ms;
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: linear;

    -ms-animation-name: spin;
    -ms-animation-duration: 4000ms;
    -ms-animation-iteration-count: infinite;
    -ms-animation-timing-function: linear;

    animation-name: spin;
    animation-duration: 4000ms;
    animation-iteration-count: infinite;
    animation-timing-function: linear;

    @-ms-keyframes spin { 
        from { 
            -ms-transform: rotate(0deg); 
        } to { 
            -ms-transform: rotate(360deg); 
        }
    }
    @-moz-keyframes spin { 
        from { 
            -moz-transform: rotate(0deg); 
        } to { 
            -moz-transform: rotate(360deg); 
        }
    }
    @-webkit-keyframes spin { 
        from { 
            -webkit-transform: rotate(0deg); 
        } to { 
            -webkit-transform: rotate(360deg); 
        }
    }
    @keyframes spin { 
        from { 
            transform: rotate(0deg); 
        } to { 
            transform: rotate(360deg); 
        }
    }
}

Answers:


520

这是一个演示。正确的动画CSS:

.image {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin:-60px 0 0 -60px;
    -webkit-animation:spin 4s linear infinite;
    -moz-animation:spin 4s linear infinite;
    animation:spin 4s linear infinite;
}
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
<img class="image" src="http://i.stack.imgur.com/pC1Tv.jpg" alt="" width="120" height="120">


有关代码的一些注意事项:

  1. 您已将关键帧嵌套在.image规则中,这是不正确的
  2. float:left 不适用于绝对定位的元素
  3. 看看caniuse:IE10不需要-ms-前缀

12
如果有人尝试使用自己的代码尝试此操作:不要在底部找到@部分
Jack M.13年

您好,我可以在5秒后停止动画无限旋转吗?
MD Ashik '16

16
运行动画时,我几乎吐水了。
Razgriz

float:left won't work on absolutely positioned elements”,尽管如此,它将缩小到最小尺寸,类似于显示内容:inline-block进行
gregn3

32

我有一个旋转的图像,使用与您相同的内容:

.knoop1 img{
    position:absolute;
    width:114px;
    height:114px;
    top:400px;
    margin:0 auto;
    margin-left:-195px;
    z-index:0;

    -webkit-transition-duration: 0.8s;
    -moz-transition-duration: 0.8s;
    -o-transition-duration: 0.8s;
    transition-duration: 0.8s;

    -webkit-transition-property: -webkit-transform;
    -moz-transition-property: -moz-transform;
    -o-transition-property: -o-transform;
     transition-property: transform;

     overflow:hidden;
}

.knoop1:hover img{
    -webkit-transform:rotate(360deg);
    -moz-transform:rotate(360deg); 
    -o-transform:rotate(360deg);
}

1
添加:transform:rotate(360deg);对于IE
Dusty 2014年

3
请在断开的网站链接上选择本地示例。
evolutionxbox

现在链接已断开。
马库斯·布彻

30

为了实现360度旋转,这是工作解决方案

HTML:

<img class="image" src="your-image.png">

CSS:

.image {
    overflow: hidden;
    transition-duration: 0.8s;
    transition-property: transform;
}
.image:hover {
    transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
}

您必须将鼠标悬停在图像上,然后才能获得360度旋转效果。

PS:添加了一个-webkit-扩展,使其可以在chrome和其他Webkit浏览器上使用。您可以在此处检查Webkit的更新小提琴


小提琴不起作用oO Chrome检查器不喜欢您的CSS,特别是“ transform”和“ transition-property”。噢亲爱的。
只是普通高

1
为此,您需要添加一个-webkit-tranform使其正常工作。这是更新的小提琴。jsfiddle.net/sELBM/172-@JustPlainHigh
Nitesh

1
2017年:现在已很好地支持此方法,并且是进行无限旋转的首选方法。-webkit-前缀不再需要,可以安全地删除。浏览器支持:caniuse.com/#search=transforms
Alph.Dev

2

如果您想翻转图像,可以使用它。

.image{
    width: 100%;
    -webkit-animation:spin 3s linear infinite;
    -moz-animation:spin 3s linear infinite;
    animation:spin 3s linear infinite;
}
@-moz-keyframes spin { 50% { -moz-transform: rotateY(90deg); } }
@-webkit-keyframes spin { 50% { -webkit-transform: rotateY(90deg); } }
@keyframes spin { 50% { -webkit-transform: rotateY(90deg); transform:rotateY(90deg); } }

0

.image {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin:-60px 0 0 -60px;
    -webkit-animation:spin 4s linear infinite;
    -moz-animation:spin 4s linear infinite;
    animation:spin 4s linear infinite;
}
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } }
<img class="image" src="http://i.stack.imgur.com/pC1Tv.jpg" alt="" width="120" height="120">


0

试试这个简单

 
 .btn-circle span {
     top: 0;
   
      position: absolute;
     font-size: 18px;
       text-align: center;
    text-decoration: none;
      -webkit-animation:spin 4s linear infinite;
    -moz-animation:spin 4s linear infinite;
    animation:spin 4s linear infinite;
}

.btn-circle span :hover {
 color :silver;
}


/* rotate 360 key for refresh btn */
@-moz-keyframes spin { 100% { -moz-transform: rotate(360deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(360deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(360deg); transform:rotate(360deg); } } 
 <button type="button" class="btn btn-success btn-circle" ><span class="glyphicon">&#x21bb;</span></button>


-6

在这里这应该对你有帮助

下面的jsfiddle链接将帮助您了解如何旋转图像。我使用相同的图像旋转时钟的刻度盘。

http://jsfiddle.net/xw89p/

var rotation = function (){
   $("#image").rotate({
      angle:0, 
      animateTo:360, 
      callback: rotation,
      easing: function (x,t,b,c,d){       
          return c*(t/d)+b;
      }
   });
}
rotation();

其中:•t:当前时间,

•b:begInnIng值,

•c:价值变动,

•d:持续时间,

•x:未使用

不放松(线性放松):function(x,t,b,c,d){return b +(t / d)* c; }


2
如果您提供更多信息(如您在小提琴中所做的那样),我会赞成这个答案。我也觉得您应该提到这是一个jQuery插件,因为我当时都想,“我不知道jQuery可以做到这一点!!! ^ _ ^ 看着小提琴哦,等等... U_U”
Just Plain High

2
x,t,b,c,d变量的解释(就像您在小提琴中所做的那样),并清楚地说明,尽管这不是OP所要求的CSS解决方案,但它是一个非常简单有效的jQuery插件解决方案: )
Just Plain

3
不赞成投票。OP并没有要求使用Javascript解决方案,尤其是没有jQuery插件。坚持要求什么。
TheCarver
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.