これは実験段階の機能です。
この機能は複数のブラウザで開発中の状態にあります。各ブラウザで用いるために、適切なベンダー接頭辞が必要な場合があります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザの将来のバージョンで変更になる可能性があることに注意してください。
概要
transform CSS プロパティは CSS 視覚整形モデルの座標空間を変更できるようにします。これを用いると、要素を移動、回転、スケーリング、傾斜させることができます。
| 初期値 | none |
|---|---|
| 適用対象 | 変形可能要素 |
| 継承 | 不可 |
| 相対値の基準 | bounding box のサイズ |
| メディア | visual |
| 計算値 | 指定通り。ただし相対的 length は絶対的 length に変換 |
| アニメーションの可否 | 可。 の値として補完しますtransform |
| 正規順序 | 形式文法で定義される一意のあいまいでない順序 |
| Creates stacking context | 継承する |
構文
none | <transform-list>where
<transform-list> = <transform-function>+where
<transform-function> = [ <matrix()> || <translate()> || <translateX()> || <translateY()> || <scale()> || <scaleX()> || <scaleY()> || <rotate()> || <skew()> || <skewX()> || <skewY()> || <matrix3d()> || <translate3d()> || <translateZ()> || <scale3d()> || <scaleZ()> || <rotate3d()> || <rotateX()> || <rotateY()> || <rotateZ()> || <perspective()> ]+where
<matrix()> = matrix( <number> [, <number> ]{5,5} )
<translate()> = translate( <length> | <percentage> [, <length> | <percentage> ]? )
<translateX()> = translateX( <length> | <percentage> )
<translateY()> = translateY( <length> | <percentage> )
<scale()> = scale( <number> [, <number> ]? )
<scaleX()> = scaleX( <number> )
<scaleY()> = scaleY( <number> )
<rotate()> = rotate( <angle> )
<skew()> = skew( <angle> [, <angle> ]? )
<skewX()> = skewX( <angle> )
<skewY()> = skewY( <angle> )
<matrix3d()> = matrix3d( <number> [, <number> ]{15,15} )
<translate3d()> = translate3d( <length> | <percentage> , <length> | <percentage> , <length> )
<translateZ()> = translateZ( <length> )
<scale3d()> = scale3d( <number> , <number>, <number> )
<scaleZ()> = scaleZ( <number> )
<rotate3d()> = rotate3d( <number> , <number> , <number> , <angle> )
<rotateX()> = rotateX( <angle> )
<rotateY()> = rotateY( <angle> )
<rotateZ()> = rotateZ( <angle> )
<perspective()> = perspective( <length> )
値
- <transform-function>
- 1 個以上の CSS transform functions。下記参照。
- none
- transform は何も適用されないことを示す。
例
CSS transforms の利用 を参照。
実働例
pre {
width: 33em;
border: solid red;
-webkit-transform: translate(100px) rotate(10deg);
-webkit-transform-origin: 60% 100%;
-o-transform: translate(100px) rotate(10deg);
-o-transform-origin: 60% 100%;
transform: translate(100px) rotate(10deg);
transform-origin: 60% 100%;
}
CSS 変換関数
transform CSS プロパティは要素で使用される座標システムを transform 関数 を用いて操作できるようにします。これらの関数は以下に記述されています。
matrix(行列)
transform: matrix(a, c, b, d, tx, ty) /* a, b, c, d は変換行列を構成します ┌ ┐ │ a b │ │ c d │ └ ┘ tx, ty は移動量です(translate values) */
6 値からなる 2D 変換行列を指定します。これは matrix [a b c d tx ty] と同じです。
<length> 値を受け付けます。現在の Gecko、Webkit(Safari、Chrome)、Opera は、 tx と ty として単位の無い <number> をサポートします。実働例
background: gold; width: 30em;
-webkit-transform: matrix(1, -0.2, 0, 1, 0, 0);
-o-transform: matrix(1, -0.2, 0, 1, 0, 0);
transform: matrix(1, -0.2, 0, 1, 0, 0);
background: wheat;
max-width: intrinsic; max-width: -moz-fit-content;
-webkit-transform: matrix(1, 0, 0.6, 1, 250, 0);
-o-transform: matrix(1, 0, 0.6, 1, 250, 0);
transform: matrix(1, 0, 0.6, 1, 250, 0);
参照
- Examples of linear transformation matrices Wikipedia
- Coordinate transformation matrices mathamazement.com
- Microsoft's matrix filter MSDN
rotate(回転)
transform: rotate(angle); /* an <angle>, e.g. rotate(30deg) */
要素をその原点(-moz-transform-origin で指定)を中心に時計回りに指定された angle だけ回転させます。この操作は matrix [cos(angle) sin(angle) -sin(angle) cos(angle) 0 0] に対応します。
scale(スケーリング)
transform: scale(sx[, sy]); /* one or two unitless <number>s, e.g. scale(2.1,4) */
[sx, sy] で記述される 2D スケーリング操作を指定します。sy が指定されていない場合は、sx と同じであるとみなされます。
scaleX
transform: scaleX(sx); /* a unitless <number>, e.g. scaleX(2.7) */
vector [sx, 1] を用いたスケーリングを指定します。
scaleY
transform: scaleY(sy) /* a unitless <number>, e.g. scaleY(0.3) */
vector [1, sy] を用いたスケーリングを指定します。
skew(傾斜)
transform: skew(ax[, ay]) /* one or two <angle>, e.g. skew(30deg,-10deg) */
要素を X 軸または Y 軸に対して指定された角度だけ傾斜させます。ay が指定されていない場合は、Y 軸に対しては傾斜は適用されません。
skew() 関数は初期の草案に存在しました。この関数は取り除かれましたが、一部の実装にはまだ残されています。これは使わないでください。同じ効果を得るために、
skew() に1 つの引数を与えて使っていたのなら skewX() を、汎用的には matrix(1, tan(ay), tan(ax), 1, 0, 0) を使ってください。ここで tan() は CSS 関数ではなく、自分で計算する必要がある点に注意してください。skewX
transform: skewX(angle) /* an <angle>, e.g. skewX(-30deg) */
要素を X 軸に対して指定された angle だけ傾斜させます。
skewY
transform: skewY(angle) /* an <angle>, e.g. skewY(4deg) */
要素を Y 軸に対して指定された angle だけ傾斜させます。
translate(移動)
transform: translate(tx[, ty]) /* one or two <length> values */
vector [tx, ty] による 2D 移動を指定します。ty が指定されていない場合は、値は0とみなされます。
各 <translation-value> 引数は <length> 値か <percentage> 値のいずれかです。
translateX
transform: translateX(tx) /* see <length> for possible values */
要素を X 軸にそって指定量だけ移動します。
translateY
transform: translateY(ty) /* see <length> for possible values */
要素を Y 軸にそって指定量だけ移動します。
仕様
| 仕様 | 策定状況 | コメント |
|---|---|---|
| CSS Transforms Level 1 transform の定義 |
草案 |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | (有) -webkit | 3.5 (1.9.1)-moz 16.0 (16.0) |
9.0 -ms 10.0 |
10.5-o 12.10 |
3.1-webkit |
| 3D のサポート | 12.0-webkit | 10.0-moz 16.0 (16.0) |
10.0 | 未サポート | 4.0-webkit |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | ? | ? | ? | ? | ? | ? |
注記
Internet Explorer 5.5 以降はプロプライエタリな Matrix Filter を使って同様の効果を得ることができます。
Gecko 14.0 は skew()の実験的なサポートを取り除きましたが、Gecko 15.0 で互換性の理由から再導入しました。これは非標準で将来的におそらく取り除かれるので、使わないでください。
関連情報
- CSS Transforms の利用
- <translation-value> データ型
- More info on CSS3 Rotation / Matrix Filter issues in the comments on Paul Irish's blog.
- クロスブラウザな 2D の transform plugin for jQuery