z-index 基础详解
关于z-index网上其实有不少博文,写得也不错,不过有些帖子比较旧,而IE也已经更新到了IE11了,所以还是重新总结一下。由于 z-index 的属性表现和层级有关,有些特点在某些层级下才表现出来,所以按层次来举例子梳理比较清楚。
1、当不设置 position 或者设置 position 的值为 static 时,文档按照普通流顺序,后面的元素会覆盖前面的元素。内容方面则有区别,在chrome,opera,Firefox,IE8+中并不会覆盖内容部分(不过暂时对这个现象的本质不是很理解),而IE6,IE7则全部覆盖;
<div class="container">
<div class="div_1">
<p>未设置position的div_1</p>
</div>
<div class="div_2">
<p>div_2同样未设置position</p>
</div>
</div>
.div_1,.div_2{
width: 100px;
height:100px;
}
.div_1{
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
}
.div_2{
background:#00ff00;
border:10px solid #00ff00;
margin-top: -70px;
color:#000;
}




2、只有 position 的值为 absolute,relative,fixed 的时候 z-index 才有效,设置了有效 z-index 值的元素会创建一个层叠上下文(Stacking Contexts);
<div class="container">
<div class="div_1">
<p>设置position为relative的div_1</p>
</div>
<div class="div_2">
<p>div_2依然未设置position</p>
</div>
</div>
.div_1{
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
position:relative;
}


<div class="div_1">
<p>设置position为relative的div_1</p>
</div>
<div class="div_2">
<p>div_2依然未设置position为relative</p>
</div>
CSS:
.div_1,.div_2{
width: 100px;
height:100px;
font-family: arial;
}
.div_1{
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
position:relative;
z-index: -1;
}
.div_2{
background:#00ff00;
border:10px solid #00ff00;
margin-top: -70px;
color:#000;
}


<div class="wrap">
<div class="div_1">
<p>设置position为relative的div_1</p>
</div>
<div class="div_2">
<p>div_2依然未设置position为relative</p>
</div>
</div>
CSS:
.wrap {
position: relative;
}
.div_1 {
background: #ffff00;
border: 10px solid #ffff00;
color: #0000ff;
position: absolute;
z-index: -1;
}
.div_2 {
background: #00ff00;
border: 10px solid #00ff00;
margin-top: 0px;
color: #000;
}
chrome,Firefox,opera,IE8+表现如下:

IE6,IE7表现如下:

.div_2 {
background: #00ff00;
border: 10px solid #00ff00;
margin-top: 0px;
color: #000;
*zoom:;/*触发div_2的hasLayout属性*/
}
<div class="wrap_1">
<div class="div_1">
<p>设置position为relative,z-index为-1的div_1</p>
</div>
</div>
CSS:
.wrap_1{
width: 200px;
background-color: #999;
}
.div_1{
width: 100px;
height:100px;
font-family: arial;
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
position: relative;
z-index: -1;
}
chrome,Firefox,opera,IE6+表现如下:

chrome审查元素后可以看到 div_1 已经隐藏到 wrap_1 后面去了:

此时设置 wrap_1 的 position 属性为 relative:
.wrap_1{
position: relative;
width: 200px;
background-color: #999;
}
此时chrome,Firefox,opera,IE8+表现不变,而IE6,IE7的表现为:

双层节点结构基本特点1可知,因为此时 wrap_1被默认设置 z-index 为0,子级元素 div_1 表现出双层节点结构基本特点2。显式设置 wrap_1 的 z_index 为0会在chrome,Firefox,opera,IE8+下有同样的显示效果;
<div class="wrap_1">
<div class="div_1">
<p>设置position为relative,z-index为10的div_1</p>
</div>
</div>
<div class="wrap_2">
<div class="div_2">
<p>div_2设置position为relative,z-index为100</p>
</div>
</div>
CSS:
.wrap_1{
position: relative;
z-index:;
}
.wrap_2{
position: relative;
z-index:;
}
.div_1,.div_2{
width: 100px;
height:100px;
font-family: arial;
}
.div_1{
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
position: relative;
z-index:;
}
.div_2{
background:#00ff00;
border:10px solid #00ff00;
margin-top: -70px;
color:#000;
position: relative;
z-index:;
}


<div class="wrap_1">
<div class="div_1">
<p>设置position为relative,z-index为2的div_1</p>
</div>
</div>
<div class="wrap_2">
<div class="div_2">
<p>div_2设置position为relative,z-index为1</p>
</div>
</div>
.wrap_1{
position: relative;
}
.wrap_2{
position: relative;
}
.div_1,.div_2{
width: 100px;
height:100px;
font-family: arial;
}
.div_1{
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
position: relative;
z-index:;
}
.div_2{
background:#00ff00;
border:10px solid #00ff00;
margin-top: -70px;
color:#000;
position: relative;
z-index:;
}




