mozilla

Revision 388705 of transform

  • リビジョンの URL スラグ: CSS/transform
  • リビジョンのタイトル: transform
  • リビジョンの ID: 388705
  • 作成日:
  • 作成者: sosleepy
  • 現行リビジョン いいえ
  • コメント 余分な訳注を除去

このリビジョンの内容

{{ CSSRef() }}

{{ SeeCompatTable() }}

概要

transform CSS プロパティは CSS 視覚整形モデルの座標空間を変更できるようにします。これを用いると、要素を移動、回転、スケーリング、傾斜させることができます。

  • {{ Xref_cssinitial() }}: none
  • Applies to: すべてのブロックレベルとインラインレベルの要素
  • {{ Xref_cssinherited() }}: no
  • Media: {{ Xref_cssvisual() }}
  • {{ Xref_csscomputed() }}: 指定通り。相対的 length は絶対的 length に変換

構文

 transform:  <transform-function>+ | none

<transform-function>
1個以上の {{ anch("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 functions を用いて操作できるようにします。これらの function は以下に記述されています。

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] と同じです。

Note:  古いバージョンの Gecko (Firefox) は txty として {{ Xref_csslength() }} 値を受け付けます。現在の Gecko、Webkit(Safari、Chrome)、Opera は、 txty として単位の無い {{ Xref_cssnumber() }} をサポートします。

実働例

 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);

参照

rotate(回転)

transform:  rotate(angle);      /* an {{ Xref_cssangle() }}, e.g.  rotate(30deg) */

要素をその原点({{ Cssxref("-moz-transform-origin") }} で指定)を中心に時計回りに指定された angle だけ回転させます。この操作は matrix [cos(angle) sin(angle) -sin(angle) cos(angle) 0 0] に対応します。

scale(スケーリング)

transform:  scale(sx[, sy]);     /* one or two unitless {{ Xref_cssnumber() }}s, e.g.  scale(2.1,4) */

[sx, sy] で記述される 2D スケーリング操作を指定します。sy が指定されていない場合は、sx と同じであるとみなされます。

scaleX

transform:  scaleX(sx);          /* a unitless {{ Xref_cssnumber() }}, e.g.  scaleX(2.7) */

vector [sx, 1] を用いたスケーリングを指定します。

scaleY

transform:  scaleY(sy)           /* a unitless {{ Xref_cssnumber() }}, e.g.  scaleY(0.3) */

vector [1, sy] を用いたスケーリングを指定します。

skew(傾斜)

transform:  skew(ax[, ay])       /* one or two {{ Xref_cssangle() }}, e.g.  skew(30deg,-10deg) */

要素を X 軸または Y 軸に対して指定された角度だけ傾斜させます。ay が指定されていない場合は、Y 軸に対しては傾斜は適用されません。

Note: skew() 関数は初期の草案に存在しました。この関数は取り除かれましたが、一部の実装にはまだ残されています。これは使わないでください。

同じ効果を得るために、skew() に1 つの引数を与えて使っていたのなら skewX() を、汎用的には matrix(1, tan(ay), tan(ax), 1, 0, 0) を使ってください。ここで tan() は CSS 関数ではなく、自分で計算する必要がある点に注意してください。

skewX

transform:  skewX(angle)         /* an {{ Xref_cssangle() }}, e.g.  skewX(-30deg) */

要素を X 軸に対して指定された angle だけ傾斜させます。

skewY

transform:  skewY(angle)         /* an {{ Xref_cssangle() }}, e.g.  skewY(4deg) */

要素を Y 軸に対して指定された angle だけ傾斜させます。

translate(移動)

transform:  translate(tx[, ty])  /* one or two {{ Xref_csslength() }} values */

vector [tx, ty] による 2D 移動を指定します。ty が指定されていない場合は、値は0とみなされます。

<translation-value> 引数は <length> 値か <percentage> 値のいずれかです。

translateX

transform:  translateX(tx)       /* see {{ Xref_csslength() }} for possible values */

要素を X 軸にそって指定量だけ移動します。

translateY

transform:  translateY(ty)       /* see {{ Xref_csslength() }} for possible values */

要素を Y 軸にそって指定量だけ移動します。

仕様

仕様 策定状況 コメント
{{ SpecName('CSS3 Transforms', '#transform', 'transform') }} {{ Spec2('CSS3 Transforms') }}  

ブラウザ実装状況

{{ CompatibilityTable() }}

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート {{ CompatVersionUnknown() }} {{ property_prefix("-webkit") }} {{ CompatGeckoDesktop("1.9.1") }}{{ property_prefix("-moz") }}
{{ CompatGeckoDesktop("16.0") }}
9.0 {{ property_prefix("-ms") }}
10.0
10.5{{ property_prefix("-o") }}
12.10
3.1{{ property_prefix("-webkit") }}
3D のサポート 12.0{{ property_prefix("-webkit") }} 10.0{{ property_prefix("-moz") }}
{{ CompatGeckoDesktop("16.0") }}
10.0 {{ CompatNo() }} 4.0{{ property_prefix("-webkit") }}
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }} {{ CompatUnknown() }}

