translateZ()

translateZ()CSS関数で、三次元空間の z 軸に沿って、すなわち閲覧者に近づいたり遠ざかったりするように要素を移動させます。その結果は <transform-function> データ型となります。

試してみましょう

この変換は、 <length> によって定義され、要素または要素がどれだけ内側または外側に移動するかを指定します。

上記のデモでは、perspective: 550px; (三次元空間を作るため) と transform-style: preserve-3d; (立方体の 6 つの面である子を三次元空間に配置) を立方体に設定しました。

Note: translateZ(tz) は、translate3d(0, 0, tz) と等価です。

構文

translateZ(tz)

tz

変換ベクトルの z 成分を表す<length>。正の値では要素が閲覧者に向かって移動し、負の値で移動すると遠ざかります。

ℝ^2 のデカルト座標 ℝℙ^2 の同次座標 ℝ^3 のデカルト座標 ℝℙ^3 の同次座標
この変換は 3 次元空間に適用されます。平面上では表現できません。 この変換は ℝ^3 の線形変換ではなく、デカルト座標系の行列では表現できません。 1 0 0 0 0 1 0 0 0 0 1 t 0 0 0 1

この例では、2 つのボックスが作成されます。1 つはページ上で通常の位置に配置され、座標変換されることはありません。もう一つは、遠近法を適用して三次元空間を作り、ユーザーの方に移動させます。

HTML

<div>Static</div>
<div class="moved">Moved</div>

CSS

div {
  position: relative;
  width: 60px;
  height: 60px;
  left: 100px;
  background-color: skyblue;
}

.moved {
  transform: perspective(500px) translateZ(200px);
  background-color: pink;
}

ここで重要なのは "moved" というクラスで、その機能を見てみましょう。まず、 perspective() 関数は、 z=0 の位置にある平面 (要するに画面の表面) の相対位置に閲覧者を位置付けます。 500px という値は、ユーザーが z=0 にある画像の 500 ピクセル「前」にいることを意味します。

次に、translateZ() 関数は、要素を画面からユーザーの方に「外向きに」200 ピクセル移動します。 これは、二次元のディスプレイ上で見たときに要素を大きく見せる、または VR ヘッドセットや他の三次元ディスプレイ機器を使用して見たときに要素をより近く見せるという効果があります。

なお、 perspective() の値が translateZ() の値よりも小さい場合、例えば transform: perspective(200px) translateZ(300px); の場合、変換された要素はユーザーのビューポートよりも手前にあるため、表示されません。 perspective と translateZ の値の差が小さければ小さいほど、ユーザーは要素に近づき、変換された要素は大きく見えます。

結果

仕様書

Specification
CSS Transforms Module Level 2
# funcdef-translatez

ブラウザーの互換性

BCD tables only load in the browser

関連情報