css动画只能第一次使用

时间:2016-09-30 11:26:03

标签: css animation

以下代码将淡入淡出元素。当淡出时,它会"删除"通过使它没有大小的元素。

以下代码的工作原理是我第一次将类名show-loading添加到具有类loading的现有元素。此外,当我删除课程show-loading时,在我添加课程名称hide-loading的同时,它可以正常工作。

然而,第二次以及之后每次都没有渲染此动画。相反,它会直接跳转到动画中的最后一帧,使其可见或不可见,具体取决于是否指定了showhide。所以最终结果是正确的,但不是动画部分..

每次设置类时,如何让动画参与其中?例如。删除元素并添加一个新的重置以保存已保存的状态......?

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;
  }
}

1 个答案:

答案 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;
}