CSS z-index属性层重叠顺序
作者:
WangMin
格言:努力做好自己喜欢的每一件事
对于所有定位,最后都不免遇到两个元素试图放在同一位置上的情况。显然,其中一个必须遮住另一个。但是如何控制哪个元素放在上层,这就出现了z-index这个属性。
z-index属性的含义
一个元素在文档中的层叠顺序,用于确认元素在当前层叠上下文中的层叠级别。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
- z-index的属性值越高越靠前。
- 元素可拥有负的 z-index 属性值。
- z-index 跟具体数字。
- z-index的数值不跟单位。

如上图所示,这个属性的名字由坐标系统得来,其中从左向右是x轴,从上到下是y轴。从屏幕到用户是z轴。在这个坐标系中,较高z-index值的元素比较低z-index值的元素离用户更近,也就是说较高z-index值的元素最先呈现在用户的视野,这会导致较高z-index值的元素覆盖其他元素,这也称为堆叠或叠放。
z-index 属性使用条件
z-index 在设置了position属性(position不为static的元素)的元素条件下使用。通常我们让不同的对象盒子以不同顺序重叠排列,我们就要使用 z-index 样式属性。
接下来从最简单的不使用z-index的情况开始学习z-index 属性。
z-index应用案例
1)对于同级元素
层叠级别大的显示在上面,级别小的显示在下面,也就是z-index属性值越大的元素在z-index属性值小的元素上面;层叠级别中的两个元素,依据它们在HTML文档流中的顺序,写在后面的将会覆盖前面的。代码如下:
<div class="box">box
<div class="same one">one</div>
<div class="same two">two</div>
</div>
.box{
width:350px;
height:350px;
color: #fff;
background:brown;
position: relative;
}
.box>.same{
width:250px;
height:250px;
position: absolute;
}
.box>.one{
background:burlywood;
top:30px;
left:30px;
}
.box>.two{
background:palegoldenrod;
top:60px;
left: 60px;
}
情况一:
在还没有给设置了 position: absolute; 属性的元素 .one 和元素 .two 设置 z-index 属性的情况下:

从上图可以看出元素 .two 覆盖在元素 .one 上面,这是因为依据它们在HTML文档流中的顺序,写在后面的元素将会覆盖前面的元素。
情况二:
如果我们想要元素 .two 覆盖在元素 .one 下面,就要给 .one 设置z-index属性,情况如下:

在这里可能就有小伙伴发现我并没有给元素 .two 设置z-index属性,元素 .two 为什么会覆盖在元素 .one 下面。以下我来说明以下原因:
- IE6/7下position不为static,且z-index不存在时z-index为0,除此之外的浏览器z-index为auto。
- z-index为auto的元素不参与层级关系的比较,由向上遍历至此且z-index不为auto的元素来参与比较。
以上我们可以得出结论:在这里元素 .two 的z-index的属性值为auto不与元素 .one 的z-index的属性值进行比较,而元素 .one 的z-index的属性值在HTML文档流中最高,所以元素 .two 覆盖在元素 .one 下面。
情况三:
如果我们给元素 .two 也加上 z-index:1; ?结果得到元素 .two 覆盖在元素 .one 上面。那是因为:一旦z-index值相等,情况就和都不设置z-index值一样了。
情况四:
- 在父元素
.box添加z-index:10,在元素.two和元素.one添加z-index:2;, 这样理论上父元素就会在上面(父元素.box覆盖元素.two和元素.one),但是实际情况跟情况一的效果是一样的,结果没有变! 如下:

- 把两个子元素的z-index值同时设置为-2;父元素不设置z-index属性。结果如下:

从上图我们只看到父元素 .box,并不是元素 .two和元素 .one不见了,而是被父元素 .box遮住了。 这说明在父元素和子元素之间还是可以作比较的!!!只是需要我们把子元素的z-index值设为负数。
2) 对于不同级元素
元素的显示顺序依据父级元素的层叠级别(z-index值)来决定,与自身的层叠级别(z-index值)无关。
有两个div盒子,元素 .two和元素 .one在元素.box1 里,元素.three 在元素 .box2 里
<div class="box box2">box
<div class="same one">one</div>
<div class="same two">two</div>
</div>
<div class="box box2">box
<div class="same three">three</div>
</div>
元素.box1和元素 .box2设置z-index,那么(元素.box1和元素 .box2)的子元素 (元素 .two、元素 .one、元素.three )以父元素的层叠关系为主。
.box{
width:350px;
height:350px;
color: #fff;
position: relative;
}
.box1{
z-index: 1;
}
.box2{
z-index: 2;
}
.box>.same{
width:250px;
height:250px;
position: absolute;
}
.box>.one{
background:burlywood;
}
.box>.two{
background:palegoldenrod;
top:40px;
left: 40px;
z-index: 20;
}
.box>.three{
background:palegreen;
top: -100px;
left: 80px;
}
元素 .two、元素 .one、元素.three处于不同的div中,不管子元素中是否设置了z-index属性,子元素的层级关系都根据父级的z-index大小来确定,也就是说子元素的层级关系与它们自身的z-index属性值无关。例子中,元素.box1的z-index值(z-index: 1;)小于元素 .box2的z-index值(z-index: 2;),所以元素.three在元素 .two的上面,如下图所示:

