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

CSSで作るウィグル(Wiggle)アニメーション効果の実装方法

ウィグル(Wiggle)効果とは、要素を小刻みに素早く上下左右へ揺らすCSSアニメーションです。ボタンやアイコンなど、ユーザーの注意を引きたい場面で活用できる演出の一つです。本記事では、transformプロパティのskewX()関数を使って、要素を左右に傾けながら揺らすウィグルアニメーションの実装方法を解説します。

ウィグル効果の仕組み

このアニメーションでは、@keyframesルール内でskewX()を使用し、要素の傾き角度を段階的に変化させています。9度→−8度→7度→−6度…というように、各キーフレームごとに角度が徐々に小さくなるため、振り子が次第に静止していくような自然な「揺れ」を表現できます。

実装例

以下のコードを実行して、ウィグルアニメーション効果を確認してみましょう。

<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 wiggle {
            0% { -webkit-transform: skewX(9deg); }
            10% { -webkit-transform: skewX(-8deg); }
            20% { -webkit-transform: skewX(7deg); }
            30% { -webkit-transform: skewX(-6deg); }
            40% { -webkit-transform: skewX(5deg); }
            50% { -webkit-transform: skewX(-4deg); }
            60% { -webkit-transform: skewX(3deg); }
            70% { -webkit-transform: skewX(-2deg); }
            80% { -webkit-transform: skewX(1deg); }
            90% { -webkit-transform: skewX(0deg); }
            100% { -webkit-transform: skewX(0deg); }
         }

         @keyframes wiggle {
            0% { transform: skewX(9deg); }
            10% { transform: skewX(-8deg); }
            20% { transform: skewX(7deg); }
            30% { transform: skewX(-6deg); }
            40% { transform: skewX(5deg); }
            50% { transform: skewX(-4deg); }
            60% { transform: skewX(3deg); }
            70% { transform: skewX(-2deg); }
            80% { transform: skewX(1deg); }
            90% { transform: skewX(0deg); }
            100% { transform: skewX(0deg); }
         }

         .wiggle {
            -webkit-animation-name: wiggle;
            animation-name: wiggle;
            -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
         }

         .animated.wiggle {
            -webkit-animation-duration: 0.75s;
            animation-duration: 0.75s;
         }
      </style>

   </head>
   <body>

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

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

コードのポイント

  • @keyframes wiggle: アニメーションの各段階(0%~100%)におけるskewX()の角度を定義しています。角度を交互に正負へ切り替えることで、左右への揺れを表現します。
  • ベンダープレフィックス(-webkit-): SafariなどWebKit系ブラウザ向けに、プレフィックス付きの記述を併記しています。最新のモダンブラウザでは標準の@keyframesanimationプロパティだけで動作するため、状況に応じて省略可能です。
  • animation-timing-function: ease-in: 動きの始まりを緩やかにすることで、より自然な減衰感を演出します。
  • animation-duration: 0.75s: .animated.wiggleセレクタで再生時間を0.75秒に上書きし、テンポよく短時間で揺れる演出に仕上げています。

ページ下部のボタンをクリックすると再読み込みされ、アニメーションを何度でも確認できます。角度の振幅や再生時間を調整すれば、より強いインパクトのある演出や、控えめで上品な揺れ表現にもカスタマイズできるので、ぜひ試してみてください。

  1. CSSで実現するTada(タダ)アニメーション効果の作り方

    CSSを使えば、要素に「Tada」と呼ばれる揺れるようなアニメーション効果を簡単に追加できます。Tadaアニメーションは、要素が左右に傾きながら拡大・縮小を繰り返すことで、ユーザーの注意を引きつける演出としてよく使われます。ロゴやボタンを目立たせたい場面などに効果的です。以下のコードを実行すると、実際にTadaアニメーションの動作を確認できます。サンプルコード<html>    <head>       <style>          .animated {

  2. CSSで作るスイングアニメーション効果の実装方法

    スイング(Swing)アニメーションは、吊り下げられた要素や軸を中心とした要素を、前後・左右に揺らす動きを表現できるCSSアニメーション効果です。振り子のような自然な揺れを再現でき、ロゴやバナー、アイコンなどに注目を集める演出として活用できます。 スイングアニメーションの仕組み スイングアニメーションは、主に次のCSS機能を組み合わせて実装します。 transform-origin: top center; … 要素の上部中央を回転の基点に設定し、ぶら下がっているように見せる @keyframes と rotate() … 回転角度を15°→ -10°→ 5°→ -5°→ 0°と段階的に変化