変形

perspective

perspective は、子の要素を 3D で回したり動かしたりしたときに、どのくらい離れた所から見ているかを決め、遠近感を付けます。値が小さいほど近くから見ることになり、手前は大きく、奥は小さく見えます。

構文

none | <length [0,∞]>

プレビュー

3D
プリセット
右下の角をドラッグするとサイズを変えられます

コード

.box {
  perspective: 300px;
}

.box > :nth-child(2) {
  transform: rotateY(50deg);
}

コントロール

perspective300px
3D

解説

値の意味

  • none:初期値です。遠近感を付けません。子を縦の軸で回しても、横に縮んで見えるだけです。
  • 長さ:見ている目から、要素の面(奥行き 0 の面)までの距離です。100px ほどの小さな値だと強くゆがみ、1000px ほどの大きな値だとほとんど平らに見えます。負の値は書けず、1px より小さい値は 1px として描かれます。

気をつけること

  • 効くのは、書いた要素の子(と、その中で 3D のまま描かれる子孫)の 3D の変形です。書いた要素そのものの transform には効きません。1 つの要素だけに遠近感を付けたいときは、transform: perspective(300px) rotateY(50deg) のように perspective() 関数を先頭に書きます。
  • どこから見るか(消失点)は perspective-origin で決めます。初期値は要素の真ん中です。
  • none 以外にすると、transform と同じように、新しい重なりの文脈(stacking context)を作り、position: fixed の子もこの要素を基準に置かれるようになります。

このページのプレビューでは、箱の中に点線の枠(1 番目の子)と板(2 番目の子)を重ね、補助の宣言で板を縦の軸で 50 度回しています(transform: rotateY(50deg))。

コメント