一、z-index七阶层叠顺序表

 1.层叠顺序的大小比较:

   background/border < 负z-index < block块状水平盒子 < float浮动盒子 < inline/inline-block水平盒子 < z-index:auto或者看成z-index:0 /不依赖z-index的层叠上下文< 正z-index。

 2.层叠顺序级别高的元素覆盖级别低的元素。

二、z-index与创建层叠上下文

 1.首先要注意,z-index:auto 虽然可以看作z-index:0 ,但是这仅仅是在层叠顺序的比较上;从层叠上下文上讲,二者有本质差别:auto 不会创建层叠上下文,z-index:0 会创建层叠上下文。

  注意有一种特殊情况,那就是IE7下,auto也会创建层叠上下文,不符合标准。

 2.z-index层叠顺序的比较止步于父级层叠上下文

  控制视图时,如果父级元素没有层叠上下文,则会一直找到根元素作为层叠上下文

 3.z-index:数字 + 元素属性 配合得到层叠上下文

  ①position:absolute/relative以及FireFox/IE下的position:fixed;

   当z-index的值为auto时,元素还是普通元素,当z-index的值为具体数字时,就会创建层叠上下文

  ②z-index值不为auto的flex项(display:flex/inline-flex;)

   层叠上下文元素是flex子元素,而不是flex容器元素

 4.不需要与z-index:数字  配合就可以创建层叠上下文的属性

  ①元素的opacity值不为1;

  ②元素的transform值不为none;

  ③元素mix-blend-mode(混合模式)值不为normal;

  ④元素的filter(css3里的滤镜,不是指IE6/7/8/9里私有的那个滤镜)值不为none;

  ⑤元素的isolation(隔离)值是isolate(元素是孤立的)

   isolation:isolate这个声明是mix-blend-mode应运而生的。 默认情况下,mix-blend-mode会混合z轴所有层叠在下面的元素,如果我们不希望某个层叠的元素参与混合就可以使用isolation:isolate。

  ⑥position:fixed声明,部分浏览器(FireFox/IE)需要z-index:数字 配合 ⑦will-change指定的属性值为上面任意一个

   will-change的作用:增强页面渲染性能,即准备GPU(图形处理器)让浏览器加速渲染的

   什么是GPU(图形处理器)?GPU是与处理和绘制图形相关的硬件。 GPU是专为执行复杂的数学和几何计算而设计的,可以让CPU从图形处理的任务中解放出来,从而执行其他更多的系统任务,例如,页面的计算与重绘。

   当我们通过某些行为(点击、移动或滚动)触发页面进行大面积绘制的时候,浏览器往往是没有准备的,只能被动使用CPU去计算与重绘,由于没有事先准备,应付渲染够呛,于是掉帧,于是卡顿。而will-change则是真正的行为触发之前告诉浏览器,提前预约从容不迫;突然造访手忙脚乱。

  ⑧元素的-webkit-overflow-scrolling设为touch(移动端特有的原生的滚动)

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

 6.为何定位元素会覆盖普通元素?

  例如当图片使用了position:relative;此时图片z-index:auto;这时图片的的层叠顺序 > 内联元素(普通的图片文字是内联元素,层叠顺序是inline/inline-block),所以会覆盖。

三、z-index相关实践时注意的一些原则

 1.最小化影响原则

 目的:避免z-index嵌套层叠关系混乱
 原因:①元素的层叠水平主要由所在的层叠上下文决定
   ②IE7 z-index:auto;也会新建层叠上下文
 做法:①避免使用定位属性
   ②定位属性从大容器平级分离为私有小容器(relative课程)

 2.不犯二准则

 目的:避免z-index混乱,出现一山比一山高的样式问题
 原因:多人协作以及后期维护
 做法:对于非浮层元素,避免设置z-index值,z-index没有任何道理需要超过2
    (浮层元素:比如弹框,在页面里拖来拖去)

 3.组件层级计数器

 目的:避免浮层组件因z-index背覆盖的问题
 原因:①总会遇到意想不到的高层级元素(比如其他团队介入,或者使用网上的其他组件)
   ②组件的覆盖规则具有动态性(比如一个页面有好多个弹框)
 做法:组件层级计数器方法:通过js获得body下子元素的最大z-index值,
   例如组件默认是m,而body最大是n(n>m),那么就把组件设置为n+1

 4.可访问性隐藏   人肉眼看不见,但是辅助设备可以识别的隐藏

 z-index负值元素在层叠上下文的背景之上,其他元素之下
 做法:z-index:-1;
 eg:
  html代码:
  <input type="submit" id="submit" />
  <label for="submit">提交</label> <!--label的 for关联模拟,兼容性很好-->
  css代码:
  [type=submit]{ position:absolute; z-index:-1; }