注記

Internet Explorer 5.5 以降はプロプライエタリな Matrix Filter を使って同様の効果を得ることができます。

Gecko 14.0 は skew()の実験的なサポートを取り除きましたが、Gecko 15.0 で互換性の理由から再導入しました。これは非標準で将来的におそらく取り除かれるので、使わないでください。

関連情報

このリビジョンのソースコード

<p>{{ CSSRef() }}</p>
<p>{{ SeeCompatTable() }}</p>
<h2 id=".E6.A6.82.E8.A6.81">概要</h2>
<p><code>transform </code>CSS プロパティは CSS 視覚整形モデルの座標空間を変更できるようにします。これを用いると、要素を移動、回転、スケーリング、傾斜させることができます。</p>
<ul>
  <li>{{ Xref_cssinitial() }}: none</li>
  <li>Applies to: すべてのブロックレベルとインラインレベルの要素</li>
  <li>{{ Xref_cssinherited() }}: no</li>
  <li>Media: {{ Xref_cssvisual() }}</li>
  <li>{{ Xref_csscomputed() }}: 指定通り。相対的 length は絶対的 length に変換</li>
</ul>
<h2 id=".E6.A7.8B.E6.96.87">構文</h2>
<pre>
 transform:  &lt;transform-function&gt;+ | none
</pre>
<h2 id=".E5.80.A4">値</h2>
<dl>
  <dt>
    &lt;transform-function&gt;</dt>
  <dd>
    1個以上の {{ anch("CSS transform functions") }}。下記参照。</dd>
  <dt>
    none</dt>
  <dd>
    transform は何も適用されないことを示す。</dd>
</dl>
<h2 id=".E4.BE.8B">例</h2>
<p><a class="internal" href="/Ja/CSS/Using_CSS_transforms" title="ja/CSS/Using CSS transforms">CSS transforms の利用</a> を参照。</p>
<h4 id=".E5.AE.9F.E5.83.8D.E4.BE.8B">実働例</h4>
<pre style="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%;">
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%;
}
</pre>
<h2 id="CSS_.E5.A4.89.E6.8F.9B.E9.96.A2.E6.95.B0">CSS 変換関数</h2>
<p><code>transform </code>CSS プロパティは要素で使用される座標システムを <strong>transform functions</strong> を用いて操作できるようにします。これらの function は以下に記述されています。</p>
<h3 id="matrix.EF.BC.88.E8.A1.8C.E5.88.97.EF.BC.89">matrix(行列)</h3>
<pre>
transform:  matrix(a, c, b, d, tx, ty)

/* a, b, c, d は変換行列を構成します 
   ┌     ┐ 
   │ a b │
   │ c d │
   └     ┘
   tx, ty は移動量です(translate values)  */
