Stacking Context是指对於HTML元素而言,有一个面向使用者的假想轴(z轴),
而元素会依据设定好的属性,沿着轴进行排列顺序,使元素产生堆叠。
The stacking context is a three-dimensional conceptualization of HTML elements along an imaginary z-axis relative to the user, who is assumed to be facing the viewport or the webpage. HTML elements occupy this space in priority order based on element attributes.
在 27. 解释 CSS 的 BFC(Block Formatting Context) 有提到,页面里的元素,预设会形成Block Formatting Context,并依照BFC的性质进行排版。
比较两者的话,可以想成对使用者而言:
特定元素会受到z-index
值而影响堆叠顺序,原因是这些元素形成了Stacking Context。
... the rendering order of certain elements is influenced by their z-index value. This occurs because these elements have special properties which cause them to form a stacking context.
<html>
absolute
/ relative
且 设定z-index
fixed
/ sticky
flex
/ grid
container 的 child element 且 设定z-index
transform
position
不为预设值(static
)时有效。可以把 z-index 的值想成是渲染顺序:
先渲染1,然後渲染2,所以较晚渲染(数字较大)的元素会越靠上/靠近使用者。
这里借用MDN的范例:
层级关系:
z-index:5;
z-index:2;
z-index:4;
z-index:6;
z-index:1;
z-index:3;
Stacking Context在不同层级的间各自独立
→ 意思是,不同层级的元素,z-index
值并不互相影响。
以上面设定的顺序而言,并不会从数字最小的div5开始渲染,而是从div1,2,3取最小值开始进行渲染。
没有产生Stacking Context的元素,会被父元素的Stacking Context同化(assimilated)。
→ 要注意**z-index
的属性不会继承**,以范例而言,div4如果没有设定z-index
,就是0
,并不会是从div3继承4
。
因此可以推导出渲染顺序(堆叠顺序):
div2 (2) -> div3 (4) -> div5(4.1) -> div6(4.3) -> div4(4.6) -> div1(5)
【如内文有误还请不吝指教>< 并感谢阅览至此的各位:D 】
参考资料
<<: 【从零开始的Swift开发心路历程-Day30】认识GCD多执行绪Part3(完)
有点受不了没什麽演算法底子还要掰出 Leetcode 文章QQ 今天来记录当初学习的过程和後来的想法...
tags: ItIron2021 Javascript 前言 对点进来的你说一下,恭喜你撑到今天! ...
上架google play要先跟google缴交$25美元终生上架费用@@如果有钱有设备也可以申请a...
https://leetcode.com/problems/container-with-most...
阵列操作介绍 (下篇) 介绍四种阵列运用: map filter find findlndex 3....