How to animate multiple CSS transform properties separately using keyframe animation(如何使用关键帧动画分别为多个CSS变换属性设置动画)
问题描述
我想使用如下所示的关键帧动画分别为两个(或多个)CSS变换属性设置动画:
@keyframes translatex {
100% {
transform: translateX(100px);
}
}
@keyframes rotatez {
100% {
transform: rotateZ(80deg);
}
}
HTML:
<div class="rect"></div>
translatex
动画应以0延迟开始,持续5秒。rotatez
动画应以1s延迟开始,持续3秒。.rect
元素开始移动,1秒后开始旋转,3秒后停止旋转,1秒后结束移动。
应用动画:
.rect {
animation-name: translatex, rotatez;
animation-duration: 5s, 3s;
animation-timing-function: ease, ease-in-out;
animation-delay: 0s, 1s;
animation-direction: forward, forward;
}
问题是只应用rotatez
动画。
是否有仅使用CSS实现动画的方法,如关键帧动画或过渡,或者我是否需要使用JavaScript和requestAnimationFrame
?
推荐答案
是的,这是可能的。不调用两个动画名称,而是只创建一个包含两个动作的动画:
@keyframes translateXandZ {
100% {
transform: translateX(100px) rotateZ(80deg);
}
}
查看Google的Animate your HTML5演示文稿。
以下是一个解决方法,尽管它是一个有点粗糙的版本:
@-webkit-keyframes translateXandZ {
0% {-webkit-transform: translateX(0px) rotateZ(0deg);}
2% {-webkit-transform: translateX(1px) rotateZ(0deg);}
5% {-webkit-transform: translateX(3px) rotateZ(0deg);}
20% {-webkit-transform: translateX(20px) rotateZ(0deg);}
80% {-webkit-transform: translateX(80px) rotateZ(80deg);}
95% {-webkit-transform: translateX(97px) rotateZ(80deg);}
98% {-webkit-transform: translateX(99px) rotateZ(80deg);}
100% {-webkit-transform: translateX(100px) rotateZ(80deg);}
}
您的动画是线性的,但为了使其缓进缓出,我播放了动画的开头和结尾。这仍然不是完美的,但这是我看到你如何才能得到你想要的唯一方法。
这篇关于如何使用关键帧动画分别为多个CSS变换属性设置动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何使用关键帧动画分别为多个CSS变换属性设置动画


基础教程推荐
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 响应更改 div 大小保持纵横比 2022-01-01
- 动态更新多个选择框 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 在for循环中使用setTimeout 2022-01-01