5つの■を以下のルールでバラバラに表示させ、バラバラに消えるようなアニーメーションを作ろうとしています。
- 各■を1秒ごとに順に表示させる
- すべてが表示された2秒後、各■が1秒ごとに順に消えていく
- すべてが消えた2秒後、またこの一連のアニメーションをループさせる
■■■■■(現れる順序 1・3・5・2・4)
■■■■■(消える順序 5・4・3・2・1)
この時、各■は
・表示させるタイミング
・表示されている時間
・消えるタイング
・消えている時間
がそれぞれ異なってきます。
まず、CSSで各■のopacityを0とし、keyframeで以下の2つの動きを作りました。
css
1.box { 2 opacity: 0; 3} 4 5@keyframes fadeIn { 6 0% { opacity: 0;} 7 100% { opacity: 1;} 8} 9@keyframes fadeOut { 10 0% { opacity: 1;} 11 100% { opacity: 0;} 12}
1つ目に表示させる■は、以下のようなタイムラインになるのですが、
- 1秒後に表示
- その後、残り4つの■が表示されるまで[4秒]
- 5つの■が全て表示させるので[2秒]
- 順に■が1秒ごとに消えていく(この■は5番目に消えるので[4秒])
=この■が表示されるまで[1秒]、そこから消えるまでの時間は[10秒]なので、以下のように書いて希望通りの動きはできました。
css
1.box01 { 2 animation: fadeIn .1s 1s forwards, fadeOut .1s 10s forwards; 3}
ここまでは出来たのですが、次にまたこの一連のアニメーションを繰り返す際に、どのようにループさせればいいのか分かりません。
infiniteを使うことで、個々のkeyframeをループさせることは出来るのですが、fadeInとfadeOutが同時に繰り返されてしまいました。
これを交互に繰り返す方法などはあるのでしょうか?
どなかた教えていただけると幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/12 12:57
2022/08/12 13:11 編集
2022/08/18 23:56