最后,以上内容是最近学习视频内容的大概总结,视频链接:http://www.imooc.com/learn/643

本文链接:http://www.cnblogs.com/xsilence/p/5495857.html

z-index学习知识小结的更多相关文章

  1. React.js学习知识小结(一)

    学习React也有半个月了吧,这里对所学的基础知识做个简单的总结.自己先是跟着官方文档学,差不多学了四五天,也跟着入门教程做了一个简单的小栗子.然后跟着阮一峰老师的教程上手了几个小Demo,后来在网上 ...

  2. html5-基本知识小结及补充

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. HTTPS知识小结

    HTTPS知识小结 背景1:TCP握手 internet上的两台机器A,B要建立起HTTP连接了,在这之前要先建立TCP连接,情景大概是这样子的: A:你好,我跟你建立一个TCP好吗? B:好啊. A ...

  4. 180531-Spring中JavaConfig知识小结

    原文链接:Spring中JavaConfig知识小结/ Sring中JavaConfig使用姿势 去掉xml的配置方式,改成用Java来配置,最常见的就是将xml中的 bean定义, scanner包 ...

  5. javascript之正则表达式基础知识小结

    javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料.   元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要 ...

  6. openresty 学习笔记小结:综合应用实例

    openresty 学习笔记小结:综合应用实例 这个综合实验实现的功能其实很简单,用户访问一个页面,显示一个默认页面.输入参数(post或者get都可以),如果参数在数据库查询得到并满足一定条件,根据 ...

  7. Atitit learn by need 需要的时候学与预先学习知识图谱路线图

    Atitit learn by need 需要的时候学与预先学习知识图谱路线图 1. 体系化是什么 架构 知识图谱路线图思维导图的重要性11.1. 体系就是架构21.2. 只见树木不见森林21.3. ...

  8. Android app开发知识小结

    Android知识小结 这是一个知识的总结,所以没有详解的讲解. 一.分辨率Android中dp长度.sp字体使用.px像素.in英寸.pt英寸1/72.mm毫米 了解dp首先要知道density,d ...

  9. C/C++ 位域知识小结

    C/C++ 位域知识小结 几篇较全面的位域相关的文章: http://www.uplook.cn/blog/9/93362/ C/C++位域(Bit-fields)之我见 C中的位域与大小端问题 内存 ...

随机推荐

  1. css 属性选择器

    css2的属性选择器 1.[class~="flower"]:选中有flower的class class="flower ss" class="ss ...

  2. display---我的第一篇博客

    display:block显示为块级元素,换行 display:inline-block显示为块级内联元素,不换行,但是可以改变其宽度高度 display:inline显示为内联元素,不换行但是也不能 ...

  3. 过去几个月出炉的30款最喜欢的 jQuery 插件

    在这篇文章中,我们收集了一些在过去的几个月里最喜欢的 jQuery 插件.为了使您更容易搜索到自己喜欢的 jQuery 插件,我们已经对插件进行了分类: 页面布局插件,图片和视频插件,滑块和画廊,排版 ...

  4. 一款效果精致的 jQuery 多层滑出菜单插件

    想要以用户友好的方式呈现多级菜单是件不容易的事情,而且还要跨浏览器兼容就更难了.Multi-Level Push Menu 这款 jQuery 插件提供了呈现这种菜单的解决方案,能够让你无限制的展示菜 ...

  5. 微信 小程序 canvas

    测试手机为IPHONE6,开发者工具版本0.10.102800.开发者工具0.11.112301版本也一样 微信小程序里的canvas 非 h5 canvas有很多不一样的地方,以下把微信小程序的ca ...

  6. sql联合查询

    联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用户名,密码)    userid int         username   varchar(20)     password      ...

  7. Atitit.Atiposter 发帖机 信息发布器 v7 q516

    Atitit.Atiposter 发帖机 信息发布器 v7 q516 V7 jetty 版本 基本访问改为web版. 这样发布调试 V1  初步实现sina csdn cnblogs V2  实现qz ...

  8. [IOS]edgesForExtendedLayout、automaticallyAdjustsScrollViewInsets

    在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局 就离不开这个属性 edgesForExtendedLayout,它是一个类型为UIExtendedEd ...

  9. iOS 多线程 浅述

    什么是进程? 进程是指在系统中正在运行的一个应用程序. 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 什么是线程? 1个进程要想执行任务,必须得有线程(每1个进程至少要有1条线程 ...

  10. android 最详细的动画大全,包括如何在代码和在XML中使用

    一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画 ...