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

CSSでFlip Out Xアニメーション効果を実装する方法

CSSでFlip Out Xアニメーション効果を実装する

Flip Out Xは、要素がX軸を中心に回転しながら画面から消えていく3Dアニメーション効果です。CSSの@keyframestransformプロパティを組み合わせることで、JavaScriptなどの外部ライブラリを使わずに簡単に実装できます。

このアニメーションでは、perspective(400px)で奥行きを設定し、rotateX(90deg)で要素をX軸方向に90度回転させると同時に、opacityを1から0へ変化させます。その結果、要素が「裏返しになって消えていく」ような自然な視覚効果が生まれます。

使用している主なプロパティ

  • perspective(400px):3D変換の奥行きの深さを指定します。数値が小さいほど、より強い遠近感が得られます。
  • rotateX(90deg):X軸を中心に要素を90度回転させます。
  • opacity:要素の透明度を制御し、アニメーション終了時に要素をフェードアウトさせます。
  • backface-visibility:回転した際の要素の裏面を表示するかどうかを制御します。ここではvisibleを指定しています。
  • animation-fill-mode: both:アニメーション開始前後のスタイルを維持し、終了後に要素が非表示のままになります。

実装例

以下のコードをブラウザで実行すると、Flip Out Xアニメーション効果を確認できます。ページを再読み込みすると、アニメーションが再度再生されます。

<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 flipOutX {
            0% {
               -webkit-transform: perspective(400px) rotateX(0deg);
               opacity: 1;
            }
            100% {
               -webkit-transform: perspective(400px) rotateX(90deg);
               opacity: 0;
            }
         }

         @keyframes flipOutX {
            0% {
               transform: perspective(400px) rotateX(0deg);
               opacity: 1;
            }
            100% {
               transform: perspective(400px) rotateX(90deg);
               opacity: 0;
            }
         }

         .flipOutX {
            -webkit-animation-name: flipOutX;
            -webkit-backface-visibility: visible !important;
            animation-name: flipOutX;
            backface-visibility: visible !important;
         }
      </style>

   </head>
   <body>

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

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

コードのポイント

ベンダープレフィックス(-webkit-)付きの記述は、Safariなど古いWebKit系ブラウザとの互換性を確保するためのものです。モダンブラウザでは@keyframesanimationプロパティのみで動作しますが、幅広い環境に対応させたい場合は両方を記述しておくと安心です。

また、アニメーションの速度を変えたい場合は、animation-durationの値(例では1秒)を調整するだけで、要素が消えるスピードを自由に変更できます。

  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