IE7下z-index混乱问题(转)

浏览器兼容性问题太让人蛋疼了,今天可是废在了IE7的z-index问题上。可又不能因为浏览器版本低而不去解决,毕竟要从用户的角度着想。百度了好多还是无法解决,最后google了一下,找到了方法。

直接上例子:

Html代码代码  

  1. <div id="container">
  2. <div id="box1">This box should be on top</div>
  3. </div>
  4. <div id="box2">
  5. This box should not be on top;
  6. IE however seems to create a new stacking context for positioned elements,
  7. even when the computed z-index of that element is ‘auto‘.
  8. </div>

Css代码代码  

  1. body { margin: 0; padding: 0; }
  2. #container { position: relative;}
  3. #box1 { position: absolute; top: 100px; left: 510px; width: 200px; height: 200px; background-color: yellow;z-index:20; }
  4. #box2 { position: absolute; top: 50px; left: 460px; width: 200px; height: 200px; background-color: lime; z-index: 10;}

效果:

1.png

这是为什么呢?其实这是IE浏览器的一个BUG——在IE浏览器中,定位元素会产生一个新的stacking context,并且从z-index的值为0开始。所以我们需要在这个元素的父元素上设置一个更高的z-index值。

在上述的box1中的父元素container设置一个更大的z-index就能解决这个问题。

修改后的css代码代码  

  1. body { margin: 0; padding: 0; }
  2. #container { position: relative; z-index:30;}
  3. #box1 { position: absolute; top: 100px; left: 510px; width: 200px; height: 200px; background-color: yellow; }
  4. //box1有没有z-index都无所谓了,但必须同position(relative或absolute)使用,就跟一个人
  5. //生不了孩子一样,需要配合。
  6. #box2 { position: absolute; top: 50px; left: 460px; width: 200px; height: 200px; background-color: lime; z-index: 20; }

效果:

2.png

要想覆盖住父级的同级 ,父级的z-index就必须别的大,这就跟拼老爸一样,老爸强你就强,这就是传说中的哲学啊。

尼玛的,现在通过google发现只要百度z-index就可以找到答案了,搜索也是一门技术活啊!!!!!!!!!!!!!!!!!!!!!!

时间: 2024-10-03 13:38:43

IE7下z-index混乱问题(转)的相关文章

ie7下z-index失效问题解决方法

绝对定位元素的“有定位属性(relative或absolute)的父元素”在渲染层次时起到了主要作用,前面的被后面的覆盖了.解决办法就是给有定位属性的父元素设置z-index 解决办法: 父级元素加上position:relative;并设置z-index. 父级元素的z-index优先,其中包含的元素的z-index是相对于父级元素的index. <div style="position:relative;z-index=2"> <p style="pos

ie7下z-index失效问题解决方法(详细分析)

绝对定位元素的"有定位属性(relative或absolute)的父元素"在渲染层次时起到了主要作用,前面的被后面的覆盖了.解决办法就是给有定位属性的父元素设置z-index 解决办法: 父级元素加上position:relative;并设置z-index属性.父级元素的z-index优先,其中包含的元素的z-index是相对于父级元素的index. <div style="position:relative;z-index:2;"> <p sty

关于ie7下display:inline-block;不支持的解决方案

关于ie7下display:inline-block:不支持的解决方案 今天码的时候遇到这个问题了. 如果本身是内联元素的,把它的display属性设置设置为inline-block时,所有浏览器都是支持的. 相反,如果本身是块级元素的,把它设为display:inline-block;  那么ie6/ie7都是不支持的. IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了d

ie7下设置z-index无效如何解决?

ie7下z-index无效的问题之前做练习的时候遇到过,百度解决掉之后就丢脑后了.今天项目中又发现这个bug,无奈又去百度,这次还是记下来,节省了百度的时间还能小装一把... 需求是这样的: 页面中的两个层默认隐藏,点击这个层的展开图标时要把这个层显示出来,点收起的时候再把这个层隐藏,因为两个层是上下排列,所以点击展开的时候正常的显示应该是这样的,如下(丑)图: 实现的代码我也贴一部分上来,逻辑就是点哪个层,哪个层的z-index值在原来的基础上加高点 $isSales.append($('<e

最后一个对象属性后边不要加豆号的bug,血淋淋的教训啊,模块化开发IE7下的严重错误,养成好习惯

最近总是写滚动图效果,重复的劳动后,决定写一个滚动图的封装插件.结果写完后在其他浏览器都可以用,却IE7下毫无反应.反复测试各种检查后,发现竟然是在参数对象最后一个属性后多加了个逗号,结果就死在了IE7下,吐血啊,也感慨下自己的基本功不扎实啊. define(function(require){ //插件内部 设置默认参数    require('jquery');        var defaultConfig = {        eleFather: null,  //容器标签 父元素

在IE7下带链接的图片去除边框问题

在昨天完成的一个项目中,出现了这么一个问题:解决后记录下来,唯恐忘记. 在测试兼容性的时候,发现带链接的图片在IE7下显示有蓝色的边框.后来才知道有以下的解决方案: 在那张图片的html代码中加上"border: 0;"或"border: none;"; [border:0;]把border设为"0"像素虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值.

IE6/IE7下:inline-block解决方案

IE6/IE7下对display:inline-block的支持性不好. 1.inline元素的display属性设置为inline-block时,所有的浏览器都支持: 2.block元素的display属性设置为inline-block时,IE6/IE7浏览器是不支持的: 对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行,允许空格.(准确地说,应用此特性的元素现为内联对象,周围元素保持在同一行,但可以设置宽度和高度等块元素的属性) IE中对内联元素使用displ

ExtJS 在IE7下报 isModel为空为空或不是对象

刚开始以为是兼容性问题--后来,发现居然是自定义的data数据多了个逗号.本来定义了多个数据,有一次把后面几条数据删除了,保留下来的最后一条数据后面的逗号没去掉.--! ExtJS 在IE7下报 isModel为空为空或不是对象,码迷,mamicode.com

ie6和ie7下z-index bug的解决办法

一.匆匆带过的概念 关于CSS中层级z-index的定义啊什么的不是本文的重点,不会花费过多篇幅详细讲述.这里就简单带过,z-index伴随着层的概念产生的.网页 中,层的概念与photoshop或是flash中层的概念是一致的.熟悉photoshop或是flash的应该知道,层级越高(图层越靠上),越在上 面显示,如果层发生重叠,层级高的会覆盖层级低的,如果非透明或半透明,则会遮挡. 在photoshop中,层的高低就是靠手动调的,鼠标拖拽,或是ctrl+]或是ctrl+shift+[快捷键改

display:inline-block在ie7下的解决办法

因为li是块级标签,设置为inline-block在ie7下会触发layout,这个解决办法只适合IE7 原理:先让块元素变为内联,再使用(zoom:1 或float属性等)触发块元素layout li{display: inline-block;*display:inline;*zoom:1;}