メモログ

塵が積もって山とならないメモのログ

CSS Transforms: 3D rendering context (transform-style)

CSS Transforms: (3D/perspective) - メモログの続きで3d rendering contextについて。CSS TransformsのExample7から9を紹介するだけという内容。

Example7のサンプルと、Example8のサンプル。 両者の違いは、後者はtransform-style:preserve-3dが指定されていて、青とライムの要素が3D rendering contextの中にいるということ。2Dの場合でも、perspectiveの効果で長方形が台形状に描かれるけど、3Dでのレンダリングのような奥行きの空間は存在しない。台形状に描かれているだけ。

なので、前者の2Dの場合は、台形状の要素(青)を親に持つ要素(ライム)が、rotateX(+transform-origin)による変換で青より短い台形のように描かれる。3Dの場合は、奥行きの空間が存在して、青の要素はY軸方向に回転している(横回転)。ライムの要素はそこからさらにX軸方向に回転する(縦回転)。

Example9では、ここからさらに「交差(intersect)」の状態を例示している。 3Dの場合は、奥行きの空間が存在するので、要素のZ軸方向への傾き方によって、要素が交差するという現象が発生する。ブラウザで実際に試してみたら、要素の左半分だけ親要素の後ろ側にいかなかったですけど(ある回転角度で全部後ろ側にいく)。

そんな感じ。3D redering contextは描画する上で奥行きの空間が必要な場合、必要となる。一つの要素をY軸方向に回転させたいだけの場合は、3D rendering contextがなくてもperspectiveの指定だけでそれっぽくなる。

CSS Transforms 関連記事