这篇文章不讲述层叠上下文之间的显示顺序,而是探究在一个父层叠上下文上,子元素的显示顺序(子元素不会产生新的层叠上下文)。相同的显示等级需要考虑先来后到原则。因此本次只考虑不同的显示等级,以背景色的方式。查看覆盖情况得出显示等级。
第一等
position为非static
第二等
display:inline/inline-block
flex容器的子项
第三等
float:left/right
第四等
display:block
冲突情况
当display:inline-block和float:left/right同时存在时,显示等级为第三等,是由于inline-block失效造成的。
父元素与子元素等级不同时的显示顺序
第一个:父元素第一等,子元素第四等。第二个父元素第四等,子元素第一等
第二个的子元素显示在第一个的子元素上方。
第一个:父元素第二等,子元素第四等。第二个父元素第四等,子元素第一等
第二个的子元素显示在第一个的子元素上方
第一个:父元素第二等,子元素第四等。第二个父元素第四等,子元素第三等
第一个的子元素显示在第二个的子元素上方
第一个:父元素第四等,子元素第一等。第二个父元素第一等,子元素第四等。
第二个的子元素显示在第二个子元素的上方
结论:子元素的显示等级由子元素本身和父元素的显示等级决定,如果子元素的显示等级比父元素的显示等级高,则子元素的显示等级为自身的显示等级,如果子元素的显示等级比父元素的显示等级低,则子元素的显示等级为该层叠上下文下,等级最高的父元素的显示等级。