css3变换图像的旋转

时间:2014-05-06 10:40:08

标签: css3 animation rotation

我想在点击图像时将图像旋转180度。然后在随后的点击中将相同的图像再旋转180度(完成旋转)。

我使用了第一部分:

.img_rotator_180 { 
-webkit-transform: rotate(180deg); 
-moz-transform: rotate(180deg); 
-o-transform: rotate(180deg);
-ms-transform: rotate(180deg); 
}
.img_rotator_360 { 
-webkit-transform: rotate(180deg); 
-moz-transform: rotate(180deg); 
-o-transform: rotate(180deg);
-ms-transform: rotate(180deg); 
}
.img_rotator_transition {
  -webkit-transition: all 1s ease-out;  /* Chrome 1-25, Safari 3.2+ */
     -moz-transition: all 1s ease-out;  /* Firefox 4-15 */
       -o-transition: all 1s ease-out;  /* Opera 10.50–12.00 */
          transition: all 1s ease-out;  /* Chrome 26, Firefox 16+, IE 10+, Opera 12.50+
}

$('div.' + this.id + ' img').addClass('img_rotator_180 img_rotator_transition');

替代版本:

$('div.' + this.id + ' img').addClass('img_rotator_180 img_rotator_transition');

这会导致图像初始旋转不被记住,这意味着第二次旋转有效地重做180度旋转。

在应用进一步转换之前,有没有办法建立图像当前旋转?或者也许是一种附加轮换而不是替换它的方法?

谢谢

1 个答案:

答案 0 :(得分:1)

Demo Fiddle

HTML

<div>Click Me!</div>

的jQuery

$('div').on('click', function () {
    if ($(this).hasClass('spinIn')) {
        $(this).addClass('spinOut').removeClass('spinIn');
    } else {
        $(this).addClass('spinIn').removeClass('spinOut');
    }
});

CSS

div {
    display:inline-block;
}
.spinIn {
    -webkit-animation: spinIn 0.6s 1 linear;
    animation: spinIn 0.6s 1 linear;
    -webkit-animation-fill-mode:forwards;
    animation-fill-mode:forwards;
}
@-webkit-keyframes spinIn {
    0% {
        -webkit-transform: rotate(0deg);
    }
    100% {
        -webkit-transform: rotate(180deg);
    }
}
@keyframes spinIn {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(180deg);
    }
}
.spinOut {
    -webkit-animation: spinOut 0.6s 1 linear;
    animation: spinOut 0.6s 1 linear;
    -webkit-animation-fill-mode:forwards;
    animation-fill-mode:forwards;
}
@-webkit-keyframes spinOut {
    0% {
        -webkit-transform: rotate(180deg);
    }
    100% {
        -webkit-transform: rotate(360deg);
    }
}
@keyframes spinOut {
    0% {
        transform: rotate(180deg);
    }
    100% {
        transform: rotate(360deg);
    }
}