<div class="wrap_1">
<div class="div_1">
<p>设置position为relative,z-index为100的div_1</p>
</div>
</div>
<div class="wrap_2">
<div class="div_2">
<p>div_2设置position为relative,z-index为10</p>
</div>
</div>
.wrap_1{
position: relative;
z-index:;
}
.wrap_2{
position: relative;
}
.div_1,.div_2{
width: 100px;
height:100px;
font-family: arial;
}
.div_1{
background:#ffff00;
border:10px solid #ffff00;
color:#0000ff;
position: relative;
z-index:;
}
.div_2{
background:#00ff00;
border:10px solid #00ff00;
margin-top: -70px;
color:#000;
position: relative;
z-index:;
}




z-index 基础详解的更多相关文章
- javaScript基础详解(1)
javaScript基础详解 首先讲javaScript的摆放位置:<script> 与 </script> 可以放在head和body之间,也可以body中或者head中 J ...
- Dom探索之基础详解
认识DOM DOM级别 注::DOM 0级标准实际并不存在,只是历史坐标系的一个参照点而已,具体的说,它指IE4.0和Netscape Navigator4.0最初支持的DHTML. 节点类型 注:1 ...
- Android中Canvas绘图基础详解(附源码下载) (转)
Android中Canvas绘图基础详解(附源码下载) 原文链接 http://blog.csdn.net/iispring/article/details/49770651 AndroidCa ...
- Python学习一:序列基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 深入浅出DOM基础——《DOM探索之基础详解篇》学习笔记
来源于:https://github.com/jawil/blog/issues/9 之前通过深入学习DOM的相关知识,看了慕课网DOM探索之基础详解篇这个视频(在最近看第三遍的时候,准备记录一点东西 ...
- 三剑客基础详解(grep、sed、awk)
目录 三剑客基础详解 三剑客之grep详解 1.通配符 2.基础正则 3.grep 讲解 4.拓展正则 5.POSIX字符类 三剑客之sed讲解 1.sed的执行流程 2.语法格式 三剑客之Awk 1 ...
- java继承基础详解
java继承基础详解 继承是一种由已存在的类型创建一个或多个子类的机制,即在现有类的基础上构建子类. 在java中使用关键字extends表示继承关系. 基本语法结构: 访问控制符 class 子类名 ...
- java封装基础详解
java封装基础详解 java的封装性即是信息隐藏,把对象的属性和行为结合成一个相同的独立单体,并尽可能地隐藏对象的内部细节. 封装的特性是对属性来讲的. 封装的目标就是要实现软件部件的"高 ...
- 搜索引擎框架之ElasticSearch基础详解(非原创)
文章大纲 一.搜索引擎框架基础介绍二.ElasticSearch的简介三.ElasticSearch安装(Windows版本)四.ElasticSearch操作客户端工具--Kibana五.ES的常用 ...
随机推荐
- 03012_会话技术Cookie&Session
1.会话技术简介 (1)存储客户端的技术 网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识 ...
- 关于mybatis 一级缓存引发的问题
场景: 由于在一个方法中存在多个不同业务操作 private void insertOrUpdateField(CompanyReport entity) { //计算并数据 calcReportDa ...
- datagrid的formatter
1.formatter函数 formatter:function(value,rowData,rowIndex){ return 'xxx'; } 注意: (1)formatter一定要有返回,且返回 ...
- JVM内存管理:深入Java内存区域与OOM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝 ...
- Careercup - Microsoft面试题 - 5917873302142976
2014-05-12 06:56 题目链接 原题: A link list contains following elements struct node{ int data; node* next; ...
- 14、响应式布局和BootStrap 全局CSS样式知识点总结-part1
1.什么是响应式布局 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,这个概念是为解决移动互联网浏览而诞生的. 简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一 ...
- MOTCF 没时间解释了 条件竞争漏洞
moctf 没时间解释了 条件竞争漏洞 题目链接 条件竞争: 在本题目中,上传文件的时候服务器无条件的接收任何类型的文件,但是你上传之后服务器会给你的文件内容修改为too slow. 比如你上传了一句 ...
- hnust CZJ-Superman
问题 B: CZJ-Superman 时间限制: 1 Sec 内存限制: 128 MB提交: 636 解决: 87[提交][状态][讨论版] 题目描述 “那是只鸟?那是飞机?那是——超人!” 程序 ...
- C# Winform打包部署时添加注册表信息实现开机启动(转载)
使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表 ...
- POJ 2723 Get Luffy Out(2-SAT+二分答案)
Get Luffy Out Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8851 Accepted: 3441 Des ...