Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(790)

Unified Diff: third_party/WebKit/Source/core/paint/README.md

Issue 1798263002: Rename isTreatedAsOrStackingContext to isStacked (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix windows compile Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/paint/README.md
diff --git a/third_party/WebKit/Source/core/paint/README.md b/third_party/WebKit/Source/core/paint/README.md
index 049c92e457f758de557398e3fa9ed3476700f577..efeda07b50c67b96ed5537d857bb7a2e9963948a 100644
--- a/third_party/WebKit/Source/core/paint/README.md
+++ b/third_party/WebKit/Source/core/paint/README.md
@@ -2,6 +2,59 @@
This directory contains implementation of painters of layout objects.
+## Stacked contents and stacking contexts
+
+This chapter is basically a clarification of [CSS 2.1 appendix E. Elaborate description
+of Stacking Contexts](http://www.w3.org/TR/CSS21/zindex.html).
+
+According to the documentation, we can have the following types of elements that are
+treated in different ways during painting:
+
+* Stacked elements: elements that are z-ordered in stacking contexts.
+
+ * Stacking contexts: elements with non-auto z-indices.
+
+ * Elements that are not real stacking contexts but are treated as stacking
+ contexts but don't manage other stacked elements. Their z-ordering are
+ managed by real stacking contexts. They are positioned elements with
+ `z-index: auto` (E.2.8 in the documentation).
+
+ They must be managed by the enclosing stacking context as stacked elements
+ because `z-index:auto` and `z-index:0` are considered equal for stacking
+ context sorting and they may interleave by DOM order.
+
+ The difference of a stacked element of this type from a real stacking context
+ is that it doesn't manage z-ordering of stacked descendants. These descendants
+ are managed by the parent stacking context of this stacked element.
+
+ "Stacked element" is not defined as a formal term in the documentation, but we found
+ it convenient to use this term to refer to any elements participating z-index ordering
+ in stacking contexts.
+
+ A stacked element is represented by a `PaintLayerStackingNode` associated with a
+ `PaintLayer`. It's painted as self-painting `PaintLayer`s by `PaintLayerPainter`
+ by executing all of the steps of the painting algorithm explained in the documentation
+ for the element. When painting a stacked element of the second type, we don't
+ paint its stacked descendants which are managed by the parent stacking context.
+
+* Non-stacked pseudo stacking contexts: elements that are not stacked, but paint
+ their descendants (excluding any stacked contents) as if they created stacking
+ contexts. This includes
+
+ * inline blocks, inline tables, inline-level replaced elements
+ (E.2.7.2.1.4 in the documentation)
+ * non-positioned floating elements (E.2.5 in the documentation)
+ * [flex items](http://www.w3.org/TR/css-flexbox-1/#painting)
+ * [grid items](http://www.w3.org/TR/css-grid-1/#z-order)
+ * custom scrollbar parts
+
+ They are painted by `ObjectPainter::paintAllPhasesAtomically()` which executes
+ all of the steps of the painting algorithm explained in the documentation, except
+ ignores any descendants which are positioned or have non-auto z-index (which is
+ achieved by skipping descendants with self-painting layers).
+
+* Other normal elements.
+
## Painters
## Paint invalidation
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintPhase.h ('k') | third_party/WebKit/Source/core/paint/SVGForeignObjectPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698