2017-12-19 14 views
0

前のCSS @keyframeアニメーションを上書きしたい。 まず、単語が右側から来て、中央にとどまります。 ボタンをクリックするとすぐに、同じ単語が現在の位置から上に移動するようにアニメートされます。CSSキーフレームの位置を無効にする

しかし、単語は全く動かず、単にその位置に素早くジャンプします。 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%の位置を記載する必要があります – sSD

答えて

2

slide-out-topには、以下のスタイルを追加する必要があります。

0% { 
    top: 0px; 
    } 

ここにはupdated fiddleがあります。

+0

ありがとうございます!私はこれが必要であるとは思わなかった?それが何であるかの説明/ソース? –

+1

アニメーションには、開始点と終了点が必要です。あなたは100%で何が起こるべきかだけを提供したので、それは飛び降りていました。 – sSD

+0

前のアニメーションで開始点が「転送」で指定されていませんか? –

関連する問題