Css 组合多个动画
我试图通过单击按钮将动画的几个部分组合在一起。下面是一个例子:Css 组合多个动画,css,css-animations,Css,Css Animations,我试图通过单击按钮将动画的几个部分组合在一起。下面是一个例子: .element { background-color: black; display: block; width: 160px; height: 160px; border-radius: 80%; } .one { animation: one 1.5s ease 1 forwards; } .two { animation: two 1s forwards; } @keyframes one {
.element {
background-color: black;
display: block;
width: 160px;
height: 160px;
border-radius: 80%;
}
.one {
animation: one 1.5s ease 1 forwards;
}
.two {
animation: two 1s forwards;
}
@keyframes one {
from {
transform: scale(0.25);
opacity: 0;
}
25% {
opacity: 0.5;
}
to {
transform: scale(1);
opacity: 0.5;
}
}
@keyframes two {
from {
opacity: 0.5;
}
to {
opacity: 0;
}
}
我试图将这两种动画结合起来:一种和另一种。我的方法是在单击按钮时使用JS:classList.add('.two')
。但问题是:在我添加类的那一刻,元素的默认不透明度变为1
为了解决这个问题,我添加了一个包含样式的新类,这些样式实际上是第一个动画的最终样式的克隆。在第二部分完成后,我不得不删除课程列表,为第一部动画的播放做准备
所以我的问题是,有没有更好的方法
这是一个
我刚刚意识到了一个问题:如果我在第一个动画完成之前开始第二个动画,就会出现不连续性(圆会突然变大)
演示可以从上面的链接找到,谢谢 我可以组合这两个动画吗? 我假设“组合”是指使用相同的关键帧规则生成正向(单击添加动画)和反向(单击移除动画)动画。这是可能实现的,但正反转动画应该完全相同(但方向相反)。当它相同时,我们可以使用
动画方向:reverse
来实现相同关键帧的反转效果
在这里,正向动画具有变换
更改,而反向动画没有,因此添加动画方向:反向
不会产生与原始片段相同的效果。此外,对其进行编码并不像仅仅添加一个属性那么简单,还需要做很多工作
其他两个问题的原因是什么? 这两个问题的原因(即,单击“删除”按钮时元素立即获得
不透明度:1
,以及单击“删除”按钮时元素在正向动画仍在进行时获得完整大小)是相同的。移除元素上的动画(通过移除类)时,它会立即捕捉到动画外部指定的大小
对于第一种情况,大小是在.element
下提到的大小(因为.one
被删除),其不透明度
默认为1,因为其中没有不透明度
设置。对于第二种情况,当删除.one
并添加.two
时,动画将被删除,因此元素的大小与.element
中指定的相同,不透明度与.two
中指定的相同(因为这在CSS文件中稍后)
那么备选方案还有什么?
如果同时需要正向和反向效果,并且动画没有任何中间状态(即,只有开始状态和结束状态),则最好使用过渡而不是动画。原因是,在移除类时,变换会自动产生反转效果(与动画不同,在动画中,反转动画需要作为单独的关键帧编写并添加到元素)
下面是一个示例代码段,演示了如何仅使用一个类而无需编写关键帧即可实现类似效果
var theBut=document.getElementById('butt');
var theBut2=document.getElementById('butt2');
theBut.addEventListener('click',函数a(){
document.querySelector('.element').classList.add('one');
});
but2.addEventListener('click',函数b(){
document.querySelector('.element').classList.remove('one');
});代码>
.element{
背景色:#d91e57;
显示:块;
宽度:160px;
高度:160px;
边界半径:90%;
变换:比例(0.25);
不透明度:0;
过渡:不透明度2s,变换1s 2s;
}
.一{
变换:比例(1);
不透明度:0.5;
过渡:所有2;
}
添加动画
删除动画
我可以合并这两个动画吗?
我假设“组合”是指使用相同的关键帧规则生成正向(单击添加动画)和反向(单击移除动画)动画。这是可能实现的,但正反转动画应该完全相同(但方向相反)。当它相同时,我们可以使用动画方向:reverse
来实现相同关键帧的反转效果
在这里,正向动画具有变换
更改,而反向动画没有,因此添加动画方向:反向
不会产生与原始片段相同的效果。此外,对其进行编码并不像仅仅添加一个属性那么简单,还需要做很多工作
其他两个问题的原因是什么?
这两个问题的原因(即,单击“删除”按钮时元素立即获得不透明度:1
,以及单击“删除”按钮时元素在正向动画仍在进行时获得完整大小)是相同的。移除元素上的动画(通过移除类)时,它会立即捕捉到动画外部指定的大小
对于第一种情况,大小是在.element
下提到的大小(因为.one
被删除),其不透明度
默认为1,因为其中没有不透明度
设置。对于第二种情况,当删除.one
并添加.two
时,动画将被删除,因此元素的大小与.element
中指定的相同,不透明度与.two
中指定的相同(因为这在CSS文件中稍后)
那么备选方案还有什么?
当同时需要正向和反向效果时