animation-direction: reverse
を使用してCSSキーフレームアニメーションをリファクタリングしようとしています。コンテナdivをクリックすると、jQuery経由でアニメーション(「アクティブ」状態に応じて前方または後方)をトリガーする「アクティブ」クラスが表示されます。順方向アニメーションと逆方向アニメーションは、キーフレームが逆の順序であることを除いてまったく同じものです。私はanimation-direction: reverse
が、ただ一つのアニメーションを使ってそれをリバターすることでリファクタリングすることができると考えましたが、それは私が思ったように動作していません。CSSキーフレームアニメーションで `アニメーション方向:反転 'が機能しないのはなぜですか?
リンク(animation-direction: reverse
を使用せずに)codepenする: https://codepen.io/soultrust/pen/gogKjN
次のマークアップとCSS(サス)コードスニペットは、それが逆せずに機能するようになりました方法です。
<div class="container">
<div class="line"></div>
</div>
$width-height: 100px;
$duration: 1s;
$line-width: 10%;
$animation-distance: $width-height * .45;
@keyframes line-in {
0% { transform: translateY(-$animation-distance); }
50% { transform: translateY(0); }
100% { transform: rotate(-135deg); }
}
@keyframes line-out {
0% { transform: rotate(-135deg); }
50% { transform: translateY(0); }
100% { transform: translateY(-$animation-distance); }
}
.container {
margin: 10rem auto 0;
width: $width-height;
height: $width-height;
position: relative;
border: 1px solid black;
&.active {
.line {
animation-name: line-in;
animation-direction: normal;
}
}
}
.line {
width: 100%;
height: $line-width;
position: absolute;
top: 45%;
background-color: orange;
animation-direction: normal;
animation-name: line-out;
animation-duration: $duration;
animation-fill-mode: forwards;
}
私は、次の "アクティブ" のアニメーションを変更すると、両方向のアニメーションが動作を停止します。
&.active {
.line {
animation-name: line-out;
animation-direction: reverse;
}
}
私はちょうどanimation-direction: reverse
を設定し、animation-name: line-in
を使用している場合、それは正しく逆にラインでアニメーションを果たしているので、それは同じアニメーションを使用してとは何かを持っていると信じています。