このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 https://github.com/mdn/interactive-examples をクローンしてプルリクエストを送信してください。
このプロパティに none 以外の値が設定されていると、重ね合わせコンテキスト が作成されます。この場合、その要素はその中に含まれる position: fixed; または position: absolute; である要素すべての包含ブロックとして扱われます。
変形可能な要素のみが transform の対象になります。つまり、レイアウトが CSS ボックスモデルによって管理される、非置換インラインボックス、表の列ボックス、表の列グループボックスを除くすべての要素です。
構文
/* キーワード値 */ transform: none; /* 関数値 */ transform: matrix(1.0, 2.0, 3.0, 4.0, 5.0, 6.0); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: perspective(17px); transform: rotate(0.5turn); transform: rotate3d(1, 2.0, 3.0, 10deg); transform: rotateX(10deg); transform: rotateY(10deg); transform: rotateZ(10deg); transform: translate(12px, 50%); transform: translate3d(12px, 50%, 3em); transform: translateX(2em); transform: translateY(3in); transform: translateZ(2px); transform: scale(2, 0.5); transform: scale3d(2.5, 1.2, 0.3); transform: scaleX(2); transform: scaleY(0.5); transform: scaleZ(0.3); transform: skew(30deg, 20deg); transform: skewX(30deg); transform: skewY(1.07rad); /* 複数の関数値 */ transform: translateX(10px) rotate(10deg) translateY(5px); transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg); /* グローバル値 */ transform: inherit; transform: initial; transform: unset;
transform プロパティには、キーワード値 none か <transform-function> の値のいずれかが指定されます。
値
<transform-function>- 適用される 1 つ以上の CSS 変形関数です。変形関数は、左から右へ順に重ねられ、つまり右から左の順に変形の混合の効果が適用されます。
none- 変形を何も適用しないことを指定します。
形式文法
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>#{6} )
<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> | <zero> ] )
<skew()> = skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )
<skewX()> = skewX( [ <angle> | <zero> ] )
<skewY()> = skewY( [ <angle> | <zero> ] )
<matrix3d()> = matrix3d( <number>#{16} )
<translate3d()> = translate3d( <length-percentage> , <length-percentage> , <length> )
<translateZ()> = translateZ( <length> )
<scale3d()> = scale3d( <number> , <number> , <number> )
<scaleZ()> = scaleZ( <number> )
<rotate3d()> = rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )
<rotateX()> = rotateX( [ <angle> | <zero> ] )
<rotateY()> = rotateY( [ <angle> | <zero> ] )
<rotateZ()> = rotateZ( [ <angle> | <zero> ] )
<perspective()> = perspective( <length> )where
<length-percentage> = <length> | <percentage>
perspective() を複数の関数の中で使用する場合は、最初に配置しなければなりません。
例
HTML
<div>Transformed element</div>
CSS
div {
border: solid red;
transform: translate(30px, 20px) rotate(20deg);
width: 140px;
height: 60px;
}
結果
その他の例は、CSS Transforms の利用 および <transform-function> をご覧ください。
アクセシビリティの考慮事項
拡大や縮小のアニメーションは、特定の種類の偏頭痛を引き起こす原因になりやすいので、アクセシビリティの問題になることがあります。ウェブサイトにこのようなアニメーションを含める必要がある場合は、できればサイト全体で、ユーザーがアニメーションを止める制御ができるようしてください。
また、 prefers-reduced-motion メディア特性を使用することを検討してください。これを使用してメディアクエリを書けば、ユーザーがシステムの設定でアニメーションを減らすよう指定した場合にアニメーションを止めることができます。
詳しくは以下の文書を参照してください。
仕様書
| 仕様書 | 状態 | 備考 |
|---|---|---|
| CSS Transforms Level 2 transform の定義 |
編集者草案 | 3D 変換関数を追加。 |
| CSS Transforms Level 1 transform の定義 |
草案 | 初回定義 |
| 初期値 | none |
|---|---|
| 適用対象 | 変形可能要素 |
| 継承 | なし |
| パーセンテージ | bounding box のサイズ |
| メディア | 視覚 |
| 計算値 | 指定通り。ただし相対的 length は絶対的 length に変換 |
| アニメーションの種類 | transform |
| 正規順序 | 形式文法で定義される一意のあいまいでない順序 |
| Creates stacking context | あり |
ブラウザーの互換性
| デスクトップ | モバイル | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
transform | Chrome
完全対応
36
| Edge
完全対応
12
| Firefox
完全対応
16
| IE
完全対応
10
| Opera
完全対応
23
| Safari
完全対応
9
| WebView Android
完全対応
37
| Chrome Android
完全対応
36
| Firefox Android
完全対応
16
| Opera Android
完全対応
24
| Safari iOS
完全対応
9
| Samsung Internet Android
完全対応
3.0
|
| 3D support | Chrome 完全対応 12 | Edge 完全対応 12 | Firefox 完全対応 16 | IE
完全対応
10
| Opera 完全対応 15 | Safari 完全対応 4 | WebView Android
完全対応
3
| Chrome Android 完全対応 18 | Firefox Android 完全対応 16 | Opera Android 完全対応 14 | Safari iOS 完全対応 3.2 | Samsung Internet Android 完全対応 1.0 |
凡例
- 完全対応
- 完全対応
- 実装ノートを参照してください。
- 実装ノートを参照してください。
- ユーザーが明示的にこの機能を有効にしなければなりません。
- ユーザーが明示的にこの機能を有効にしなければなりません。
- 使用するには、ベンダー接頭辞または異なる名前が必要です。
- 使用するには、ベンダー接頭辞または異なる名前が必要です。
関連情報
- CSS 変形の使用
<transform-function>データ型にすべての変形関数の説明があります- CSS 変形機能を視覚化するオンラインツール: CSS Transform Playground