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

CSSで実装する!画像を左へ大きくフェードアウトさせるアニメーション効果

CSSを使えば、JavaScriptのライブラリなどを追加しなくても、画像や要素にさまざまなアニメーション効果を簡単に実装できます。ここでは、要素を画面の左側へ大きく移動させながらフェードアウトさせる「fadeOutLeftBig」アニメーションの作り方を、実際に動作するサンプルコードとともに解説します。

サンプルコード

以下のコードでは、背景画像としてロゴを表示したdiv要素に対し、10秒かけて左方向へ2000px移動しながら、透明度を0まで下げるアニメーションを適用しています。「Reload page」ボタンをクリックするとページが再読み込みされ、アニメーションを何度でも確認できます。

<html>
    <head>
       <style>

          .animated {
            background-image: url(/css/images/logo.png);
            background-repeat: no-repeat;
            background-position: left top;
            padding-top:95px;
            margin-bottom:60px;
            -webkit-animation-duration: 10s;
            animation-duration: 10s;
            -webkit-animation-fill-mode: both;
            animation-fill-mode: both;
        }

        @-webkit-keyframes fadeOutLeftBig {
          0% {
             opacity: 1;
             -webkit-transform: translateX(0);
          }
          100% {
             opacity: 0;
             -webkit-transform: translateX(-2000px);
          }
        }

        @keyframes fadeOutLeftBig {
          0% {
             opacity: 1;
             transform: translateX(0);
          }
          100% {
             opacity: 0;
             transform: translateX(-2000px);
          }
        }

        .fadeOutLeftBig {
          -webkit-animation-name: fadeOutLeftBig;
          animation-name: fadeOutLeftBig;
        }
      </style>

    </head>
    <body>

       <div id="animated-example" class="animated fadeOutLeftBig"></div>
       <button onclick="myFunction()">Reload page</button>

       <script>
          function myFunction() {
            location.reload();
          }
       </script>
    </body>
</html>

コードのポイント

1. @keyframesでアニメーションの動きを定義

@keyframesルール「fadeOutLeftBig」では、開始時点(0%)でopacityを1・translateX(0)に設定し、終了時点(100%)でopacityを0・translateX(-2000px)に設定しています。これにより、要素が完全に不透明な状態から徐々に透明になりながら、画面の左側へ大きくスライドして消えていく動きが生まれます。

2. ベンダープレフィックスでブラウザ互換性を確保

-webkit-keyframesや-webkit-transformといったWebKit系ブラウザ向けのプレフィックス付きプロパティも併せて記述することで、古いバージョンのSafariやChromeでも同じアニメーションが動作します。近年のモダンブラウザでは標準の@keyframesだけで十分ですが、幅広い環境をサポートしたい場合は両方記述しておくと安心です。

3. アニメーションの速度と終了後の状態を制御

animation-duration: 10s;でアニメーション完了までの時間を10秒に設定しています。また、animation-fill-mode: both;を指定することで、アニメーション終了後も最終状態(要素が非表示のまま)が維持されます。クラス.fadeOutLeftBigにanimation-nameを指定し、HTML側で対象要素にこのクラスを付与すれば、ページ読み込み時に自動的にアニメーションが再生されます。

  1. CSSでrotateOutDownLeft(左下回転退場)アニメーション効果を作成する方法

    CSSの rotateOutDownLeft(左下回転退場)アニメーションは、要素が左下を基準点として回転しながら画面から消えていくエフェクトです。transform-origin で回転の軸を要素の左下隅に設定し、90度の回転と同時に opacity を0へ変化させることで、滑らかにフェードアウトする動きを実現できます。 実装のポイント transform-origin: left bottom — 回転の基準点を要素の左下に指定します。 @keyframes — アニメーションの開始時(0%)と終了時(100%)の状態を定義します。 animation-fill-mode: both —

  2. CSSで左上方向へ回転して消えるアニメーション(rotateOutUpLeft)を作る方法

    CSSのrotateOutUpLeftは、要素が左下を軸として反時計回りに回転しながら画面外へ消えていくアニメーション効果です。@keyframesで回転角度と不透明度(opacity)の変化を定義し、animation-nameを使って対象の要素に適用します。 実装例 以下のコードでは、ロゴ画像が10秒かけて左下を基点に-90度回転しながらフェードアウトしていきます。「Reload page」ボタンをクリックするとページが再読み込みされ、アニメーションを何度でも確認できます。 <html> <head> <style> .animated { bac