CSS3 2D トランスフォーム
CSS3 のトランスフォーム(Transform)を使用すると、要素を移動、回転、拡大縮小、および傾斜させることができます。これは、要素の形状や位置を変更するための強力な手法です。
1. CSS3 2D トランスフォーム
2D トランスフォームは、要素を 2 次元の平面(X 軸と Y 軸)上で変化させます。
主要なメソッドは以下の通りです:
translate()rotate()scaleX()scaleY()scale()skewX()skewY()skew()matrix()
2. translate() メソッド
translate() メソッドは、現在の位置を基準にして、指定されたパラメータ(X 軸と Y 軸)に従って要素を移動させます。
以下の例では、<div> 要素を右方向に 50px、下方向に 100px 移動させます。
div {
/* X軸に50px、Y軸に100px移動 */
transform: translate(50px, 100px);
}3. rotate() メソッド
rotate() メソッドは、指定された角度に応じて要素を時計回り、または反時計回りに回転させます。
3.1 正の値による回転
以下の例では、<div> 要素を時計回りに 20 度回転させます。
div {
/* 時計回りに20度回転 */
transform: rotate(20deg);
}3.2 負の値による回転
負の値を指定すると、要素は反時計回りに回転します。
div {
/* 反時計回りに20度回転 */
transform: rotate(-20deg);
}4. scale() メソッド
scale() メソッドは、要素の幅と高さを指定した倍率で拡大または縮小します。
4.1 幅と高さの同時指定
以下の例では、<div> 要素の幅を元の 2 倍に、高さを 3 倍に拡大します。
div {
/* 幅を2倍、高さを3倍に拡大 */
transform: scale(2, 3);
}4.2 縮小の指定
1 未満の値を指定すると、要素は縮小されます。以下の例では、幅と高さを半分に縮小します。
div {
/* 幅と高さを0.5倍に縮小 */
transform: scale(0.5, 0.5);
}4.3 scaleX() と scaleY()
scaleX() は幅のみ、scaleY() は高さのみを変更します。
div {
/* 幅のみを2倍にする */
transform: scaleX(2);
}
div {
/* 高さのみを3倍にする */
transform: scaleY(3);
}5. skew() メソッド
skew() メソッドは、指定された角度に沿って要素を X 軸と Y 軸方向に傾斜(歪ませる)させます。
5.1 skewX() と skewY()
skewX() は X 軸方向に、skewY() は Y 軸方向に要素を傾けます。
div {
/* X軸方向に20度傾斜 */
transform: skewX(20deg);
}
div {
/* Y軸方向に20度傾斜 */
transform: skewY(20deg);
}5.2 skew() の一括指定
skew(x-angle, y-angle) の形式で両方向を同時に指定できます。
div {
/* X軸に20度、Y軸に10度傾斜 */
transform: skew(20deg, 10deg);
}6. matrix() メソッド
matrix() メソッドは、これらすべての 2D トランスフォームメソッドを 1 つに統合したものです。
matrix() メソッドは、数学的な行列計算(6 つのパラメータ)を使用して、要素の回転、拡大縮小、移動、傾斜を一度に行うことができます。
パラメータの順序は以下の通りです:matrix(scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY())
div {
/* matrixを用いた複合的な変形 */
transform: matrix(1, -0.3, 0, 1, 0, 0);
}7. 2D トランスフォームプロパティ一覧
| プロパティ | 説明 |
|---|---|
transform | 要素に 2D または 3D の変形を適用します。 |
transform-origin | 変形の基準点(原点)を変更します。 |
8. 2D トランスフォームメソッド一覧
| メソッド | 説明 |
|---|---|
matrix(n,n,n,n,n,n) | 6つの値を持つ行列を利用して 2D 変形を定義します。 |
translate(x,y) | X軸方向と Y軸方向の移動を定義します。 |
translateX(n) | X軸方向(水平方向)の移動を定義します。 |
translateY(n) | Y軸方向(垂直方向)の移動を定義します。 |
scale(x,y) | 幅と高さの拡大縮小を定義します。 |
scaleX(n) | 幅の拡大縮小を定義します。 |
scaleY(n) | 高さの拡大縮小を定義します。 |
rotate(angle) | 回転を定義します(引数には deg を使用)。 |
skew(x-angle,y-angle) | X軸と Y軸に沿った傾斜を定義します。 |
skewX(angle) | X軸に沿った傾斜を定義します。 |
skewY(angle) | Y軸に沿った傾斜を定義します。 |