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

CSSで実現するライトスピードアウト(光速退場)アニメーション効果の作り方

ライトスピードアウトアニメーションとは

ライトスピードアウト(lightSpeedOut)は、要素がまるで光の速さで画面の外へ飛び出していくような演出を表現できるCSSアニメーションです。要素を右方向へ移動させながら斜めに傾け(スキュー)、同時にフェードアウトさせることで、SF映画のワープシーンのようなダイナミックな退場エフェクトを実現します。

この効果は、CSSの@keyframesルールとtransformプロパティを組み合わせるだけで、JavaScriptに頼らず簡単に実装できます。

実装コード例

以下の完全な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: 1s;
            animation-duration: 1s;
            -webkit-animation-fill-mode: both;
            animation-fill-mode: both;
         }
         @-webkit-keyframes lightSpeedOut {
            0% {
               -webkit-transform: translateX(0%) skewX(0deg);
               opacity: 1;
            }
            100% {
            -webkit-transform: translateX(100%) skewX(-30deg);
            opacity: 0;
              }
         }
         @keyframes lightSpeedOut {
            0% {
               transform: translateX(0%) skewX(0deg);
               opacity: 1;
            }
            100% {
               transform: translateX(100%) skewX(-30deg);
               opacity: 0;
              }
         }
         .lightSpeedOut {
            -webkit-animation-name: lightSpeedOut;
            animation-name: lightSpeedOut;
            -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
         }
         .animated.lightSpeedOut {
            -webkit-animation-duration: 0.25s;
            animation-duration: 0.25s;
         }
      </style>
   </head>

   <body>
      <div id = "animated-example" class = "animated lightSpeedOut"></div>
      <button onclick = "myFunction()">Reload page</button>
      <script>
         function myFunction() {
            location.reload();
          }
      </script>
   </body>
</html>

コードのポイント解説

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

@keyframes lightSpeedOutでは、開始時点(0%)の要素は元の位置・角度・不透明度100%の状態であり、終了時点(100%)ではtranslateX(100%)で右方向へ移動し、skewX(-30deg)で斜めに傾き、opacity: 0で完全に透明になるよう指定しています。

2. ease-inによる加速感の演出

animation-timing-function: ease-inを指定することで、アニメーションがゆっくり始まり徐々に加速します。これにより、「一瞬で光速に達して飛び去っていく」ような自然な印象を与えられます。

3. ベンダープレフィックスによる互換性対応

-webkit-プレフィックス付きの記述は、Safariなど古いWebKit系ブラウザでも正しく動作させるためのものです。近年のモダンブラウザでは標準の@keyframestransformのみで問題なく機能します。

4. 短い再生時間で鋭い動きに

.animated.lightSpeedOutクラスで再生時間を0.25秒に設定しており、短時間で完了することで素早く鋭い退場演出になっています。

カスタマイズのヒント

数値を調整することで、多彩なバリエーションを作成できます。

  • 移動距離translateX(200%)にすると、さらに遠くまで飛び出します。
  • 傾きの角度skewX(-45deg)などに変えると、より激しいワープ感を演出できます。
  • 再生時間:durationを長くするとゆったり、短くするとより瞬間的な動きになります。
  • 移動方向translateX(-100%)にすれば左方向への退場も可能です。

ページ遷移時の要素の退場演出や、モーダルを閉じるときのアニメーションなど、さまざまな場面で活用できるので、ぜひ自分のプロジェクトに取り入れてみてください。

  1. CSSでrotateOutUpRight(右上へ回転して退場)アニメーションを実装する方法

    CSSを使えば、要素が右下を軸として時計回りに90度回転しながら画面から消えていく「rotateOutUpRight(右上へ回転して退場)」アニメーションを簡単に実装できます。この記事では、@keyframesルールとtransform-originプロパティを組み合わせた具体的な実装例を紹介します。 rotateOutUpRightアニメーションの仕組み このアニメーションは、以下のCSSプロパティを組み合わせて実現します。 transform-origin:回転の軸となる基準点を指定します。ここでは「right bottom(右下)」を指定しています。 transform: rotate

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

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