CSS ・ アニメーション

transform

移動・回転・拡大

要素を移動・回転・拡大縮小・傾斜させます。周りのレイアウトには影響せず、見た目だけが変わります。ボタンのホバー時のアクションや、バナーなどのアクセントとして盛り込むと効果的です。

初期値
none
適用対象
変形可能な要素(ほとんどの要素)
継承
しない
01

サンプルコード

HTML
1<div class="row">
2 <div class="box">元の状態</div>
3 <div class="box move">translate</div>
4 <div class="box rotate">rotate</div>
5 <div class="box scale">scale</div>
6</div>
CSS
1.row {
2 display: flex;
3 gap: 24px;
4 padding: 16px 0;
5}
6.box {
7 width: 90px;
8 padding: 14px 0;
9 text-align: center;
10 background: #b68235;
11 color: #fff;
12 font-size: 13px;
13}
14.move {
15 transform: translate(10px, -10px);
16}
17.rotate {
18 transform: rotate(15deg);
19}
20.scale {
21 transform: scale(1.2);
22}
02

実行結果

ブラウザでの表示
03

解説

transform(「変化」「変身」という意味)は、要素の形や位置を変える(変形する)プロパティです。translate() で移動、rotate() で回転、scale() で拡大縮小、skew() で傾斜させます。

変形しても元の場所はそのまま確保されるため、周りの要素は動きません。見た目だけが変わるので、アニメーションに向いています。

スペース区切りで複数の変形を組み合わせられます。書いた順番によって結果が変わる点に注意します。

04

応用例・注意点

よく使う関数

関数説明
translate(x, y)移動(translateX・translateY もある)
rotate(15deg)回転(deg は角度の単位)
scale(1.2)拡大・縮小(1 が等倍)
skew(10deg)傾斜
translate(-50%, -50%)自分の大きさの半分だけ戻す(中央寄せで使う)

ホバーで少し拡大する

transition と組み合わせると、なめらかに拡大します。

CSS
1.thumb img {
2 transition: transform .3s ease;
3}
4.thumb:hover img {
5 transform: scale(1.05);
6}

注意点

  1. 01transform を指定した要素は、position: fixed の子要素の基準になるなど、副作用があります。
  2. 02インライン要素(span など)には効きません。display: inline-block などに変えます。
05

translate・rotate・scale・skew の種類

translate:移動

関数意味
translate(x, y)X軸とY軸をまとめて移動
translateX()X軸(横軸)への移動
translateY()Y軸(縦軸)への移動
translateZ()Z軸(奥行き)への移動
translate3d(x, y, z)X・Y・Z の3方向をまとめて移動。立体的な表現に使う

※ translateZ を使うには、親要素に perspective プロパティを設定する 必要があります。設定しないと、奥行き方向に動いても見た目が変わりません。

rotate:回転

関数意味
rotate()オブジェクトの中心を軸に回転(rotateZ と同じ)
rotateX()X軸を軸に回転(上下に倒れるように回る)
rotateY()Y軸を軸に回転(左右に回る)
rotateZ()Z軸(中心を基点)に回転
rotate3d(x, y, z, 角度)X軸・Y軸・Z軸を一括で設定して回転

scale:拡大・縮小

関数意味
scale()X・Y 両方向への拡大・縮小(1 が等倍、1.5 で1.5倍)
scaleX()X軸(横方向)への拡大・縮小
scaleY()Y軸(縦方向)への拡大・縮小
scale3d(x, y, z)X軸・Y軸・Z軸のすべての方向への拡大・縮小を一括で設定

scale3d について

  • translate3d や rotate3d と同じく、3D 空間での拡大・縮小を表現できます。x:横方向、y:縦方向、z:奥行き方向のスケールを指定します。
  • scale3d は単体で使わず、rotateX や rotateY と組み合わせて使います。 通常の HTML の要素には厚みがないため、Z 軸方向の変化が見た目ではわからないからです。

skew:傾斜

関数意味
skew(x, y)X・Y 両方向に傾斜をつける
skewX()X軸(横方向)に傾斜をつける
skewY()Y軸(縦方向)に傾斜をつける

例:4種類の変形をホバーで試す

スライドと同じ値です。それぞれの箱にマウスを乗せると変形します。

HTML
1<div class="row">
2 <div class="box t">translateX</div>
3 <div class="box r">rotate</div>
4 <div class="box s">scale</div>
5 <div class="box k">skewX</div>
6</div>
CSS
1.row {
2 display: flex;
3 gap: 40px;
4 padding: 30px 20px;
5}
6.box {
7 width: 80px;
8 padding: 14px 0;
9 text-align: center;
10 background: #b68235;
11 color: #fff;
12 font-size: 12px;
13 transition: transform .3s ease;
14}
15.t:hover {
16 transform: translateX(50px);
17}
18.r:hover {
19 transform: rotate(45deg);
20}
21.s:hover {
22 transform: scale(1.5);
23}
24.k:hover {
25 transform: skewX(45deg);
26}
ブラウザでの表示

コードと表示の対応

  1. translateX(50px)右に50px移動します。
  2. rotate(45deg)中心を軸に45度回転します。
  3. scale(1.5)縦横1.5倍に拡大します。
  4. skewX(45deg)横方向に45度傾きます。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