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

CSSでバウンスアウトダウン(BounceOutDown)アニメーション効果を実装する方法

CSSのアニメーション機能を使えば、JavaScriptに頼らずとも要素に動きのある演出を簡単に追加できます。この記事では、要素が一度上方向に跳ねてから画面下へ飛び出して消えていく「バウンスアウトダウン(BounceOutDown)」アニメーションの実装方法を解説します。

BounceOutDownアニメーションのサンプルコード

以下のコードをそのまま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 bounceOutDown {
            0% {
               -webkit-transform: translateY(0);
            }
            20% {
               opacity: 1;
               -webkit-transform: translateY(-20px);
            }
            100% {
               opacity: 0;
               -webkit-transform: translateY(2000px);
            }
         }

         @keyframes bounceOutDown {
            0% {
               transform: translateY(0);
            }
            20% {
               opacity: 1;
               transform: translateY(-20px);
            }
            100% {
               opacity: 0;
               transform: translateY(2000px);
            }
         }

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

   </head>
   <body>

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

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

コードの仕組みを解説

1. 共通スタイル(.animatedクラス)

.animatedクラスでは、背景画像の設定に加えて、animation-durationでアニメーションの全体時間を10秒に指定し、animation-fill-mode: bothによってアニメーション開始前後もキーフレームの状態を維持するようにしています。

2. キーフレーム(@keyframes bounceOutDown)

アニメーションの動きは3つの段階で定義されています。

  • 0%(開始時):要素は元の位置(translateY(0))にあります。
  • 20%:要素が20px上方向に跳ね上がります。このとき不透明度は1(完全に表示)のままです。
  • 100%(終了時):要素が2000px下方向へ移動して画面外に出ると同時に、不透明度が0になりフェードアウトします。

3. ベンダープレフィックスについて

コード内の-webkit-から始まる記述は、SafariなどWebKit系ブラウザ向けの互換性対応です。現在の主要ブラウザは標準の@keyframestransformに対応しているため、古いブラウザをサポートする必要がない場合はプレフィックス付きの記述を省略しても問題ありません。

カスタマイズのポイント

  • 速度を変えるanimation-durationの値を小さくすると素早く、大きくするとゆっくりした動きになります。
  • 跳ねる高さを変える:20%時点のtranslateY(-20px)の値を調整することで、バウンドの強さを変更できます。
  • 飛び出す距離を変える:100%時点のtranslateY(2000px)は画面の高さより十分大きな値なら任意の数値で構いません。

このようにCSSの@keyframestransformを組み合わせるだけで、軽量かつ滑らかな退場アニメーションを実現できます。モーダルを閉じたときの演出や、通知バーを消す際のエフェクトなど、さまざまな場面で応用してみてください。

  1. CSSで回転しながら消えるアニメーション(rotateOut)を作る方法

    CSSを使えば、要素が回転しながら画面から消えていく「rotateOut(回転退場)」アニメーションを簡単に実装できます。ここでは、@keyframesとanimationプロパティを組み合わせた基本的な実装例を紹介します。 実装例 以下のコードでは、画像を含む要素が10秒かけて200度回転しながらフェードアウトします。「Reload page」ボタンでページを再読み込みすると、アニメーションを何度でも確認できます。 <html>    <head>       <style>     &

  2. CSSで実現する「右下を支点に回転しながら消える」アニメーション効果の作り方

    CSSのアニメーションを使えば、要素を右下(right bottom)を支点として回転させながらフェードアウトさせる演出が簡単に実装できます。この効果は一般的に rotateOutDownRight と呼ばれ、要素が画面から消える際の退場アニメーションとしてよく活用されます。rotateOutDownRightアニメーションの仕組みこのアニメーションでは、以下のCSSプロパティが重要な役割を果たします。transform-origin: right bottom; … 回転の基準点を要素の右下に設定します。transform: rotate(-90deg); … 要素を反時計回りに90度回転さ