【发布时间】:2016-03-05 18:52:17
【问题描述】:
我试图通过单击一个按钮将动画的几个部分组合在一起。这是一个例子:
.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。
为了解决这个问题,我添加了一个包含样式的新类,这些样式实际上是第一个动画的最终样式的克隆。并且在第二部分完成后,我不得不删除类列表以准备播放第一个动画。
所以我的问题是,有没有更好的方法呢?
我刚刚意识到一个问题:如果我在第一个动画完成之前开始第二个动画,就会出现不连续性(圆圈会突然变大)。
demo可以从上面的链接中找到,谢谢!
【问题讨论】:
-
对于
opacity,这两个动画的设置完全相反,那么如何将两者结合起来呢?问题不清楚。你能向我们展示你正在尝试做什么的演示吗? -
嗨,Harry,我不确定您能否打开链接?非常感谢! codepen.io/q105037696/pen/MyaXpL
-
您是否必须强制使用动画执行此操作?您可以通过像here 所示的转换来实现几乎相同的效果,而代码少得多。
-
呃...这很尴尬,我什至不知道过渡...我刚刚了解它,我认为它确实有帮助。非常感谢!
-
大声笑,完成,再次感谢您的努力!!!
标签: css css-animations