</pre>
<p>6値からなる 2D 変換行列を指定します。これは <strong>matrix [a b c d tx ty]</strong> と同じです。</p>
<div class="note">
  <strong>Note:</strong>&nbsp; 古いバージョンの Gecko (Firefox) は <strong>tx</strong> と <strong>ty</strong> として {{ Xref_csslength() }} 値を受け付けます。現在の Gecko、Webkit(Safari、Chrome)、Opera は、 <strong>tx</strong> と <strong>ty</strong> として単位の無い {{ Xref_cssnumber() }} をサポートします。</div>
<h4 id=".E5.AE.9F.E5.83.8D.E4.BE.8B">実働例</h4>
<pre style="background:gold; width:400px; -moz-transform:matrix(1, -0.2, 0, 1, 0, 0); -webkit-transform:matrix(1, -0.2, 0, 1, 0, 0);-o-transform:matrix(1, -0.2, 0, 1, 0, 0);-ms-transform:matrix(1, -0.2, 0, 1, 0, 0); transform:matrix(1, -0.2, 0, 1, 0, 0);">
 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);
</pre>
<pre style="background:wheat; max-width:intrinsic; max-width:-moz-fit-content; -moz-transform: matrix(1, 0, 0.6, 1, 15em, 0); -webkit-transform: matrix(1, 0, 0.6, 1, 250, 0); -o-transform: matrix(1, 0, 0.6, 1, 250, 0); -ms-transform: matrix(1, 0, 0.6, 1, 250, 0); transform: matrix(1, 0, 0.6, 1, 250, 0);">
 background: wheat;
 max-width: intrinsic;  max-width: -moz-fit-content;
&nbsp;
 -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);
</pre>
<h4 id=".E5.8F.82.E7.85.A7">参照</h4>
<ul>
  <li><a class="external" href="http://en.wikipedia.org/wiki/Linear_transformation#Examples_of_linear_transformation_matrices" title="http://en.wikipedia.org/wiki/Linear_transformation#Examples_of_linear_transformation_matrices">Examples of linear transformation matrices</a> Wikipedia</li>
  <li><a class="external" href="http://www.mathamazement.com/Lessons/Pre-Calculus/08_Matrices-and-Determinants/coordinate-transformation-matrices.html" title="http://www.mathamazement.com/Lessons/Pre-Calculus/08_Matrices-and-Determinants/coordinate-transformation-matrices.html">Coordinate transformation matrices</a> mathamazement.com</li>
  <li><a class="external" href="http://msdn.microsoft.com/en-us/library/ms533014(VS.85,loband).aspx">Microsoft's matrix filter</a> MSDN</li>
