質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

解決済

CSSアニメーションで要素をフェードイン、フェードアウトさせる際の設定方法について

waon
waon

総合スコア17

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

1回答

-1評価

0クリップ

178閲覧

投稿2022/08/12 09:12

5つの■を以下のルールでバラバラに表示させ、バラバラに消えるようなアニーメーションを作ろうとしています。

  1. 各■を1秒ごとに順に表示させる
  2. すべてが表示された2秒後、各■が1秒ごとに順に消えていく
  3. すべてが消えた2秒後、またこの一連のアニメーションをループさせる

■■■■■(現れる順序 1・3・5・2・4)
■■■■■(消える順序 5・4・3・2・1)

この時、各■は

・表示させるタイミング
・表示されている時間
・消えるタイング
・消えている時間

がそれぞれ異なってきます。

まず、CSSで各■のopacityを0とし、keyframeで以下の2つの動きを作りました。

css

.box { opacity: 0; } @keyframes fadeIn { 0% { opacity: 0;} 100% { opacity: 1;} } @keyframes fadeOut { 0% { opacity: 1;} 100% { opacity: 0;} }

1つ目に表示させる■は、以下のようなタイムラインになるのですが、

  • 1秒後に表示
  • その後、残り4つの■が表示されるまで[4秒]
  • 5つの■が全て表示させるので[2秒]
  • 順に■が1秒ごとに消えていく(この■は5番目に消えるので[4秒])

=この■が表示されるまで[1秒]、そこから消えるまでの時間は[10秒]なので、以下のように書いて希望通りの動きはできました。

css

.box01 { animation: fadeIn .1s 1s forwards, fadeOut .1s 10s forwards; }

ここまでは出来たのですが、次にまたこの一連のアニメーションを繰り返す際に、どのようにループさせればいいのか分かりません。
infiniteを使うことで、個々のkeyframeをループさせることは出来るのですが、fadeInとfadeOutが同時に繰り返されてしまいました。
これを交互に繰り返す方法などはあるのでしょうか?

どなかた教えていただけると幸いです。
よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。