CSS3笔记之定位篇(二)z-index

知识点1:z-index基础

  •   z-index:auto; 默认值
  •   z-index: <integer>  整数
  •   z-index: inherit 继承
  •   不考虑css3  还有定位元素的z-index才有作用

知识点2:z-index与定位元素

  •   无嵌套:后来居上,哪个大哪个上
//在没有添加z-index属性时,如果两个图片有重叠,默认为图片2覆盖图片1   “后来居上”
//如果添加了z-index,则那个元素的z-index值大,那个在最上面    “哪个大哪个上”
<img src="图片1" style="position: relative; z-index: 2">
<img src="图片2" style="position: absolute; z-index: 1">
  •   有嵌套:祖先优先原则(z-index: 数字)
//虽然图片1的z-index大于图片2的z-index,但是对于嵌套的定位元素z-index遵循祖先优先原则,所以图片2优先显示
<div style="position: relative; z-index: 1"> //祖先元素的z-index不能为auto
    <img src="图片1" style="position: relative; z-index: 2">      
</div>
<div style="position: relative; z-index: 1"> //祖先元素的z-index不能为auto
    <img src="图片2" style="position: absolute; z-index: 1">      
</div>

知识点3:层叠上下文(stacking-context)和层叠水平(stacking-level)(重要)

  •   层叠上下文:

      页面根元素天生具有层叠上下文,称之为“根层叠上下文”

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

    其他属性

  •   层叠水平:层叠上下文中的每一个元素都有一个层叠水平,决定了同一个层叠上下文中元素在z轴上的显示顺序
  •   层叠水平和z-index不是一个东西,普通元素也有层叠水平。
  •   层叠上下文的特性:
  1. 层叠上下文可以嵌套,组合成一个分层次的层叠上下文。

  2. 每个层叠上下文和兄弟元素独立:当进行层叠变化或渲染的时候,只需要考虑后代元素。

  3. 每个层叠上下文是自成体系的:当元素的内容被层叠后,整个元素被认为是在父层的层叠顺序中。

知识点4:层叠顺序 (stacking-order)
  background --> 负z-index --> block块状水平盒子 --> float浮动盒子 --> inline/inline-block
  --> z-index:auto或z-index:0 --> 正z-index

知识点5:z-index与层叠上下文

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

知识点6:其他css属性与层叠上下文

  •  能创建层叠上下文的的css属性
<div class="box">
    <div>
      <img src="logo.jpg">
    </div>
</div>
<style>
  .box {
    display: flex;                     // 1.display: flex 与子元素z-index不为auto 配合使用
    background:blue
  }
  .box > div {z-index: 1}
  .box > div > img {
    position: relative; z-index: -1;
  }
</style>

<div class="box">
    <img src="" alt="">
</div>
<style>
  .box {
    background:blue;
    opacity: .5;                       // 2.opacity 不等于 1
    transform: rotate(15deg);          // 3.transform 不等于 none
    mix-blend-mode: screen;            // 4.mix-blend-mode: screen
    filter: blur(5px);                 // 5.filter 不等于 none
    isolation: isolate;                // 6.isolation: isolate
    position: fixed;                   // 7.position: fixed Chrome等bink/webkit内核的浏览器使用
    will-change: transform;            // 8.will-change: transform
    -webkit-overflow-scrolling: touch  // 9.移动端
  }
  .box > div > img {
    position: relative; z-index: -1;
  }
</style>

知识点7:z-index与其他css属性层叠上下文

background --> 负z-index --> block块状水平盒子 --> float浮动盒子 --> inline/inline-block
  --> z-index:auto或z-index:0,不依赖z-index的层叠上下文 --> 正z-index

不支持z-index的层叠上下文元素的层叠顺序均是z-index:auto级别;

依赖z-index值创建层叠上下文的情况:

  1. position值为relative/absolute或fixed(部分浏览器)

  2. display:flex/inline-flex容器的子flex项

知识点8:z-index相关实践分享

  • 最小化影响原则 

  目的:避免z-index嵌套层叠关系混乱 
  原因:
    1. 元素的层叠关系主要由所在的层叠上下文决定 
    2. IE7 中z-index为auto也会创建层叠上下文
  做法:
    1. 避免使用定位属性
    2. 定位属性从大容器平级分离为私有小容器

  • 不犯二准则 

  目的:避免z-index混乱,出现一山又比一山高的样式问题
  原因:多个协作以及后期维护
  做法:对于任何非浮层元素,避免设置z-index值,z-index值没有任何道理需要超过2

  • 组件层级计数器

  目的:避免浮层组件因z-index被覆盖的问题 
  原因:
    1. 总会遇到意想不到的高层及元素
    2. 组件的覆盖规则具有动态性
  做法:组件层级计数器方法 (JS获取最大z-index,再加1)

  • 可访问性隐藏:人肉眼不可见,但是辅助设备可以识别。

  z-index负值元素在层叠上下文的背景之上,其他元素之下

  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值