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

CSSで実現する回転しながら表示されるアニメーション効果の作り方

CSSのアニメーション機能を使うと、要素を回転させながら画面に表示させる「rotate in(回転して登場する)」効果を簡単に実装できます。この効果は、@keyframesでアニメーションの開始時点(0%)と終了時点(100%)の状態を定義し、それをクラスに適用することで動作します。

ポイントは以下の3つです。

  • transform: rotate() … 回転の角度を指定します。例では「-200度」から「0度」へ変化させることで、反時計回りに回転しながら正しい向きへ収まります。
  • transform-origin: center center … 回転の中心を要素の中央に設定します。
  • opacity … 開始時に「0」、終了時に「1」とすることで、フェードインしながら回転する自然な演出になります。

また、古いWebKit系ブラウザ向けに -webkit- プレフィックス付きの記述も併せて定義しておくと、より多くの環境で確実に動作します。

サンプルコード

以下のコードを実行すると、ロゴ画像が回転しながら表示されるアニメーションを確認できます。ページ下部のボタンをクリックするとページが再読み込みされ、アニメーションを何度でも再生できます。

<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 rotateIn {
            0% {
               -webkit-transform-origin: center center;
               -webkit-transform: rotate(-200deg);
               opacity: 0;
            }
            100% {
               -webkit-transform-origin: center center;
               -webkit-transform: rotate(0);
               opacity: 1;
            }
         }

         @keyframes rotateIn {
            0% {
               transform-origin: center center;
               transform: rotate(-200deg);
               opacity: 0;
            }
            100% {
               transform-origin: center center;
               transform: rotate(0);
               opacity: 1;
            }
         }

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

   </head>
   <body>

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

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

コードの解説

animation-duration: 10s; はアニメーション全体にかかる時間を10秒に設定しています。数値を小さくすれば、より素早いアニメーションになります。animation-fill-mode: both; を指定することで、アニメーションの開始前・終了後もスタイルが保持され、意図した通りの見た目になります。

.rotateIn クラスで animation-name: rotateIn; を指定し、先ほど定義したキーフレームを要素に紐付けています。HTML側では、このクラスを <div> 要素に付与するだけでアニメーションが有効になる仕組みです。

  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