以下情况会生成stacking context:
-
html
中的根元素 -
position
属性值为"absolute"
或者"relative"
并且z-index
属性值不是"auto"
的元素 -
position
属性值为"fixed"
或者"sticky"
(sticky是设置手机浏览器的) 的元素 - 父元素是
flex
布局并且z-index
的值不是"auto"
的元素 -
opacity
(透明度) 小于1
的元素 -
"mix-blend-mode"
属性值不是"normal"
的元素 - 有以下任何一个属性并且属性值不是
"none"
的元素:
- transform
- filter
- perspective
- clip-path
- mask / mask-image / mask-border
- 属性
isolation
值为"isolate"
的元素 -
"-webkit-overflow-scrolling"
值为"touch"
的元素 - element with a
will-change
value specifying any property that would create a stacking context on non-initial value
在stacking contexts中, 子元素按照同样的规则进行stack. 值得注意的是, z-index
值只在该元素的父元素中有意义. 子级stacking context会被自动地按照一个父级stacking context的独立单元对待.
stacking context的层级是html
元素层级的一个子集, 因为只有一些元素会创建stacking context. 我们说不会创建自己stacking context的元素会父级stacking context包含.
翻译自 The stacking context
参考 层叠上下文