CSSでRotateとScale Transformを組み合わせる

単一のtransformプロパティでrotateZとscaleX、scaleYをスタック。組み合わせtransformが複合効果を作る仕組みを理解する。

Animation Combos

詳細な説明

RotateとScaleの組み合わせ

回転とスケーリングの両方が必要な場合、単一のtransformプロパティで組み合わせる必要があります。transformを2回設定すると、最初の宣言が上書きされます。

CSS

.icon-button:hover {
  transform: rotateZ(15deg) scaleX(1.2) scaleY(1.2);
  transition: transform 0.2s ease;
}

単一のtransformプロパティが必要な理由

CSSは複数のtransform宣言をマージしません:

/* 誤り:scaleがrotateを上書き */
.element {
  transform: rotateZ(45deg);
  transform: scaleX(1.5) scaleY(1.5); /* rotateが置き換えられる! */
}

/* 正しい:1つのプロパティで組み合わせ */
.element {
  transform: rotateZ(45deg) scaleX(1.5) scaleY(1.5);
}

順序の影響

transform文字列内のrotateとscaleの順序により、わずかに異なる結果が生まれます:

  • 回転してからスケール — 要素が最初に回転し、回転した形状が元の軸に沿ってスケーリングされる
  • スケールしてから回転 — 要素が最初にスケーリングされ、スケーリングされた形状が回転する

ほとんどのホバーエフェクトでは視覚的な差は無視できますが、非対称スケーリング(scaleX !== scaleY)の場合は順序が大きく影響します。

実用例:遊び心のあるボタン

.btn {
  transition: transform 0.15s ease;
}
.btn:hover {
  transform: rotateZ(-3deg) scaleX(1.05) scaleY(1.05);
}
.btn:active {
  transform: rotateZ(0deg) scaleX(0.97) scaleY(0.97);
}

ユースケース

インタラクティブなボタンホバー状態、通知バッジのポップイン、遊び心のあるアイコンアニメーション、わずかな回転とスケーリングを組み合わせて自然でオーガニックな感覚を作るマイクロインタラクションに最適です。

試してみる — CSS Transform Playground

フルツールを開く