`
deng131
  • 浏览: 672702 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

css定位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

分享到:
评论

相关推荐

    z-index为负值的元素无法点击到的解决方法

    综上所述,当遇到z-index为负值的元素无法点击的问题时,开发者可以采取调整z-index值、使用负margin属性或适当使用CSS重置样式等方法解决。在实施这些解决方法时,需要综合考虑页面布局和样式需求,以及浏览器兼容...

    CSS教程:网页布局定位及z-index解释

    在提供的压缩包文件中,`z-index-ie.html`和`z-index.html`可能是关于`z-index`属性在不同浏览器(尤其是IE)中的实现和兼容性的示例或教程。IE浏览器在处理`z-index`时可能存在一些特定的问题,比如早期版本对`...

    css里的z-index的使用

    本文将深入探讨CSS中的z-index属性,解析其工作原理,以及如何在实际项目中正确使用它,同时也会提及一些在不同浏览器环境下的兼容性问题。 #### z-index的基本概念 z-index是CSS中用于控制元素堆叠顺序的属性。在...

    妙用z-index让一个div显示在最前面

    当页面上的元素通过CSS定位属性(如position: relative; position: absolute; position: fixed; position: sticky;)被设定为相对定位、绝对定位、固定定位或粘性定位时,这些元素便可以重叠。如果没有指定z-index值...

    css中z-index属性实例分析

    ### CSS中的Z-Index属性详解 #### 一、引言 在网页布局设计中,元素之间的堆叠顺序是非常重要的一个方面。特别是在复杂的页面结构中,如何控制这些元素的前后顺序,确保用户能够按照设计师的意图浏览信息,是前端...

    CSS--z-index详解1

    **CSS中的`z-index`详解** `z-index`属性在CSS中扮演着至关重要的角色,它定义了元素在页面上的堆叠顺序。简单来说,`z-index`越高,元素越会在其他元素之上显示。但这个规则并非总是如此,理解其工作原理对于创建...

    margin 负值引起的层级(z-index)问题

    在现代网页设计中,CSS属性z-index用于控制页面元素的堆叠顺序,即层叠上下文。一个元素的z-index值决定了它在页面上的“高度”,或者说是显示层级,拥有更高z-index值的元素会覆盖那些具有较低z-index值的元素。...

    css设置z-index 失效的解决方法

    在CSS中,`z-index`仅适用于定位元素(positioned elements),这意味着元素的`position`属性不能是默认的`static`。当一个元素的`position`属性被设置为`relative`、`absolute`或`fixed`时,它将获得一个堆叠上下文...

    浅析CSS--元素重叠及position定位的z-index顺序.docx

    在CSS布局中,元素重叠和`position`定位的`z-index`顺序是常见的问题,尤其是在复杂的网页设计中。本文将深入探讨这个问题,以便更好地理解和解决问题。 首先,我们需要理解元素的默认行为。在HTML文档中,元素按照...

    CSS z-index 层级关系优先级的概念

    CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有更高堆叠顺序的节点将显示在堆叠顺序较低的节点前面, 这是我们对 z-index 属性普遍的认识. 与此同时, 我们总是对堆叠顺序捉摸不透, 将 z-index 的值设得很大也...

    浅析CSS--元素重叠及position定位的z-index顺序.pdf

    在CSS布局中,元素的位置和重叠是一个关键概念,尤其涉及到`position`定位和`z-index`属性时,这些问题往往会让开发者感到困扰。本文将深入探讨元素重叠的背景知识,以及`position`定位下的`z-index`顺序。 首先,...

    applet z-index 问题

    4. **JavaScript交互**:有时候,使用JavaScript动态改变元素的Z-Index和定位可以帮助解决覆盖问题。例如,当弹出层显示时,可以增加其Z-Index,而隐藏时恢复原来的值。 5. **Applet的特性**:Java Applet作为一种...

    CSS3关于z-index不生效问题的解决

    最近写CSS3和js结合,遇到了很多次z-index不生效的情况: 1.在用z-index的时候,该元素没有定位(static定位除外) 2.在有定位的情况下,该元素的z-index没有生效,是因为该元素的子元素后来居上,盖住了该元素,...

    举例详解CSS的z-index属性的使用

    CSS的z-index属性是控制页面上元素堆叠顺序的重要工具,它允许开发者定义元素在页面的垂直层叠中的位置。在没有z-index属性的情况下,元素默认会按照HTML代码中出现的顺序进行堆叠,但在复杂布局中,这种默认的堆叠...

    PHP 百度编辑器UEditor自定义层级z-index(层次太高).rar

    1. **定位问题元素**:首先,通过浏览器的开发者工具(如Chrome的DevTools)来识别被遮挡元素及其与UEditor元素的关系,找出z-index值过高的UEditor组件。 2. **自定义样式**:UEditor允许用户自定义CSS样式。可以...

    CSS 定位之 z-index 问题分析

    关于z-index,目前遇到的一些问题 1. 某些浏览器下元素层级遮盖存在bug; 2. 某个元素z-index设的太大,导致始终无法被遮盖; 3. js动态计算z-index,导致元素覆盖关系部可控   层级遮盖bug出现的原因: IE6/7对z-...

    CSS的z-index实例代码

    - 在使用z-index时,最好避免使用数值较高的z-index,因为这可能引入复杂的层叠问题。 4. 在示例代码中: - #box1没有设置z-index,因此按照HTML中的顺序,它会位于最底层。 - #box2设置了z-index: 1,因此它会...

    css的z-index权重问题【最简洁,没有废话】

    今天笔者就与大家分享一下css的z-index权重问题。到底怎么样才能让我们想要排在上面的元素能在上面,想在下面的元素就老老实实的在下面。 一、跟笔者一起看下面实战中z-index的几种情况: 一个定义了定位,一个没...

    学习CSS网页制作:z-index在IE中的迷惑.pdf

    在IE浏览器中,由于历史兼容性问题,开发者需要特别注意`z-index`的处理方式,尤其是在早期版本的IE中,可能会遇到一些预料之外的行为。 总的来说,`z-index`是CSS中一个强大但有时也容易让人困惑的属性。要正确地...

Global site tag (gtag.js) - Google Analytics