层叠上下文、层叠等级、层叠顺序、z-index

2020-07-10  本文已影响0人  啊哈_57ea

元素Z轴上下位置规则:

1、首先看是否处于同一层叠上下文, 如果是 ------看层叠等级(等级越大、越上面)。 如果不是 ------- 先比较它们所处的层叠上下文的层叠等级。
2、当两个元素层叠等级相同、层叠顺序相同时、 在Dom结构中 后面的元素层叠等级在前面元素之上。

3、层叠等级的比较只有在当前层叠上下文元素中才有意义。不同层叠上下文中比较层叠等级是没有意义的

层叠上下文:

1、HTML中的根元素<html></html>本身就具有层叠上下文,称为“根层叠上下文”。

2、普通元素设置position属性为static值并设置z-index属性为具体数值,产生层叠上下文。

3、CSS3中的新属性也可以产生层叠上下文。

层叠顺序:

层叠顺序”(stacking order)表示元素发生层叠时按照特定的顺序规则在Z轴上垂直显示。

不考虑CSS3的情况下,当元素发生层叠时,层叠顺讯遵循上面图中的规则

注意:

左上角"层叠上下文background/border"指的是层叠上下文元素的背景和边框。

inline/inline-block元素的层叠顺序要高于block(块级)/float(浮动)元素。(为什么inline/inline-block元素的层叠顺序要高于block(块级)/float(浮动)元素? 就像像border/background属于装饰元素的属性,浮动和块级元素一般用来页面布局,而网页设计之初最重要的就是文字内容,所以在发生层叠时会优先显示文字内容,保证其不被覆盖。)

单纯考虑层叠顺序,z-index: auto和z-index: 0在同一层级,但这两个属性值本身是有根本区别的。

CSS3中的属性对层叠上下文的影响

CSS3中出现了很多新属性,其中一些属性对层叠上下文也产生了很大的影响。如下:

父元素的display属性值为flex|inline-flex,子元素z-index属性值不为auto的时候,子元素为层叠上下文元素;

元素的opacity属性值不是1;

元素的transform属性值不是none;

元素mix-blend-mode属性值不是normal`;

元素的filter属性值不是none;

元素的isolation属性值是isolate;

will-change指定的属性值为上面任意一个;

元素的-webkit-overflow-scrolling属性值设置为touch。

上一篇下一篇

猜你喜欢

热点阅读