首页 > 其他分享 >Z-index优先级总结

Z-index优先级总结

时间:2023-05-04 14:22:40浏览次数:36  
标签:总结 index 优先级 定位 元素 设置 div 默认值

因为HTML元素显示在显示器上都是一个二维平面,只拥有x和y轴的属性,为了让元素显示有一些层级关系的效果,所以引入了z-index属性来表示三维立体空间的z轴方面,这样显示出来的界面就有了三维立体的上下关系的效果。z-index的属性值有三种可能:

注释:

  • 所有主流浏览器都支持 z-index 属性。任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 “inherit”。
  • IE6/7下position不为static,且z-index不存在时z-index为0,除此之外的浏览器z-index的默认值为auto。
  • z-index为auto的元素不参与层级关系的比较,由向上遍历至此且z-index不为auto的元素来参与比较。

概念:

z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。z-index 仅能在定位元素上奏效(position属性值为 relative 或 absolute 或 fixed的对象)

演示:

  • 两个div,无设置z-index。第二个蓝色div向上移动50px时如下图。如果两个元素都没有设置z-index,使用默认值auto,一个定位一个没有定位,那么定位元素覆盖未定位元素
<div style="width:100px;height:100px;"></div>
<div style="width:50px;height:50px;position:relative;top:-50px;"></div>

 

<div style="width:100px;height:100px;position:relative;top:20px;"></div>
<div style="width:50px;height:50px;"></div>

  • 蓝色div设置z-index为-5时,如下图。(注:蓝色div已设置position : relative ,故z-index可生效 )
<div style="width:100px;height:100px;"></div>
<div style="width:50px;height:50px;position:relative;top:-25px;z-index:-5;"></div>

  • 红色色div设置z-index为30,蓝色为25时,30>25,结果如下图。
<div style="width:100px;height:100px;z-index:30;"></div>
<div style="width:50px;height:50px;position:relative;top:-50px;z-index:25;"></div>

z-index属性适用于定位元素(position属性值为 relative 或 absolute 或 fixed的对象),用来确定定位元素在垂直于显示屏方向(称为Z轴)上的层叠顺序,也就是说如果元素没有定位,对其设置的z-index是无效的。虽然红色div的z-index比蓝色div的大,但是由于红色div未定位,其z-index属性未起作用,所以仍然会被蓝色div覆盖。

相同z-index:

  • 如果两个元素都没有定位发生位置重合现象或者两个都已定位元素且z-index相同发生位置重合现象,那么按文档流顺序,后面的覆盖前面的。
<div style="width:100px;height:100px;position:relative;z-index:1;"></div>
<div style="width:50px;height:50px;position:relative;top:-50px;z-index:1;"></div>

  • 如果两个元素都没有设置z-index,使用默认值auto,一个定位一个没有定位,那么定位元素覆盖未定位元素
<div style="width:100px;height:100px;position:relative;top:10px;"></div>
<div style="width:50px;height:50px;"></div>

父子z-index关系处理:

  • 如果父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,在父元素上方
<div style="width:100px;height:100px;position:relative;z-index:10;">
    <div style="width:50px;height:50px;position:relative;z-index:-5;"></div>
</div>

  • 如果父元素z-index失效(未定位或者使用默认值),那么定位子元素的z-index设置生效
<div style="width:100px;height:100px;position:relative;">
    <div style="width:50px;height:50px;position:relative;z-index:-5;"></div><!--z-index为-5所以在父元素的后面>
</div>

兄弟子元素z-index关系处理:

  • 如果兄弟元素的z-index生效,那么其子元素覆盖关系有父元素决定
<div style="width:100px;height:100px;position:relative;z-index:5;">
    <div style="width:50px;height:250px;position:relative;z-index:50;"></div>
</div>
<div style="width:100px;height:100px;margin-top:-40px;position:relative;z-index:10;">
    <div style="width:30px;height:150px;position:relative;z-index:-10;"></div>
</div>

虽然第一个div的子元素的z-index比较高,但是由于其父元素z-index比第二个平级div低,所以第一个div子元素会被第二个父辈div及其子元素覆盖。
父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,在父元素上方。

