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

CSSで実現する左からのバウンスインアニメーション効果


CSSのbounceInLeftアニメーションを使うと、要素が画面の左側の外から勢いよく飛び込み、少し行き過ぎてから戻るという弾むような演出を実現できます。ロゴや見出し、バナーなどに適用すれば、ページに動きのある印象的なエントランス効果を加えられます。以下のコードを実行して、実際の動きを確認してみましょう。

アニメーションの仕組み

このアニメーションは@keyframesで次のような動きを定義しています。

  • 0%: 要素は完全に透明(opacity: 0)の状態で、画面の左外2000pxの位置に配置されます。
  • 60%: 完全に表示されながら、目標位置を30pxだけ行き過ぎます。
  • 80%: 今度は逆方向へ10px戻ります。
  • 100%: 最終的に元の位置(translateX(0))に収まります。

この「行き過ぎ → 戻る」という動きの繰り返しが、ボールが地面でバウンドするような自然な弾み感を生み出します。

サンプルコード

以下のコードをそのままHTMLファイルとして保存し、ブラウザで開くとアニメーションを確認できます。「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 bounceInLeft {
            0% {
               opacity: 0;
               -webkit-transform: translateX(-2000px);
            }
            60% {
               opacity: 1;
               -webkit-transform: translateX(30px);
            }
            80% {
               -webkit-transform: translateX(-10px);
            }
            100% {
               -webkit-transform: translateX(0);
            }
         }

         @keyframes bounceInLeft {
            0% {
               opacity: 0;
               transform: translateX(-2000px);
            }
            60% {
               opacity: 1;
               transform: translateX(30px);
            }
            80% {
               transform: translateX(-10px);
            }
            100% {
               transform: translateX(0);
            }
         }

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

   </head>
   <body>

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

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

コードのポイント

  • -webkit-接頭辞: 古いSafariなどのWebKit系ブラウザ向けに、ベンダー接頭辞付きの記述を併記しています。最近のモダンブラウザでは標準の@keyframesだけで動作します。
  • animation-fill-mode: both: アニメーションの開始前・終了後にもスタイルが適用されたままとなり、表示のちらつきを防ぎます。
  • animation-duration: 10s: アニメーション全体の長さです。サンプルでは変化を確認しやすいよう10秒に設定していますが、実際のサイトでは1秒〜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