Article Blog / Article

CSSのanimationとkeyframeで画像をふわっと切り替える方法

  • HTML/CSS
Date 2021.04.12 Author 宮野 聡美

Marble//Blog//Article

Scroll
CSSのanimationとkeyframeで画像をふわっと切り替える方法

こんにちは、satomiです。
フロントエンドエンジニアとしてMARBLEで働いています!

私はWeb制作会社でデザイナー兼コーダーをしていた経験はあるのですが、
ブランクがあり、CSSのanimationは使ったことがありませんでした。
今回サイトで使用するにあたり、苦戦したので、記録として残していきたいと思います!

まず、デモを確認されたいかたは以下ページをご覧ください。

デモページを確認する

やりたいこと

・画像を拡大させながらふわっと切り替える(スライドショー)

苦労したところ

・表示する秒数に対するkeyframeの0%〜100%の指定タイミング
・2枚目の画像を開始するタイミング

に悩みました。

完成したコードと動き

HTML

<div class="img-box">
  <div class="img1"></div>
  <div class="img2"></div>
</div>

CSS

.img-box {
    position: relative;
    width: 100%;
    height: 500px;
    overflow: hidden;
}
.img1, .img2 {
    width: 100%;
    height: 500px;
    position: absolute;
    top: 0;
    background: center center no-repeat;
    animation: anime 10s 0s infinite;
    z-index: 0;
    opacity: 0;
}
.img1 {
    background-image: url(https://picsum.photos/id/1013/1100/500);
}
.img2 {
    background-image: url(https://picsum.photos/id/1051/1100/500);
    animation-delay: 5s;
}

@keyframes anime {
    0% {
        opacity: 1;
    }
    50% {
        opacity: 1;
    }
    60% {
        opacity: 0;
        transform: scale(1.2);
        z-index: 10;
}
    100% {
        opacity: 0;
        transform: scale(1.2);
    }
}

デモページを確認する

解説

CSSのanimationとkeyframeで画像をふわっと切り替える方法の説明画像(1枚目)

トータル10秒間で2枚の画像をスライドさせるので、
1枚目の画像を1〜5秒まで表示、2枚目の画像が開始する5秒目から透明にします。
また、透明になるタイミングでz-indexで2枚目の画像の上に来るよう指定します。

animationの指定

1枚目と2枚目の画像に指定
animation: anime 10s 0s infinite;
z-index: 0;
opacity: 0;

2枚目の画像に指定
animation-delay: 5s; ※5秒後に開始

keyframeの指定

@keyframes anime {
  0% { //開始
    opacity: 1;
  }
  50% { //5秒目の指定
    opacity: 1;
  }
  60% {  //6秒目の指定
    opacity: 0;
    transform: scale(1.2) ;
    z-index: 10;
  }
  100%{ //終了
    opacity: 0;
    transform: scale(1.2) ;
  }
}

開始から画像が透明になるまで拡大させつつ、
2枚目の画像が表示される5秒目から透明にしてふわっと切り替わるようにしています。

まとめ

たったのこれだけのことですが、指定したい秒数が何%になるのか、
消え始めるタイミングと次の画像を開始するタイミングを合わせるということに苦労しました。

これ以外も色々な動きを身につけていきたいと思います!

RRelated

関連記事

Adobe XDデザインを見てCSS設計を決めるときに考えていることのイメージ

Adobe XDデザインを見てCSS設計を決めるときに考えていること

Adobe XDのデザインデータを見てからCSS設計を決める際に、普段確認しているポイントをまとめました。コーディング前に意識して...

  • HTML/CSS
Adobe XDデータを受け取ったら最初に確認していることのイメージ

Adobe XDデータを受け取ったら最初に確認していること

Adobe XDデータを受け取ったあと、コーディング前に確認しているポイントを実務目線で整理。アートボードサイズやフォント、余白...

  • HTML/CSS
Adobe XDでコピーしたSVGを実装しやすく整理した話のイメージ

Adobe XDでコピーしたSVGを実装しやすく整理した話

Adobe XDからコピーしたSVGをそのまま使った際に感じた違和感をきっかけに、Illustratorで整えてから実装する方法へ移行した体験...

  • HTML/CSS