</ul>
<h3 id="rotate.EF.BC.88.E5.9B.9E.E8.BB.A2.EF.BC.89">rotate(回転)</h3>
<pre class="eval">
transform:  rotate(angle);      /* an {{ Xref_cssangle() }}, e.g.  rotate(30deg) */</pre>
<p>要素をその原点({{ Cssxref("-moz-transform-origin") }} で指定)を中心に時計回りに指定された <code>angle</code> だけ回転させます。この操作は matrix <strong>[cos(angle) sin(angle) -sin(angle) cos(angle) 0 0]</strong> に対応します。</p>
<h3 id="scale.EF.BC.88.E3.82.B9.E3.82.B1.E3.83.BC.E3.83.AA.E3.83.B3.E3.82.B0.EF.BC.89">scale(スケーリング)</h3>
<pre class="eval">
transform:  scale(sx[, sy]);     /* one or two unitless {{ Xref_cssnumber() }}s, e.g.  scale(2.1,4) */</pre>
<p><strong>[sx, sy]</strong> で記述される 2D スケーリング操作を指定します。<code>sy</code> が指定されていない場合は、<code>sx</code> と同じであるとみなされます。</p>
<h3 id="scaleX">scaleX</h3>
<pre class="eval">
transform:  scaleX(sx);          /* a unitless {{ Xref_cssnumber() }}, e.g.  scaleX(2.7) */</pre>
<p>vector <strong>[sx, 1]</strong> を用いたスケーリングを指定します。</p>
<h3 id="scaleY">scaleY</h3>
<pre class="eval">
transform:  scaleY(sy)           /* a unitless {{ Xref_cssnumber() }}, e.g.  scaleY(0.3) */</pre>
<p>vector <strong>[1, sy]</strong> を用いたスケーリングを指定します。</p>
<h3 id="skew.EF.BC.88.E5.82.BE.E6.96.9C.EF.BC.89">skew(傾斜)</h3>
<pre class="eval">
transform:  skew(ax[, ay])       /* one or two {{ Xref_cssangle() }}, e.g.  skew(30deg,-10deg) */</pre>
<p>要素を X 軸または Y 軸に対して指定された角度だけ傾斜させます。<code>ay</code> が指定されていない場合は、Y 軸に対しては傾斜は適用されません。</p>
<div class="note">
  <strong>Note:</strong> <code>skew()</code> 関数は初期の草案に存在しました。この関数は取り除かれましたが、一部の実装にはまだ残されています。これは使わないでください。<br />
  <br />
  同じ効果を得るために、<code>skew()</code> に1 つの引数を与えて使っていたのなら <code>skewX()</code> を、汎用的には <code>matrix(1, <em>tan(</em>ay<em>)</em></code><em>, </em><code><em>tan(</em>ax<em>)</em>, 1, 0, 0)</code> を使ってください。ここで <em>tan()</em> は CSS 関数ではなく、自分で計算する必要がある点に注意してください。</div>
<h3 id="skewX">skewX</h3>
<pre class="eval">
transform:  skewX(angle)         /* an {{ Xref_cssangle() }}, e.g.  skewX(-30deg) */</pre>
<p>要素を X 軸に対して指定された <code>angle</code> だけ傾斜させます。</p>
<h3 id="skewY">skewY</h3>
<pre class="eval">
transform:  skewY(angle)         /* an {{ Xref_cssangle() }}, e.g.  skewY(4deg) */</pre>
<p>要素を Y 軸に対して指定された <code>angle</code> だけ傾斜させます。</p>
<h3 id="translate.EF.BC.88.E7.A7.BB.E5.8B.95.EF.BC.89">translate(移動)</h3>
<pre class="eval">
transform:  translate(tx[, ty])  /* one or two {{ Xref_csslength() }} values */</pre>
<p>vector <strong>[tx, ty]</strong> による 2D 移動を指定します。<code>ty</code> が指定されていない場合は、値は0とみなされます。</p>
<p>各 <a href="/en-US/docs/translation-value" title="/en-US/docs/translation-value"><code>&lt;translation-value&gt;</code></a> 引数は <code><a href="/en-US/docs/CSS/length" title="/en-US/docs/CSS/length">&lt;length&gt;</a></code> 値か <code><a href="/en-US/docs/CSS/percentage" title="/en-US/docs/CSS/percentage">&lt;percentage&gt;</a></code> 値のいずれかです。</p>
<h3 id="translateX">translateX</h3>
<pre class="eval">
transform:  translateX(tx)       /* see {{ Xref_csslength() }} for possible values */</pre>
<p>要素を X 軸にそって指定量だけ移動します。</p>
<h3 id="translateY">translateY</h3>
<pre class="eval">
transform:  translateY(ty)       /* see {{ Xref_csslength() }} for possible values */</pre>
<p>要素を Y 軸にそって指定量だけ移動します。</p>
<h2 id=".E4.BB.95.E6.A7.98">仕様</h2>
<table class="standard-table">
  <thead>
    <tr>
      <th scope="col">仕様</th>
      <th scope="col">策定状況</th>
      <th scope="col">コメント</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>{{ SpecName('CSS3 Transforms', '#transform', 'transform') }}</td>
      <td>{{ Spec2('CSS3 Transforms') }}</td>
      <td>&nbsp;</td>
    </tr>
  </tbody>
