同时播放多个 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);
    }
}

http://jsfiddle.net/Ugc5g/3388/ - 只播放一个动画(最后一个声明)。

原文由 Don P 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

TL;博士

使用逗号,您可以指定多个动画,每个动画都有自己的属性,如下面的 CriticalError 答案所述。

例子:

 animation: rotate 1s, spin 3s;

原始答案

这里有两个问题:

#1

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

第二行替换第一行。所以,没有效果。

#2

两个关键帧都适用于同一个属性 transform

作为替代方案,您可以将图像包装在 <div> 中,并 以不同的速度分别为每个图像设置动画。

http://jsfiddle.net/rnrlabs/x9cu53hp/

 .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>

原文由 rnrneverdies 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

例子:

 animation: rotate 1s, spin 3s;

原文由 critical_error 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题