およびその他のレンダリング関連のtransform-*
プロパティはopacity
、CSS の継承の意味で「継承」しません。代わりに、すべての子孫を含む要素全体に視覚的な変更を適用します。これらの子孫に次のようなものを適用transform: none;
しても、目に見える効果はありません。これらの要素はそれ自体では変換されず、親要素とともに変換されることを意味するだけです — スタイルを「継承」しているからではなく、パーツであるためです。その外観の。
子孫の親要素の変換を視覚的に「元に戻す」(つまり、変換されていないように見せる) 唯一の方法は、この変換の結果が特定の視点から見た場合と同じように見えるように具体的に変換することです。まったく変換せずに見てください。これを可能にするには、変換された要素自体と、指定された要素のすべての中間の祖先がtransform-style: preserve-3d
. 必要な「補正」変換は、結果の 3D シーンから計算するか、試行錯誤によって変換値を調整することによって構築できます。
.items{
...
transform: translate3d(-51px, 11px, 29px) rotateX(-45deg);
transform-origin: 50% 100% 0px;
}
( JSfiddleを参照)。
残念ながら、この回避策は と互換性がありません。これは、 (他のいくつかのプロパティoverlow:hidden
と共に) 効果的に を削除するためです。したがって、変換された要素のオーバーフロー部分をクリップし、同時にその部分の変換を「元に戻す」必要がある場合、適切な唯一の解決策は、この部分が子孫にならないようにコードを編成することです。変換された要素の。transform-style: preserve-3d