- From: trchen1033 via GitHub <sysbot+gh@w3.org>
- Date: Mon, 06 Nov 2017 17:03:57 +0000
- To: public-css-archive@w3.org
trchen1033 has just created a new issue for https://github.com/w3c/csswg-drafts:
== [css-transform] 3D context penetration ==
Explainer document: https://docs.google.com/document/d/1FIQW9qVPbZxn0pifFOXWWK0-7fXrjlSeYeZN7wHmIHo
Excerpt from the explainer:
3D rendering contexts are ill-defined for certain DOM trees where containing block and stacking context disagree. Even in cases that are well-defined, the definition in TR and ED differ, and the actual 3D sorting behavior is inconsistent across vendors.
Consider the following example:
<div id=root style=”transform-style:preserve-3d;”>
<div style=”transform-style:preserve-3d; position:absolute; transform:translateZ(2px)”>A</div>
<div id=isolate style=”isolation:isolate;”>
<div style=”transform-style:preserve-3d; position:absolute; transform:translateZ(1px)”>B</div>
<div style=”transform-style:preserve-3d; position:absolute; transform:translateZ(3px)”>C</div>
</div>
</div>
What should be the stacking order between A, B, and C? B and C are in one stacking context (induced by the “isolation:isolate” property), and A is in another.
According to the ED spec, the 3D context is defined by the nearest containing DOM ancestor of an element with a flat used value of transform-style. In addition, certain other styles force grouping, which means they also force the used value of transform-style to flat. Since isolation (and all other stacking context-inducing properties) are grouping properties, the element with id “isolate” above induces a 3D rendering context for B and C, and A lives in its own independent 3D rendering context.
However, this leaves the accumulated to-screen matrix of B and C ill-defined, because the ED spec also requires computing the accumulated 3D transform matrix by multiplying ancestor matrices along the containing block chain. This leaves the matrices for B and C ill-defined, because the condition in step 4 of the algorithm (stop at the 3D rendering context root) never occurs, as “isolate” is not in the containing block chain of B or C.
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/1944 using your GitHub account
Received on Monday, 6 November 2017 17:04:37 UTC