原森情報技術研究所 WEBコンテンツ企画・制作・運営・サポート / 兵庫県 神戸市 明石市 /

要素内の子要素の表示指定

transform-style / 3D変形する要素内の子要素の表示指定

translateのサンプル

例1

テスト1

perspective:500px
白枠ホバーで青枠が90degY軸回転

説明

例2

テスト2

perspective:500px
白枠ホバーで青枠が90degY軸回転

説明

例3

テスト3

perspective:500px
白枠ホバーで青枠が90degY軸回転

説明

例4

テスト4

perspective:500px
白枠ホバーで青枠が90degY軸回転

説明

例4b

テスト4

例4で青枠にoverflow:hidden指定

説明

サンプル例1の内容

【例1】白枠をマウスホバーすると、青色のdivが90degY軸回転します。
通常は90deg回転すると、見えなくなりますが、perspective:500pxを指定しているので、90degY軸回転した青枠も角度がついてなんとか見える状態になっています。
黄枠は青の子で何も指定していないので、青に従って同じように回転します。

例1へ

サンプル例2の内容

【例2】黄枠に60degを指定しているので、青枠内で60degY軸回転した見た目で表示されています。
transform-style を指定していないので default の flat となり、マウスホバー時、青枠が90degY軸回転した時には、 青枠内にとどまっている見た目になります。(何も指定してない例1と同じ)
イメージとしては、青枠がテレビ本体で、黄色はそのモニターに映ってる絵という感じになります。テレビを回転させても、中の映像は平面なのでテレビ画面から飛び出したりはしないという雰囲気です。

例2へ

サンプル例3の内容

【例3】青枠に transform-style : preserve-3d を指定しているので、黄枠の60degが立体になっています。(回転の中心がそれぞれボックス中央なので、黄枠は中央あたりで青枠を突き抜けてる)さらにマウスホバーで青枠が90deg回転すると黄色枠は青枠の面から60deg回転しているので面を突き抜け交差するように表示されます。
※IE10で確認すると、未サポートのため、例2と例3は同じ結果になります。

例3へ

サンプル例4の内容

【例4】青枠に transform-style : preserve-3d を指定。黄枠に Y軸-30deg Z軸-30deg を設定してみた例です。立体的に黄色が突き抜けているような感じになります。
この状態で、青色divに overflow : hidden を指定してみたのが例4bです。
hidden 指定を追加すると、z軸方向へ突き抜けず、平面に張り付いた形になりました。
※IE10は、未サポートなので、青枠の面に張り付いた状態になります。

例4へ

考察

IE10が未サポートなので、せっかくの [transform-style : preserve-3d] が絵に描いた餅状態なのが残念です。
これが使えれば、立体の回転などで大活躍できるのですが、仕方がないので、各面を自分で個別に配置し、個別に回転などをしなければいけない状態となっています。
原森webでの活用したかったけど仕方がないので別のやり方をした事例
→ [rgba(10進) rgb(16進)変換ツールの色サンプルの回転処理等]

要素内の子要素の表示指定プロパティ

transform-style
指定した要素の子要素が、3D空間の中でフラットに描画されるか、立体的に描画されるかを指定。値は flat or preserve-3d 。初期値=flat。
Internet Explorer と Opera は未サポート。

ページトップへ

top > css3研究 > 
3DTransform時の要素内の子要素の表示指定

表示位置移動

translate(x) / x…[length]
translate(x,y) / x,y…[length]
translate(x) = translate(x,x)

translate3d(x,y,z) / x,y,z…[length]

translateX(x) / x…[length]
translateX(x) = translate(x,0)

translateY(y) / y…[length]
translateY(y) = translate(0,y)

translateZ(z) / z…[length]
translateZ(z) = translate3d(0,0,z)

拡大・縮小

scale(x) / x…[数量]
scale(x,y) / x,y…[数量]
scale(x) = scale(x,x)

scale3d(x,y,z) / x,y,z…[数量]

scaleX(x) / x…[数量]
scaleX(x) = scale(x,1) = scale3d(x,1,1)

scaleX(x) / x…[数量]
scaleX(x) = scale(x,1) = scale3d(x,1,1)

scaleY(y) / y…[数量]
scaleY(y) = scale(1,y) = scale3d(1,y,1)

scaleZ(z) / z…[数量]
scaleZ(z) = scale3d(1,1,z)

回転

rotate(a) / a…[角度]
aが正の値なら時計回り

rotate3d(x,y,z,a) / x,y,z…[数量] a…[角度]

rotateX(a) / a…[角度]
rotateX(a) = rotate3d(1,0,0,a)

rotateY(a) / a…[角度]
rotateY(a) = rotate3d(0,1,0,a)

rotateZ(a) / a…[角度]
rotateZ(a) = rotate3d(0,0,1,a)

傾斜変形

skew(ax [,ay]) / ax,ay…[角度]
ay省略時はaxのみの変形。※skewは非標準となった

skewX(a) / a…[角度]

skewY(a) / a…[角度]

行列指定

matrix(a , c , b , d , tx , ty)
線形 transform a , b , c , d …[数量](Gecko系のみlength可) 移動量 tx , ty …[length]

matrix3d(a1 , b1 , c1 , d1 , a2 , b2 , c2 , d2 , a3 , b3 , c3 , d3 , a4 , b4 , c4 , d4)
線形 transform a1 , b1 , c1 , d1 , a2 , b2 , c2 , d2 , a3 , b3 , c3 , d3 , d4 …[数量] 移動量 a4 , b4 , c4 …[length]

カテゴリMENU
お問い合せ