排序 CSS 关键帧动画不起作用

Sequencing CSS keyframe animations not working

我正在测试几个 CSS 动画的顺序,延迟 属性。它似乎没有用。延迟不匹配。我不确定我可能做错了什么。有人可以帮忙吗?

这是我的密码笔:http://codepen.io/marineb/pen/RramrJ?editors=110。 (此代码笔已使用解决方案 B 更新)。

我正在 Chrome 中对此进行测试。

谢谢!

    .oo {
  width: 100%;
  text-align: center;
  height: 200px;
}

.logo {
  -webkit-animation-name: logo;
  -webkit-animation-duration: .5s;
}

.o--2 {
  background: pink;
  -webkit-animation-name: oo-2;
  -webkit-animation-delay: 3s;
  -webkit-animation-duration: .5s;
}

.o--3 {
  background: yellow;
  -webkit-animation-name: oo-2;
  -webkit-animation-delay: 7s;
  -webkit-animation-duration: .5s;
}

.o--4 {
  background: green;
  -webkit-animation-name: oo-2;
  -webkit-animation-delay: 10s;
  -webkit-animation-duration: .5s;
}

@keyframes logo {
  0% {
    margin-top: 5270px;
  }
  10% {
    margin-top: 5270px;
  }
  100% {
    margin-top: 0;
  }
}

@keyframes oo-2 {
  0% {
    margin-top: 5270px;
  }
  60% {
    margin-top: 5270px;
    opacity: 0;
  }
  100% {
    margin-top: 0;
    opacity: 1;
  }
}

如果我理解您要实现的目标...您希望每个部分都从底部飞入。

你会得到一个奇怪的结果,因为在动画 运行 之前每个部分都没有边距。然后在延迟 运行 结束后立即给它一个很大的边距(它跳下页面),然后动画导致边距缩小。

要达到预期效果,您有两种选择。

A) 在 class 上定义您的边距,以便它以巨大的边距开始。

B) 使用:

-webkit-animation-fill-mode: both;

这有两件事。它使动画开始时的属性(在您的情况下为 0%)在动画开始之前应用,同时延迟仍在倒计时。然后它还使动画结束时的属性 (100%) 在动画结束后保持不变。有关详细信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/CSS/animation-fill-mode

此外,如果您打算让这些部分在大约 60% 标记处淡入,您需要将 opacity:0 添加到 0% 关键帧,或者您需要将其添加到 CSS class。出于与上述相同的原因。