CSS transform とは?
transform プロパティを使うと、ドキュメントのレイアウトを崩さずに、要素を視覚的に移動・回転・拡縮・傾斜させることができます。トランスフォームはGPUアクセラレーション対応で、アニメーションとの相性も抜群です。
CSS Transformジェネレーター
スライダーを動かしてリアルタイムでトランスフォームを調整し、CSSをコピーボタンで即座にコードを取得できます。
プリセット:
移動 (Translate)
0px
0px
<div class="ctgja-section-title">回転 (Rotate)</div>
<div class="ctgja-row">
<label for="ctgja-rot">回転角度</label>
<input type="range" id="ctgja-rot" min="-360" max="360" value="0" step="1" oninput="ctgjaUpdate()">
<span class="ctgja-val" id="ctgja-rot-val">0deg</span>
</div>
<div class="ctgja-section-title">拡縮 (Scale)</div>
<div class="ctgja-row">
<label for="ctgja-sx">X軸拡縮</label>
<input type="range" id="ctgja-sx" min="0" max="3" value="1" step="0.01" oninput="ctgjaUpdate()">
<span class="ctgja-val" id="ctgja-sx-val">1.00</span>
</div>
<div class="ctgja-row">
<label for="ctgja-sy">Y軸拡縮</label>
<input type="range" id="ctgja-sy" min="0" max="3" value="1" step="0.01" oninput="ctgjaUpdate()">
<span class="ctgja-val" id="ctgja-sy-val">1.00</span>
</div>
<div class="ctgja-section-title">傾斜 (Skew)</div>
<div class="ctgja-row">
<label for="ctgja-skx">X軸傾斜</label>
<input type="range" id="ctgja-skx" min="-60" max="60" value="0" step="1" oninput="ctgjaUpdate()">
<span class="ctgja-val" id="ctgja-skx-val">0deg</span>
</div>
<div class="ctgja-row">
<label for="ctgja-sky">Y軸傾斜</label>
<input type="range" id="ctgja-sky" min="-60" max="60" value="0" step="1" oninput="ctgjaUpdate()">
<span class="ctgja-val" id="ctgja-sky-val">0deg</span>
</div>
<div class="ctgja-section-title">遠近感 (Perspective)</div>
<div class="ctgja-perspective-row">
<input type="checkbox" id="ctgja-persp-en" onchange="ctgjaUpdate()">
<label for="ctgja-persp-en">遠近感を有効化</label>
</div>
<div class="ctgja-row">
<label for="ctgja-persp">奥行き距離</label>
<input type="range" id="ctgja-persp" min="100" max="2000" value="600" step="10" oninput="ctgjaUpdate()">
<span class="ctgja-val" id="ctgja-persp-val">600px</span>
</div>
</div>
<div class="ctgja-preview-panel">
<div>
<div class="ctgja-preview-label">ライブプレビュー</div>
<div class="ctgja-preview-box">
<div class="ctgja-subject" id="ctgja-subject">ボックス</div>
</div>
</div>
<div>
<div class="ctgja-preview-label">生成されたCSS</div>
<div class="ctgja-output" id="ctgja-output"><span class="ctgja-prop">transform</span>: <span class="ctgja-val-text">none</span>;</div>
</div>
<div class="ctgja-btn-row">
<button class="ctgja-btn ctgja-btn-primary" onclick="ctgjaCopy()">CSSをコピー</button>
<button class="ctgja-btn ctgja-btn-secondary" onclick="ctgjaApplyPreset('reset')">すべてリセット</button>
</div>
<div class="ctgja-copy-notice" id="ctgja-copy-notice"></div>
</div>
トランスフォーム関数の解説
| 関数 | 構文 | 説明 |
|---|---|---|
translate() | translate(x, y) | 要素をX・Y軸方向に移動 |
rotate() | rotate(deg) | 正の値で時計回り、負の値で反時計回りに回転 |
scale() | scale(x, y) | 要素を拡縮。1が原寸、-1で反転 |
skew() | skew(xdeg, ydeg) | 各軸に沿って要素を傾斜 |
perspective() | perspective(px) | 3D空間の奥行き感を設定 |
トランスフォームの順序に注意
複数のトランスフォームは右から左の順に適用されます。translate(50px, 0) rotate(45deg) は「まず回転してから移動」という意味になります。順序を変えると見た目が変わるので注意が必要です。
パフォーマンスのコツ
- アニメーションには
transformとopacityを優先的に使用してください — レイアウトと描画の処理をスキップできます。 - 頻繁にアニメーションする要素には
will-change: transformを追加しましょう。 - 静的な要素への
will-changeの多用は GPUメモリを消費するため避けてください。
3D トランスフォームのサンプル
/* 親要素で3D空間を設定 */
.container {
perspective: 600px;
}
/* 子要素に3D変換を適用 */
.card {
transform: rotateY(30deg) rotateX(10deg);
transform-style: preserve-3d;
backface-visibility: hidden;
}
関連ツール
- CSSアニメーションジェネレーター — キーフレームアニメーションをビジュアルで作成
- CSS Flexboxジェネレーター — フレックスレイアウトをライブプレビューで設計
- CSS ボックスシャドウジェネレーター — 多層シャドウをインタラクティブに作成
