z-index取值

z-index:auto;
z-index:<integer>;
z-index:inherit;继承

特性:

1.支持负值
2.支持css3 animation动画;
3.在css2.1时代,需要和定位元素(position:relative/absolute/fixed/sticky)配合使用;

@keyframes zIndex{
0% {z-index:-1;}
100% {z-index:51;}
}

如果定位元素z-index没有发生嵌套:

1.后来居上的准则;
2.那个大,那个上;

后者覆盖前者:(后来居上的准则)
<img src="1.jpg" style="position:absolute"/>
<img src="1.jpg" style="position:relative"/>

前者覆盖后者:(z-index:那个大,那个上)
<img src="1.jpg" style="position:absolute;z-index:2;"/>
<img src="1.jpg" style="position:relative;z-index:1;"/>

如果定位元素z-index发生嵌套:

1.祖先优先原则;(前提:z-index值是数值,非auto)

后者覆盖前者
<div style="position:relative;z-index:1;">
<img src="1.jpg" style="position:absolute;z-index:2;"/>
</div>
<div style="position:relative;z-index:1;">
<img src="1.jpg" style="position:relative;z-index:1;"/>
</div>

前者覆盖后者
<div style="position:relative;z-index:auto;">
<img src="1.jpg" style="position:absolute;z-index:2;"/>
</div>
<div style="position:relative;z-index:1;">
<img src="1.jpg" style="position:relative;z-index:1;"/>
</div>

css2.1:(z-index:auto)当前层叠上下文的生成盒子层叠水平是0,盒子(除非是根元素)不会创建一个新的层叠上下文。

z-index与层叠上下文

1.定位元素默认z-index:auto可以看成是z-index:0;
2.z-index不为auto的定位元素会创建层叠上下文;
3.z-index层叠顺序的比较止步于父级层叠上下文;

1.定位元素会覆盖普通元素

后者覆盖前者 (后来居上原则)
.a{}
.b{margin-left:-30px;}

前者覆盖后者
.a{position:relative;}
.b{margin-left:-30px;}

原因:前者的 定位元素的 z-index:0 z-index:auto或者z-index:0 高于 inline/inline-block水平盒子

2.z-index不为auto,与创建层叠上下文

img覆盖box,(box和img都没有z-index,都没有创建层叠上下文,都是普通元素)

.box{position: absolute;
background: blue;
width: 120px;
height: 260px;}
.box img{
position: relative;
margin-left: 80px;
}

 box覆盖img(box的z-index是auto,没有创建层叠上下文,img会一直往上找,只到找到层叠上下文容器)

.box{position: absolute;
background: blue;
width: 120px;
height: 260px;}
.box img{
position: relative;
margin-left: 80px;
z-index:-1;
}

 img覆盖box (box的z-index是0,创建层叠上下文,img会找到层叠上下文容器box,并在其上显示)

.box{position: absolute;
background: blue;
width: 120px;
z-index:;
height: 260px;}
.box img{
position: relative;
margin-left: 80px;
z-index:-;
}

box2覆盖img(div是普通元素所以它的z-index:1,没有任何作用)

.box2{
background: blue;
width: 120px;
height: 260px;
}
.box2>div{
z-index: ;
}
.box2>div img{
position: relative;
z-index: -;
}

img覆盖box2()

.box2{
background: blue;
width: 120px;
height: 260px;
display:flex
}
.box2>div{
z-index: ;
}
.box2>div img{
position: relative;
z-index: -;
}

z-index:auto 和z-index:0,前者不创建层叠上下文,后者创建层叠上下文,

但不包括ie7,ie7的z-index:auto,创建层叠上下文

从层叠顺序上讲,z-index:auto可以看成z-index:0,
但从层叠上下文来讲,两者却有着本质差异。

3.z-index受限于层叠上下文

后者覆盖前者
.box1{position:relative;z-index:0;}
.box1 img{position:absolute;z-index:9999;}

.box2{position:relative;z-index:1;}
.box2 img{position:absolute;z-index:-1;}

原因:box2的z-index大于box1的z-index

页面根元素天生具有层叠上下文,称之为‘根层叠上下文’。

z-index值为数值的定位元素(相对或绝对)也具有层叠上下文。

其他参与层叠上下文的属性们:

1.z-index值不为auto的flex项(父元素display:flex|inline-flex)
2.元素的opacity值不是1
3.元素的transform值不是none
4.元素mix-blend-mode值不是normal
5.元素的filter值不是none
6.元素的isolation值是isolate
7.position:fixed声明
8.will-change指定的属性值为上面任意一个
9.元素的-webkit-overflow-scrolling设为touch

img覆盖box3(box3创建了层叠上下文容易,,img会找到层叠上下文容器box3,并在其上显示)

