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

问题描述 投票:0回答:1

我想覆盖以前的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>

是什么导致了这个问题或者我错过了什么?

javascript html css css-animations
1个回答
2
投票

您需要在slide-out-top中添加以下样式。

0% {
    top: 0px;
  }

这是updated fiddle

© www.soinside.com 2019 - 2024. All rights reserved.