z-index part1

](http://upload-images.jianshu.io/upload_images/4168720-816e86b9d93ea96e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • 如果定位元素没有发生嵌套
  1. 后来居上的准则;
  2. 哪个大哪个上
  • 如果定位元素发生嵌套
  1. 祖先优先原则 (前提: z-index 不是auto)


    Paste_Image.png

层叠上下文和层叠水平

  • 页面根元素天生具有层叠上下文(stacking context)

  • z-index值为数值的定位元素也具有层叠上下文

  • 层叠上下文中的每个元素都有一个层叠水平(stacking level), 决定了同一个层叠上下文中元素在z轴的显示顺序

  • 层叠水平和z-index不是同一个东西, 普通元素也有层叠水平

  • 层叠上下文可以嵌套, 组合成一个分层次的层叠上下文。
  • 每个层叠上下文和兄弟元素独立: 当进行层叠变化或渲染的时候,只需要考虑后代元素。
  • 每个层叠上下文是自成体系的: 当元素的内容被层叠后,整个元素被认为是在覆层的层叠顺序中

层叠顺序

Paste_Image.png
Paste_Image.png
Paste_Image.png

背景色覆盖是层叠顺序block< inline-block,文字覆盖是后来居上 (文字是inline, 跟inline-block是同一个层叠水平)


Paste_Image.png

层叠上下文

  • 定位元素默认z-index: auto, 可以看成z-index:0
    元素有了定位,就会覆盖其他元素,就是因为z-index: auto比 inline-block更高
  • z-index不为auto的定位元素会创建层叠上下文;
<div class="box">
   ![](img.png)
</div>

此时图片和box 属于同一个层叠上下文 (根元素), 所以图片在背景之上, 于是如果给图片加上z-index:-1,它就到box下面了。


Paste_Image.png

Paste_Image.png

但是当box 加上z-index:0的时候,它就创建了层叠上下文,box就变成了zindex的容器,于是就又是img和background相比了,所以图片在上


Paste_Image.png
  • z-index层叠顺序的比较止步于父级层叠上下文
Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.z-index基础 z-index属性指定了元素及其子元素的[z顺序],而[z顺序]可以决定当元素发生覆盖的时...
    徐国军_plus阅读 11,503评论 1 6
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 第一节:z-index基础 较大的z-index会覆盖较小的那个z-index元素 z-index:auto 默认...
    胖鱼尾巴阅读 4,668评论 0 0
  • 1.z-index简介 (1) 概念 z-index属性指定了元素与元素之间的z轴上的顺序,而z轴决定元素之间发生...
    Bennt阅读 24,153评论 2 10
  • z-index 与 css 定位属性 z-index 只对定位元素有作用。 如果定位元素z-index没有发生嵌套...
    soojade阅读 4,472评论 0 2