一尘不染

同时播放多个CSS动画

css

如何使两个CSS动画 以不同的速度 播放?

  • 图像应同时旋转和增长。
  • 旋转将每2秒循环一次。
  • 生长将每4秒循环一次。

示例代码:

.image {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin:-60px 0 0 -60px;
    -webkit-animation:spin 2s linear infinite;
    -webkit-animation:scale 4s linear infinite;
}

@-webkit-keyframes spin { 
    100% { 
        transform: rotate(180deg);
    } 
}

@-webkit-keyframes scale {
    100% {
         transform: scaleX(2) scaleY(2);
    }
}

仅播放一个动画(声明了最后一个动画)。


阅读 551

收藏
2020-05-16

共1个答案

一尘不染

TL; DR

使用逗号,可以指定多个动画,每个动画都有自己的属性。

例:

animation: rotate 1s, spin 3s;

原始答案

这里有两个问题:

#1

-webkit-animation:spin 2s linear infinite;
-webkit-animation:scale 4s linear infinite;

第二行替换第一行。因此,没有任何效果。

#2

两个关键帧都应用于相同的属性 transform

作为一种替代方法,您可以将图像包裹在中,<div>然后分别 以不同的速度 设置动画

.scaler {

    position: absolute;

    top: 100%;

    left: 50%;

    width: 120px;

    height: 120px;

    margin:-60px 0 0 -60px;

    animation: scale 4s infinite linear;

}



.spinner {

    position: relative;

    top: 150px;

    animation: spin 2s infinite linear;

}





@keyframes spin {

    100% {

        transform: rotate(180deg);

    }

}



@keyframes scale {

    100% {

         transform: scaleX(2) scaleY(2);

    }

}


<div class="spinner">

<img class="scaler" src="http://makeameme.org/media/templates/120/grumpy_cat.jpg" alt="" width="120" height="120">

<div>
2020-05-16