以下代码将淡入淡出元素。当淡出时,它会"删除"通过使它没有大小的元素。
以下代码的工作原理是我第一次将类名show-loading
添加到具有类loading
的现有元素。此外,当我删除课程show-loading
时,在我添加课程名称hide-loading
的同时,它可以正常工作。
然而,第二次以及之后每次都没有渲染此动画。相反,它会直接跳转到动画中的最后一帧,使其可见或不可见,具体取决于是否指定了show
或hide
。所以最终结果是正确的,但不是动画部分..
每次设置类时,如何让动画参与其中?例如。删除元素并添加一个新的重置以保存已保存的状态......?
HTML
<div class="loading"></div>
CSS
.loading
{
overflow: hidden;
position: fixed;
background: #fff;
z-index: 9999;
user-select: none;
}
.loading.show-loading
{
animation: loading-fade .4s 1 linear both;
}
.loading.hide-loading
{
animation: loading-fade .4s 1 linear both;
animation-direction: reverse;
}
@keyframes loading-fade
{
0%
{
opacity: 0;
top: auto;
right: auto;
bottom: auto;
left: auto;
}
1%
{
top: 0;
right: 0;
bottom: 0;
left: 0;
}
100%
{
opacity: 1;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
}
答案 0 :(得分:3)
这方面的一个技巧是使用相同的动画两次但名称不同。
查看THIS小提琴。
这是一个已知但意外的行为,您可以通过“删除”当前动画,然后应用另一个动画(即使它具有相同的结构)来获得所需的效果 - 这就是我使用两个@keyframe动画的原因。
.loading.show-loading {
animation: loading-fade 1s 1 linear both;
}
.loading.hide-loading {
animation: loading-fade-backwards 1s 1 linear both;
animation-direction: reverse;
}