覆盖CSS关键帧的位置不起作用

时间:2017-12-19 11:44:23

标签: javascript html css css-animations

我想覆盖以前的CSS @keyframe动画。 首先,这个词从右边进来并保持在中间。 一旦你点击按钮,同一个单词应该被动画化,从它的当前位置移动到顶部。

然而,这个词根本没有动,或者只是快速跳到那个位置。

这是一个小提琴:https://jsfiddle.net/vpfd672g/10/

<button type="button" class="test-button">Click Me!</button>
<div id="window">
  <div class="container">
    <div class="word">Hello</div>
  </div>
</div>

#window {
  overflow: hidden;
}

.container {
  text-align: center;
  position: absolute;
  width: 221px;
  height: 50px;
  margin: auto;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  font-family: helvetica;
  font-size: 20px;
  z-index: 10;
}

.word {
  position: relative;
  animation: slide-in-right 2s ease-out forwards;
  animation-delay: 0s;
  opacity: 0;
}

@keyframes slide-in-right {
  0% {
    right: -100px;
  }
  100% {
    right: 0px;
    opacity: 1;
  }
}

@keyframes slide-out-top {
  100% {
    top: -100px;
    opacity: 0;
  }
}

<script>
let word = document.querySelector(".word");
let tstB = document.querySelector(".test-button");

tstB.addEventListener('click', doStuff);

function doStuff() {
  word.style.opacity = 1;
  word.style.animation = "slide-out-top 2s forwards ease-out"
}
</script>

造成这个问题的原因是什么,或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

您需要将以下样式添加到slide-out-top

0% {
    top: 0px;
  }

这是updated fiddle