CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSでbackground-sizeプロパティをアニメーションさせる方法

CSSでは、background-sizeプロパティもアニメーションの対象にすることができます。@keyframesルールの中でbackground-sizeの値を変化させることで、背景画像のサイズが滑らかに拡大・縮小するアニメーションを実現できます。

実装のポイント

アニメーションを実装する際は、以下の手順を踏みます。

  • 対象の要素にanimationプロパティを設定し、アニメーション名・ duration(継続時間)・繰り返し回数を指定します。
  • @keyframes内で、進行度(例:20%)ごとにbackground-sizeの値を定義します。
  • background-positionbackground-colorなども同時にアニメーションさせることが可能です。

サンプルコード

以下のコードでは、3秒間のアニメーションを無限に繰り返し、背景画像のサイズが50pxから90pxへと変化します。あわせて背景色と背景位置も変化する例になっています。

<!DOCTYPE html>
<html>
   <head>
      <style>
         div {
            width: 500px;
            height: 400px;
            background: yellow;
            background-image: url('https://www.tutorialspoint.com/latest/microservice_architecture.png');
            animation: myanim 3s infinite;
            background-position: bottom left;
            background-size: 50px;
         }
         @keyframes myanim {
            20% {
               background-color: maroon;
               background-position: bottom right;
               background-size: 90px;
            }
         }
      </style>
   </head>
   <body>
      <div></div>
   </body>
</html>

コードの解説

div要素には初期状態としてbackground-size: 50px;が設定されており、アニメーション開始から20%の時点(約0.6秒後)で90pxまで拡大します。その後、残りの時間で元のサイズへ戻りながらアニメーションがループします。

infiniteを指定しているため、このアニメーションはページが表示されている間ずっと繰り返されます。動きを1回だけにしたい場合は、infinite1などの数値に変更してください。

なお、background-sizeのアニメーションは主要なモダンブラウザ(Chrome、Firefox、Safari、Edgeなど)でサポートされています。

  1. CSSでz-indexプロパティをアニメーションさせる方法

    CSSでは、z-indexプロパティもアニメーションの対象にできます。@keyframesルールの中でz-indexの値を段階的に変化させることで、要素の重なり順序を時間の経過とともに動的に変更できます。以下のコードを実行して、その動作を確認してみましょう。サンプルコード<!DOCTYPE html> <html>    <head>       <style>         

  2. CSSのwidthプロパティをアニメーション化する方法

    CSSで要素の width(幅)プロパティをアニメーションさせるには、@keyframes ルールと animation プロパティを組み合わせて使用します。幅の変化を滑らかに表現することで、開閉パネルやホバーエフェクトなど、さまざまなインタラクティブな演出が可能になります。実装のポイント@keyframes 内で、アニメーションの途中経過(例:30%)における幅の値を指定します。animation プロパティで、キーフレーム名・再生時間などを設定します。幅は数値(px など)で指定するため、ブラウザは値の補間を行い滑らかなアニメーションを実現します。サンプルコード以下のコードでは、div要素