总结:

  • 两个div,无设置定位(z-index设置与否都是失效的)或者两个都已定位元素且z-index相同,层级关系按照文档流的顺序显示,后面的覆盖前面的
  • 如果两个元素都没有设置z-index,使用默认值auto,一个定位一个没有定位,那么定位元素覆盖未定位元素
  • 如果父元素z-index有效,那么子元素无论是否设置z-index都和父元素一致,在父元素上方
  • 如果父元素z-index失效(未定位或者使用默认值),那么定位子元素的z-index设置生效
  • 如果兄弟元素的z-index生效,那么其子元素覆盖关系由父元素决定

标签:总结,index,优先级,定位,元素,设置,div,默认值
From: https://www.cnblogs.com/itjeff/p/17371096.html

相关文章

  • 时序约束总结
    关于输入时钟的时序约束,如果输入的基准时钟没有送入PLL就直接给内部模块使用,那么需要进行时序约束,点击IMPLEMENTATION,完成后打开报告时序报告,关闭红色箭头所指的报告 进行时钟的约束 点击加号,添加需要约束的时钟,输入时钟的名称(可自定义),添加时钟源  I/OPort指top层......
  • odoo context上下文用法总结
    环境odoo-14.0.post20221212.tarcontext用法总结获取上下文>>>self.env.context#返回字典数据,等价于self._context{'lang':'en_US','tz':'Europe/Brussels'}>>>self._context{'lang':'en_US','......
  • odoo Web Controllers 学习总结
    环境odoo-14.0.post20221212.tarWebControllersControllers控制器需要提供可扩展性,就像Model,但不能使用相同的机制,因为先决条件(已加载模块的数据库)可能还不可用(例如,未创建数据库或未选择数据库)。因此,控制器提供了自己的与模型的扩展机制:通过继承Controller创建控制器。通过route(......
  • Nginx 面试题总结大全
    转载请注明出处:1介绍下nginx特点与常用模块2nginx特点详细3反向代理和正向代理4负载均衡策略有哪些5Nginx如何实现动静分离? 6Nginx常用命令有哪些?7Nginx进程模型8nginx是四层协议还是七层的 9nginx如何自定义负载均衡......
  • 【游戏设计随笔04】关于《桃源》的一些设计运营总结
    1:《桃源》有着非常明显的优势区间“美术”。用出众的美术风格为玩家制造记忆点,依旧是游戏获客的重要方式,尤其是对于那些缺乏用户积累的新IP、新团队来说。2:度过了初期的视觉冲击,就需要用玩法让玩家留下,《桃源》采用了一套简练的核心循环。仅从生产经营的资源循环来看,《桃源》有......
  • 最近公共祖先 算法总结
    现知LCA算法有倍增、Tarjan、树链剖分再LCA问题上各自的特点如下表倍增Tarjan树链剖分数组fa[u][i],depfa,vis,query,ansfa,dep,size_tree,heavy_child,top_chain思路深搜打表,跳跃查询深搜回溯,离线查询二重深搜打表,跳跃查询时间复杂度O((n+m)lo......
  • 每日总结2023-05-03
    今天学习了Android中的数据传递: 发送://实例化一个新的窗口,并指定从那个窗口到哪个窗口intent=newIntent(MainActivity.this,secondwindow.class);//将数据发送到intent中intent.putExtra("name",ed_text.getText().toString().trim());//启动新窗口startActivity(in......
  • 每日总结 5.3
    今日后台优化。//phone=<%=b.getUser_phone()%>&method=bh&sum=<%=b.getTotal()%>&name=<%=b.getName()%>Stringname=request.getParameter("name");Stringmphone=request.getParameter("phone");......
  • Blazor学习之旅系列总结目录
    1什么是Blazor?Blazor是微软近年来主推的,基于C#、HTML与CSS来构建交互式WebUI的框架。 借助Blazor,开发人员可以使用C#生成客户端和服务器代码。他们还可以与前端客户端代码和后端逻辑共享代码和库。使用C#生成所有代码可简化在前端和后端之间共享数据,重复使用代码以加速......
  • 随机造数据的技巧总结
    以下是一个简单的使用C++11新特性生成随机数数据的程序示例:#include<iostream>#include<random>//引入随机数生成器的头文件usingnamespacestd;intmain(){//创建C++11随机数生成器mt19937_64rng(std::random_device{}());//使用随机数生成器创......