• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > CSS 定位之 z-index 问题分析

CSS 定位之 z-index 问题分析

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-08-06

本文主要包含CSS定位,z-index等相关知识,佚名 希望在学习及工作中可以帮助到您

点击查看原图

关于z-index,目前遇到的一些问题

1. 某些浏览器下元素层级遮盖存在bug;

2. 某个元素z-index设的太大,导致始终无法被遮盖;

3. js动态计算z-index,导致元素覆盖关系部可控

 

层级遮盖bug出现的原因:

IE6/7对z-index的表现跟IE8及以上浏览器不一致。position值为非static时,如果不设置z-index属性,IE6/7下z-index默认为0,而IE8及以上浏览器z-index为auto,且zindex:auto的元素不参与堆叠优先级比较。

ff/chrome z-index IE6/7 IE8/9
不设置 0 auto auto
number number number number

 层级关系的比较:

先看几点结论:

1. 对于同级元素,默认(或position:static)情况下文档流后面的元素会覆盖前面的;

2. 对于同级元素,position不为static且z-index存在的情况下z-index大的元素会覆盖z-index小的元素,即z-index越大优先级越高;

3. IE6/7下position不为static,且z-index不存在时z-index为0,除此之外的浏览器z-index为auto

4. z-index为auto的元素不参与层级关系的比较,由向上遍历至此且z-index不为auto的元素来参与比较。

在上面2点结论的基础上,我们引入“定位树”(非w3c官方词汇)的概念来做层级的比较。

在定位树这个概念下,浏览器在渲染dom节点时,除了生成dom树之外,还会根据dom树中的定位元素(position不为static)生成“定位树”:
dom树、定位树对比如下(其中边上有红色圆圈的表示该元素position不为static):


可以这样理解:定位树中包含了dom树中position不为staitc的全部元素。非同级元素比较层级关系可以这样比较:

1. 向上遍历定位树的父节点直到2个元素为同级元素。

2. 根据上面的结论来最最后的比较。层级高的元素会越靠近用户的显示器并能覆盖层级低的元素。

 

实例一:假设上图中所有标红色元素position都不为static;且z-index=1,根据上面的比较规则可以知道:

1. c > (b && b *) > (a && a *) 即元素c及c的所有定位元素层级比a、b高

2. m > h、 g > k、d > m

实例二:假设a的position不为static,z-index属性不存在,定位树中a的子元素z-index一次分别为1,2,3,4...其它定位元素z-index:1:

1. 根据结论三有:IE6/7下 b > (a && a *) 即元素b的层级比a及a的所有定位元素层级高,其它浏览器下:i > h > b > d

您可能想查找下面的文章:

  • CSS定位的几个类型简单介绍
  • css中定位中的absolute和relative是什么意思
  • 借助CSS定位来实现把一个DIV放到另一个div右下角
  • 简明CSS定位属性position
  • CSS 定位之 z-index 问题分析

相关文章

  • 2017-08-06详解CSS3阴影 box-shadow的使用和技巧总结
  • 2017-08-06纯CSS图片预加载实例 摆脱Javascript预载的束缚
  • 2017-08-06css中!important的作用(IE6 IE7 FF)及其原理
  • 2017-08-06将样式表放在页面顶部
  • 2017-08-06css属性使用中的一些注意事项(实战经验)
  • 2017-08-06CSS创建竖排文字的简单方法小结
  • 2017-08-06使用word-wrap来防止文字溢出
  • 2017-08-06纯css3实现鼠标经过图片显示描述的动画效果
  • 2017-08-06使用一张或两张图片创建大背景网站
  • 2017-08-06CSS层叠与继承的使用深入剖析

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • css中!important的作用(IE6 IE7 FF)及其原理
    • 给表格设置不重叠的边框(单线边框)的2种方法
    • 学习DIV+CSS网页布局之一列布局
    • 使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
    • CSS定义Radio单选项和Checkbox复选框样式有效代码
    • 从可维护性角度考虑css的!important规则的可用性
    • CSS3的column-fill属性对齐列内容高度的用法详解
    • Input标签与图片按钮水平对齐解决方法
    • CSS3实现头像旋转效果
    • CSS3 icon font完全指南(CSS3 font 会取代icon图标)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有