</table>
<h2 id=".E3.83.96.E3.83.A9.E3.82.A6.E3.82.B6.E5.AE.9F.E8.A3.85.E7.8A.B6.E6.B3.81">ブラウザ実装状況</h2>
<p>{{ CompatibilityTable() }}</p>
<div id="compat-desktop">
  <table class="compat-table">
    <tbody>
      <tr>
        <th>機能</th>
        <th>Chrome</th>
        <th>Firefox (Gecko)</th>
        <th>Internet Explorer</th>
        <th>Opera</th>
        <th>Safari</th>
      </tr>
      <tr>
        <td>基本サポート</td>
        <td>{{ CompatVersionUnknown() }} {{ property_prefix("-webkit") }}</td>
        <td>{{ CompatGeckoDesktop("1.9.1") }}{{ property_prefix("-moz") }}<br />
          {{ CompatGeckoDesktop("16.0") }}</td>
        <td>9.0 {{ property_prefix("-ms") }}<br />
          10.0</td>
        <td>10.5{{ property_prefix("-o") }}<br />
          12.10</td>
        <td>3.1{{ property_prefix("-webkit") }}</td>
      </tr>
      <tr>
        <td>3D のサポート</td>
        <td>12.0{{ property_prefix("-webkit") }}</td>
        <td>10.0{{ property_prefix("-moz") }}<br />
          {{ CompatGeckoDesktop("16.0") }}</td>
        <td>10.0</td>
        <td>{{ CompatNo() }}</td>
        <td>4.0{{ property_prefix("-webkit") }}</td>
      </tr>
    </tbody>
  </table>
</div>
<div id="compat-mobile">
  <table class="compat-table">
    <tbody>
      <tr>
        <th>機能</th>
        <th>Android</th>
        <th>Chrome for Android</th>
        <th>Firefox Mobile (Gecko)</th>
        <th>IE Mobile</th>
        <th>Opera Mobile</th>
        <th>Safari Mobile</th>
      </tr>
      <tr>
        <td>基本サポート</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
        <td>{{ CompatUnknown() }}</td>
      </tr>
    </tbody>
  </table>
</div>
<h3 id=".E6.B3.A8.E8.A8.98">注記</h3>
<p>Internet Explorer 5.5 以降はプロプライエタリな <a class="external" href="http://msdn.microsoft.com/en-us/library/ms533014%28VS.85,loband%29.aspx">Matrix Filter</a> を使って同様の効果を得ることができます。</p>
<p>Gecko 14.0 は <code>skew()</code>の実験的なサポートを取り除きましたが、Gecko 15.0 で互換性の理由から再導入しました。これは非標準で将来的におそらく取り除かれるので、使わないでください。</p>
<h2 id=".E9.96.A2.E9.80.A3.E6.83.85.E5.A0.B1">関連情報</h2>
<ul>
  <li><a href="/en-US/docs/CSS/Using_CSS_transforms" title="/en-US/docs/CSS/Using_CSS_transforms">CSS Transforms の利用</a></li>
  <li><a href="/en-US/docs/translation-value" title="/en-US/docs/translation-value">&lt;translation-value&gt;</a> データ型</li>
  <li>{{ CSS_Reference:Transforms() }}</li>
  <li><a class="external" href="http://paulirish.com/2010/introducing-css3please/#comment-36380">More info</a> on CSS3 Rotation / Matrix Filter issues in the comments on Paul Irish's blog.</li>
  <li>クロスブラウザな 2D の <a class="external" href="http://plugins.jquery.com/project/jquery-transform">transform plugin for jQuery</a></li>
</ul>
このリビジョンへ戻す