z-index的一些理解误区
一般我们会说:z-index属性只有和定位元素(position不为static的元素)一起使用的时候,才起作用,那首先这种说法是错误的,因为在css3中flex盒子的子元素也可以设置z-index属性。
以上仅是个人见解,若有不足之处欢迎在下方评论指出,那就先分享到这里!! 后续继续更新!!
CSS z-index属性层重叠顺序的更多相关文章
- css z-index层重叠顺序
一.z-index语法与结构 z-index 跟具体数字 如:div{z-index:100}注意:z-index的数值不跟单位. z-index的数字越高越靠前,并且值必须为整数和正数(正数的整数) ...
- [HTML/CSS]z-Index层重叠顺序
目录 语法结构 如何使用? 使用案例 总结 语法结构 z-index:具体数字.如:div{z-index:100},注意,后面跟的数字并不带单位.主要应用在div,span等标签的层叠处理. 如何使 ...
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- 深入理解css中position属性及z-index属性
深入理解css中position属性及z-index属性 在网页设计中,position属性的使用是非常重要的.有时如果不能认识清楚这个属性,将会给我们带来很多意想不到的困难. position属性共 ...
- 深入理解css中position属性及z-index属性 https://www.cnblogs.com/zhuzhenwei918/p/6112034.html
深入理解css中position属性及z-index属性 请看出处:https://www.cnblogs.com/zhuzhenwei918/p/6112034.html 在网页设计中,positi ...
- CSS的常用属性
刚开始学习前段的我,还处于初级阶段,一些东西还是会有搞不明白的时候,还是要大家多多理解.今说就一些关于CSS的常用属性吧! 一.CSS常用选择器 CSS选择器应该说是一个非常重要的工具吧,选择器用得好 ...
- css常用样式属性详细介绍
对于初学css的来说,肯定会觉得这么多样式不好记,而且记住了也容易忘,其实刚开始我们不用去记这么多的样式,确实是记了也会忘,刚开始只需记住一些常用的就可以了,然后在慢慢的使用过程当中接触并学习一些高级 ...
- [转] CSS float 浮动属性
http://www.cnblogs.com/polk6/p/3142187.html CSS float 浮动属性 本篇主要介绍float属性:定义元素朝哪个方向浮动. 目录: 1. 页面布局方式: ...
- css 让两个div重叠
做网页的时候在div里放了一个别的网页的天气插件,但是点击了会跳到广告页面的,想去网上找个禁止div点击的方法,可是发现没有,用了js的方法好像也没有成功,后来觉得还是用两个层重叠的方法来阻止点击,虽 ...
- css标签及属性
css标签及属性 HTML引入CSS的方法 1.嵌入式 <style type = “text/css”>要写的样式</style> 2.外联式 <link rel ...
随机推荐
- PostgreSQL 10 文档: 系统表
第 51 章 系统目录 目录 51.1. 概述 51.2. pg_aggregate 51.3. pg_am 51.4. pg_amop 51.5. pg_amproc 51.6. pg_attrde ...
- HTML的总结与回顾(思维导图
- Cobalt Strike 4.0系列教程
https://blog.csdn.net/weixin_45745344/article/details/109279097
- json虽然简单,但这些细节你未必知道
基本介绍 JSON的全称是JavaScript Object Notation,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式,本来是JavaScript的子集,但现在已独立存在于各 ...
- 性能监控平台搭建(grafana+telegraf+influxdb) 及 配置 jmeter后端监听
搞性能测试,可以搭建Grafana+Telegraf+InfluxDB 监控平台,监控服务器资源使用率.jmeter性能测试结果等. telegraf: 是一个用 Go 编写的代理程序,可收集系统和服 ...
- Git Cherry-pick使用
概述 无论项目大小,当你和一群程序员一起工作时,处理多个 Git 分支之间的变更都会变得很困难.有时,与其把整个 Git 分支合并到另一个分支,不如选择并移动几个特定的提交.这个过程被称为 " ...
- Blazor前后端框架Known-V1.2.12
V1.2.12 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. Gitee: https://gitee.com/known/Known Git ...
- 春秋云镜像-CVE-2022-0788
准备: 攻击机:win10. 靶机:春秋云镜像-CVE-2022-0788. 写这个的时候在网上想查找下该漏洞的利用方式,没有找到相关的资料,因此记录下自己通过这个靶场的poc与exp. curl ' ...
- SpringBoot 测试实践 - 1:常用的工具
我自己接触到的一些商业或是开源的基于 SpringBoot 项目,它们大部分是没有测试代码的,test 文件夹只有脚手架初始化生成的那个测试类,跟不同的开发聊到这个话题,发现他们中的大部分没有写测试的 ...
- Solution -「洛谷 P5610」「YunoOI 2013」大学
Description Link. 区间查 \(x\) 的倍数并除掉,区间查和. Solution 平衡树. 首先有个基本的想法就是按 \(a_{i}\) 开平衡树,即对于每个 \(a_{i}\) 都 ...