我有一个动画div,我为2个属性right:100px
和bottom:80px
制作动画。
喜欢这个;
.demo{
background: url(http://www.clipartbest.com/cliparts/dT7/eoj/dT7eojnT9.jpeg) no-repeat;
height: 100px;
width:90px;
animation: smileDog 3s ease-in-out infinite;
position: absolute;
background-size:100%
}
@keyframes smileDog{
from{right:0px;bottom: 0px;}
to{right:100px;bottom: 80px;}
}
现在我的问题是,我可以在一个关键帧中管理动画时序吗?我的意思是right:100px
应该以3s移动,bottom:80px
移动10s。这两个动作应该同时开始和发生,但持续时间不同。 有可能吗?
如果不然,我该怎么做?
答案 0 :(得分:1)
您需要2个关键帧:
.demo{
background: url(http://www.clipartbest.com/cliparts/dT7/eoj/dT7eojnT9.jpeg) no-repeat;
height: 100px;
width:90px;
animation: smileDogRight 3s ease-in-out infinite,
smileDogBottom 10s ease-in-out infinite;
position: absolute;
background-size:100%
}
@keyframes smileDogRight{
from{right:0px;}
to{right:100px;}
}
@keyframes smileDogBottom{
from{bottom: 0px;}
to{bottom: 80px;}
}
答案 1 :(得分:1)
是的,通过执行以下操作,只需一个animation
即可完成此操作:
animation-duration
更改为10s
(这是两个动画效果的最大值)。from
和to
关键帧规则。例如,如果right: 0px
到right: 100px
需要在3秒内发生,则表示动画持续时间为30%
。因此,在30%
指定right: 100px
,但不为bottom
指定任何内容。100%
(这只是10s
),bottom:0px
到bottom: 80px
的完整动画效果也必须完成。因此,对于该关键帧规则,请指定right: 100px
和bottom: 80px
。bottom
到3s
之间有任意移动,但如果您希望它在3s
内完全移动30%的完整移动,则添加bottom: 24px
30%
关键帧规则中的(80px的30%)。.demo{
background: url(http://www.clipartbest.com/cliparts/dT7/eoj/dT7eojnT9.jpeg) no-repeat;
height: 100px;
width:90px;
animation: smileDog 10s ease-in-out infinite;
position: absolute;
background-size:100%
}
@keyframes smileDog{
0%{right:0px;bottom: 0px;}
30%{right:100px;}
100%{right:100px;bottom: 80px;}
}
Demo - 演示使用-webkit-
前缀。
Demo 2 - 对于第4点中提到的替代方法。