【发布时间】:2023-12-28 06:09:01
【问题描述】:
我想将 2 个 css 动画“串联”在一起。 第一个在页面加载时播放,是一个 css 动画,可以将立方体旋转一些角度。作为第二个动画,我想在用户按下按钮时进一步旋转该立方体(将类添加到立方体 onclick)。
问题是立方体 div 已经从第一个动画中获得了一个旋转语句,所以当我添加类(其中包含一个变换:旋转)时,它不会动画到新的旋转,而是跳到新的旋转度数立即。尽管我使用过渡。
我尝试使用添加的类('.rotate-further')禁用动画,这样它不会中断第二次旋转,但没有帮助
div {
width: 20px;
height: 20px;
background: blue;
animation: rotate 1s forwards;
}
.rotate-further {
transform: rotate(150deg);
animation: none;
}
@keyframes rotate {
0% {
-webkit-transform:rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(120deg);
transform:rotate(120deg);
}
}
我想要的结果是,例如,当您使用“transition: all .5s”时,第二次旋转会像平常一样进行动画处理。
window.setTimeout(function() {
document.querySelector('div').classList.add('rotate-further');
}, 1500)
div {
width: 20px;
height: 20px;
background: blue;
animation: rotate 1s forwards;
}
.rotate-further {
transform: rotate(150deg);
animation: none;
}
@keyframes rotate {
0% {
-webkit-transform: rotate(0);
transform: rotate(0);
}
100% {
-webkit-transform: rotate(120deg);
transform: rotate(120deg);
}
}
<div></div>
【问题讨论】:
-
transform:rotate(x) 在你调用类时被重置。也没有过渡。您可以使用从 120deg 到 150deg 开始的另一个动画。动画时长也可以是0s ....
标签: css css-transitions css-animations keyframe