transformプロパティを利用すると、要素のボックスに2次元、3次元の変形効果を適用できます。2次元変形では横(X軸)、縦(Y軸)の方向に関して、移動、拡大・縮小、回転,傾斜の変形効果を適用できます。変形の種類は下記の関数を利用します。
変化効果 | 変形関数 |
---|---|
移動 | translate() translateX() translateY() |
拡大・縮小 | scale() scaleX() scaleY() |
回転 | rotate() |
傾斜 | skewX() skewY |
変形行列 | matrix |
変形関数の指定方法
none:
変形効果の適用なし
translate(X軸方向の距離,Y軸方向の距離):
要素を移動させる。X軸方向とY軸方向の移動距離を、それぞれ「実数値+単位」か「パーセント値+%」で指定する。値を1つだけ指定したときは、Y軸方向の移動距離に「0」を指定したものとみなされます。
translateX(X軸方向の距離):
要素をX軸方向へ移動させる。移動距離は「実数値+単位」か「パーセント値+%」で指定する。
translateY(Y軸方向の距離):
要素をY軸方向へ移動させる。移動距離は「実数値+単位」か「パーセント値+%」で指定する。
scale(X軸方向の倍率,Y軸方向の倍率):
要素を拡大・縮小させます。X軸方向とY軸方向に拡大・縮小させる倍率を、それぞれ標準サイズを1とした単位なしの実数値で指定します。値を1つだけ指定した場合は、X軸方向とY軸方向へ同じ倍率を指定したとみなされます。
scaleX(X軸方向の倍率):
要素をX軸方向へ拡大・縮小させます。拡大・縮小させる倍率を、標準サイズを1とした単位なしの実数値で指定する。
scaleY(Y軸方向の倍率):
要素をY軸方向へ拡大・縮小させます。拡大・縮小させる倍率を、標準サイズを1とした単位なしの実数値で指定する。
rotate(角度):
要素を回転させる。回転させる角度を「deg(度数)」「rad(ラジアン)」「grad(グラード)」で指定する。正の値を指定すると、時計回りに回転する。
skewX(X軸方向の角度):
要素をX軸方向に傾斜させる。傾斜させる角度を「deg(度数)」「rad(ラジアン)」「grad(グラード)」で指定する
skewY(Y軸方向の角度):
要素をY軸方向に傾斜させる。傾斜させる角度を「deg(度数)」「rad(ラジアン)」「grad(グラード)」で指定する
matrix(a,b,c,d,e,f):
3*3の変換行列を利用して座標を変換して、要素を変形させます。
各変形効果を半角スペースで区切って書けば、複数の効果を適用できます。そのときは、先に指定したものから適用されます。指定する順番により効果が変わることがあります。
それと、変形の基点はボックスの中心(50%、50%)ですが、後述するtransform-originプロパティで変更することができます。
2次元変形の基点を変更する
2次元の変形効果は、ボックスの中心(50%,50%)を基点して適用されますが、transform-originプロパティを利用すると、この位置を変更できます。
ボックスの左上を(0,0)としたときの基点の位置を、X軸方向とY軸方向の座標又はキーワードで半角スペースで区切って指定します。値を1つだけ指定したときは、2つ目の値に「center」を指定したとみなされます。
値の指定方法
・パーセント値+%
要素ボックスのサイズに対する割合で、基点の位置を調整
・実数値+単位
数値に単位をつけて、貴店の位置を指定する
・キーワード top,bottom,left,right,center
X軸方向の位置(left,center,right)とY軸方向の位置(top,center,bottom)を指定する。top,left「0%」,rightとbottomは「100%」centerは「50%」を指定したときと同じです。
サンプルコードの実行結果はこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>要素を変形させる</title> <style> div{ width:100px; height:60px; background-color:skyblue; } .trans{ -ms-transform:translate(100px,100px) rotate(45deg) scale(2,1); -webkit-transform:translate(100px,100px) rotate(45deg) scale(2,1); transform:translate(100px,100px) rotate(45deg) scale(2,1); } .transOriTop{ -ms-transform-origin:top; -webkit-transform-origin:top; transform-origin:top; } .transOriLeft{ -ms-transform-origin:left; -webkit-transform-origin:left; transform-origin:left; } .transOriRight{ -ms-transform-origin:right; -webkit-transform-origin:right; transform-origin:right; } .transOriBottom{ -ms-transform-origin:bottom; -webkit-transform-origin:bottom; transform-origin:bottom; } .transOriCenter{ -ms-transform-origin:center; -webkit-transform-origin:center; transform-origin:center; } </style> </head> <body> <div class="">変形前</div> <div class="trans">変形後</div> <div class="trans transOriBottom">transform-origin:bottom rightを指定</div> </body> </html> |