問題

4
CSSアニメーション

画像切り替えアニメーションを作ろう

CSSで画像切り替えアニメーションは、複数の画像を順番に表示・非表示することで実現される表現です。
どのように実装されているのか疑問に思ったことはありませんか?
この問題ではCSSを使った画像切り替えアニメーションの基本的な仕組みを学習します。
流れを理解することでスライドショーのような表現を実装できるようになります。

CSSアニメーションの問題に挑戦しよう!

問題

画像切り替えアニメーションを作ろう

CSSを使って画像が順番に切り替わるアニメーションを実装してみましょう。

複数の画像が自動で切り替わるように設定し、
見本の動きに近づくように調整してください。

画像切り替えアニメーションの仕組みを理解することが目的です。

あらかじめエディタに書くコード

                    <div class="box">
  <div class="img img1"></div>
  <div class="img img2"></div>
  <div class="img img3"></div>
</div>
¥HTML¥
                
                    .box{
  width: 300px;
  height: 200px;
  border: 10px solid sienna;
  position: relative;
}
.img{
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  width: inherit;
  height: inherit;
  background-size: cover;
  background-repeat: no-repeat;
}
.img1{
  background-image: url(https://ninjacode.work/assets/img/top/logo.png);
}
.img2{
  background-image: url(https://ninjacode.work/assets/img/top/logo_red.png);
}
.img3{
  background-image: url(https://ninjacode.work/assets/img/top/logo_blue.png);
}
@keyframes bgAnimation {
  0% {}
  3% {}
  30% {}
  33% {}
  100% {}
}
¥CSS¥
                

期待する画面

解答と解説(画像切り替えアニメーションを作ろう)

解説

LINE登録して解答を見る

※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます

画像切り替えアニメーションは、複数の要素を重ねて配置し、それぞれに時間差でアニメーションを適用することで実現できます。
基本的には position: absolute を使って画像を同じ位置に重ね、opacity(透明度)を制御することで表示・非表示を切り替えます。

今回のような自動切り替えでは、@keyframesを使って「表示される時間」と「非表示になる時間」を割合(%)で定義します。
例えば、ある一定の割合まではopacity:1で表示し、その後opacity:0にすることでフェードアウトさせます。

さらに、複数の画像に対して animation-delay を設定することで、それぞれのアニメーション開始タイミングをずらすことができます。
これにより、順番に画像が切り替わるように見せることができます。

重要なのは「1つのアニメーションをずらして使う」という考え方です。
これにより、JavaScriptを使わなくてもCSSだけでスライドショーのような表現が可能になります。

アニメーション時間やdelayの調整によって見え方が大きく変わるため、試行錯誤しながら理解を深めましょう。

補足

opacity は「不透明度」を表すCSSプロパティで、0で完全に透明、1で完全に表示されます。
今回は position: absolute を使って複数の画像を同じ位置に重ね、animation-delay で表示タイミングをずらすことで画像切り替えアニメーションを実現しています。
全体のアニメーション時間を画像枚数で割り、均等に時間配分するのがポイントです。
この考え方を使えば、スライドショーのような表現もCSSのみで実装できます。

・hoverで画像を切り替える方法も学びたい方:hoverで画像を変えよう
・スライダーをCSSだけで作りたい方:CSSで自動切替スライダー
・ふわっと出現するアニメーションも試したい方:ふわっと出現するアニメーションを作ろう

ポイント

CSSで画像切り替えアニメーションを作ろう

画像切り替えアニメーションは、CSSで複数の画像を順番に表示・非表示することで実現するアニメーションです。
基本的にはposition: absoluteで画像を重ね、opacityを使って表示状態を切り替えます。

@keyframesでは表示時間と非表示時間を%で制御し、アニメーションの流れを作ります。
さらにanimation-delayを使って各画像の開始タイミングをずらすことで、順番に画像が切り替わる動きを実現できます。

このように「同じアニメーションをずらして使う」という考え方がポイントで、JavaScriptを使わずにCSSだけでスライドショーのような画像切り替えアニメーションを実装できます。

さらにスキルアップしたい方は公式LINEから「CSSアニメーション」と送信すると動画が見れます。

LINE登録して動画を視聴する
あなたに合った学習プランは?LINE適正コース診断はこちら