.box3{
background: blue;
width: 120px;
height: 260px;
/*以下属性的任意一个,都会创建层叠上下文*/
opacity: 0.5;
transform:rotate(15deg);
mix-blend-mode:darken;
filter: blur(5px);
isolation: isolate;
will-change:transform; position: fixed;//在chrome浏览器下不需要z-index就可以创建层叠上下文,只在chrome等blink/webkit浏览器下创建层叠上下文,ie/ff,不创建层叠上下文 position: relative/absolute;//z-index必须是数字,不是auto,才能创建层叠上下文 }
.box3 img{
position: relative;
z-index: -;
}

z-index与其他css属性层叠上下文:
--非定位元素层叠上下文和z-index关系大揭秘

1.不支持z-index的层叠上下文元素的层叠顺序均是z-index:auto级别
2.依赖z-index的层叠上下文元素的层叠顺序取决于z-index值

依赖z-index值创建层叠上下文的情况:
1.position值为relative/absolute或者fixed(部分浏览器)
2.display:flex|inline-flex容器的子flex项

css深入理解z-index的更多相关文章

  1. CSS深入理解学习笔记之absolute

    1.absolute和float 拥有相同的特性表现: ①包裹性(容器应用之后,可以包裹里面的内容): <!doctype html> <html> <head> ...

  2. CSS深入理解之absolute(HTML/CSS)

    absolute和float是同父异母的兄弟,因为它们具有相同点:包裹性与破坏性 absolute的特点 1.独立的,并且可以摆脱overflow的限制,无论是滚动还是隐藏: 2.无依赖,不受rela ...

  3. CSS深入理解之overflow

    CSS深入理解之overflow 前言 这是跟着张鑫旭重学CSS的overflow篇 基本属性 overflow有以下五个基本属性: 1.visible : 默认值,具体表现为,应用此属性后,子元素超 ...

  4. CSS深入理解之line-height

    以下文字整理自慕课网——张鑫旭的<CSS深入理解之line-height>. line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度. 定义三问: 什 ...

  5. 关于DIV+CSS和XHTML+CSS的理解

    WEB标准是一系列标准的集合,并不是仅“DIV+CSS”布局就可以实现.以CSS网页布局只是标准的基础之一.“DIV+CSS”布局只是一种通俗的称呼罢了.而我们学习的目标在于以XHTML建立良好的语义 ...

  6. CSS深入理解之z-index

    (http://www.imooc.com/learn/643)   一.z-index基础知识 1.z-index的含义 z-index属性指定了元素及其子元素的[z顺序],而[z顺序]可以决定当元 ...

  7. 【前端Talkking】CSS系列——CSS深入理解之line-height

    1.写在前面 两个多周的时间没有写文章了,手好痒好痒,趁着公司在装修,从上周末到本周都在家办公,同时公司的项目并不紧急,于是抽着时间梳理了一下CSS中关于行高line-height的理解,今天发布出来 ...

  8. JS——树形导航菜单(html的ul嵌套,jQuery的css(),show(),hide(),index()等方法)

    必备工具:jquery库文件.我这里用的是1.4版本的. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  9. 【转】CSS深入理解流体特性和BFC特性下多栏自适应布局

    这篇文章发布于 2015年02月12日,星期四,23:36,归类于 css相关. 阅读 30873 次, 今日 63 次 by zhangxinxu from http://www.zhangxinx ...

  10. 转 - CSS深入理解vertical-align和line-height的基友关系

    一.想死你们了 几个星期没有写文章了,好忙好痒:个把月没有写长篇了,好忙好想:半个季度没在文章中唠嗑了,好痒好想. 后面一栋楼有对夫妻在吵架,声音雄浑有力,交锋酣畅淋漓,还以为只有小乡镇才有这架势,哦 ...

随机推荐

  1. PHP实现快速排序、插入排序、选择排序

    1.快速排序 快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都 ...

  2. C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

    转自:http://www.cnblogs.com/leolis/p/3968943.html 在编程过程中,数据转换是经常要用到的,C#中数据转换的方法很多,拿将目标对象转换为 整型(int)来讲, ...

  3. python技巧 之文件读取

    对于数据分析而言,我们通常需要将文件内容读取到列表中来进行后续的操作. np.array(dataFrame)能将dataFrame类型转换成数组类型. 1.pandas下的文本文件读取(推荐)

  4. java并发编程-基础

    线程带来的风险 安全性:多线程操作执行顺序的不可预测性 -- 永远不发生糟糕的事情: 活跃性:代码无法得到执行,死锁.饥饿问题 -- 某件正确的事情最终会发生: 性能问题:活跃性只意味着某件事最终会发 ...

  5. 时间js转换方法Date("149...") 转成 2016-7-12 21:23:34 009

     function timeFormatter(value) {     var da = new Date(parseInt(value.replace("/Date(", &q ...

  6. XSS漏洞

    跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息 坚决不要相信任何用户输入并过滤所有特殊字符.这样既可消灭绝大部分的XSS攻击.另一个建议是输出页面时将 < 和 > 变换成 ...

  7. lvs源代码分析

    以linux-2.6.21为例. 数据结构介绍: ip_vs_conn 对于某个连接记录其N元组, (client, vserver, rserver) & (address, port) Q ...

  8. python零碎知识点一

    dir(object),列出对象所有可以用的的方法(参数可以为任意对象,例如class,func等) >>>dir('str') ['__add__', '__class__', ' ...

  9. iOS 因为reason: 'Pushing the same view controller instance more than once is not supported而奔溃(下)

    这个问题是什么意思呢,之前遇到过几次,但程序再次打开时没有问题,也就没有重视,今天又遇到了,无法忍受啊. 控制台报的错误是:"不支持多次推入相同的视图控制器实例". 什么原因造成的 ...

  10. 《Linux及安全》实践3.3

    <Linux及安全>实践三 字符集总结与分析 [by lwr] 一.ISO.UCS/UTF.GB系列字符集分析 1.字符集&字符编码 字符集(Charset):是一个系统支持的所有 ...