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

CSSで実装する左からフェードインするアニメーション効果の作り方

CSSを使えば、JavaScriptに頼ることなく、画像や要素を左側からスッとフェードインさせるアニメーション効果を簡単に実装できます。この効果は、@keyframesで透明度(opacity)と水平方向の移動(transform: translateX())を組み合わせることで実現します。

アニメーションの仕組み

左からフェードインするアニメーションは、次の2つのCSSプロパティを時間の経過とともに変化させることで実現します。

  • opacity:開始時点(0%)では「0」で完全に透明な状態からスタートし、終了時点(100%)で「1」になって完全に表示されます。
  • transform: translateX(-20px):開始時に要素を左へ20pxずらし、終了時には元の位置(0)へスライドして戻ります。

また、animation-fill-mode: bothを指定することで、アニメーションの開始前・終了後もスタイルが保持され、意図しない表示崩れを防げます。

コード例

以下のコードをブラウザで実行すると、ロゴ画像が左からフェードインしながら表示されます。「Reload page」ボタンをクリックするとページが再読み込みされ、アニメーションを何度でも確認できます。

<!DOCTYPE html>
<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 fadeInLeft {
            0% {
               opacity: 0;
               -webkit-transform: translateX(-20px);
            }
            100% {
               opacity: 1;
               -webkit-transform: translateX(0);
            }
         }

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

         .fadeInLeft {
            -webkit-animation-name: fadeInLeft;
            animation-name: fadeInLeft;
         }
      </style>
   </head>
   <body>
      <div id="animated-example" class="animated fadeInLeft"></div>
      <button onclick="myFunction()">Reload page</button>

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

主要プロパティの解説

animation-duration

アニメーションが完了するまでの時間を指定します。サンプルでは10秒と長めに設定していますが、実際のWebサイトでは0.5秒〜2秒程度にすると自然で洗練された印象になります。

-webkit-ベンダープレフィックス

-webkit-付きのプロパティは、古いバージョンのSafariなどWebKit系ブラウザ向けの互換対応です。現在の主要ブラウザでは標準プロパティのみで動作しますが、幅広い環境をサポートしたい場合は併記しておくと安心です。

keyframesの書き方

@keyframes fadeInLeftの中で、0%(開始時)と100%(終了時)の状態を定義しています。この2点間の変化はブラウザが自動的に補間するため、滑らかなアニメーションが実現します。中間の状態を追加すれば、より複雑な動きも作成可能です。

  1. CSSで左上方向への回転アニメーション(rotateInUpLeft)を作成する方法

    CSSで「左上を基準に回転する」アニメーション効果(rotateInUpLeft)を作成するには、@keyframesを使って回転の動きを定義し、それを要素に適用します。以下のコードをブラウザで実行すると、実際のアニメーションを確認できます。サンプルコード<!DOCTYPE html> <html>    <head>       <style>          .animated {         &n

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

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