IE7中绝对定位元素之间的遮盖问题

由于页面复杂就不上现实例子,举例说明。

两个同层级<div>元素,都设置了 position: relative;相对定位。

他们的内部的元素(不管什么元素了)都设置了position: absolute;

而第一个<div>元素中的元素需要划过显示效果,要遮挡下方的<div>,可在这个时候,恰恰相反,居然被后者遮盖了(下方的<div>很不服气,有木有)。

这里我需要截图演示:

这里有两个部落:一个红色框里面套着一个黄色板块 这里我们叫它小A

一个蓝色框里面套着一个绿色板块 这里我们叫它小C(因为小B不好听,我们就不叫了)


先说一下,小A的红色框和小C的蓝色框都是相对定位(position:
relative;),而小A的黄色板块和小C的绿的板块都是绝对定位(position:
absolute),这里说下两个板块的绝对定位都是相对于自己的父元素而言的,不了解的同学可以去补习下CSS。
我在这里要实现什么效果呢:就是鼠标移到黄色的板块,然后他不耐寂寞的变长,然后覆盖下面的小C。

效果看下图:

这才是我要的效果,可是IE7偏偏很二货的逆天了,大家看看他什么效果:

简直狂拽炫酷屌炸天啊。

有些同学肯定说了,设置一下层级关系好了。这个办法非常好,但是给谁设置呢?很多同学和我一样首先给黄色板块设置了z-index:999;

你们可以试一下,对于这个二货IE7来讲,简直令人发指,他偏偏不这么做。

(不说多了,不然大家说我在这逗比了,我不是猴子派来逗比的。)

说一下正确的解决办法:

这里设置绝地定位的元素是没有用的,应该设置两个相对定位的元素,也就是小A的红色框框,和小C的蓝色框框,设置他们的层级关系。给小A的红色框框设置z-index:999;(数值只要够大即可)。

给小C的蓝色框框设置z-index:0;(比小A的小就行)。然后我们期望的效果就出现了。哈哈哈

当然不设置的话 IE7以上版本都不会有这问题哦。

(转载于:http://www.jb51.net/css/148606.html)

时间: 2024-12-29 15:54:18

IE7中绝对定位元素之间的遮盖问题的相关文章

table中绝对定位元素相对td定位失效解决方案

开门见山! 问题:在一个table中,我需要在td里面绝对定位一个div, 写法:td{position:relative;} div{position:absolute;} OK,就这么简单,思路也没什么问题,并且在chrome中结果完美. BUT!!! IE(此处只测了一下IE,或许别的浏览器也不行,自行测试),坑比的IE来了, 失效了,定位失败,没有预期的效果. 那么在我的项目中用到的解决方案是: 不怕麻烦的在这个absolute定位的div外层包裹一个relative定位的div,如果想

绝对定位元素被遮挡

ie7下 绝对定位元素即使z-index值很高,如果其设置相对定位的父元素没有设置z-index值的话,其可能(这种可能性当然是布局存在遮盖的时候)会被后面设置了相对定位的元素遮挡(即使后面的相对定位的元素没有设置z-index值): <div style="position:relative;"> <p style="position:absolute;z-index:99999;"></p> </div> <

HTML和CSS在IE7中常见的兼容性问题

IE7及以下版本都会有这些问题 1.IE7块转内联块问题 问题描述:好像块转内联块失败,依然不在一行排列 解决办法:给元素添加如下css    *display:inline;*zoom:1; *display:inline;先把元素转成内联,再用*zoom:1;触发盒子有布局的特性,让它支持宽高(星号 * 意思是针对IE7) 内联转内联块没有问题 2.li包含浮动子元素的问题 问题描述:li中包含浮动的子元素,li和li之间就会有间隙 解决办法:给li加 vertical-align:midd

讨论IE6/IE7中li底部4px的Bug

当li的子元素中有浮动(float)时,IE6/IE7中<li>元素的下面会产生4px空隙的bug. XHTML <ul class="list"> <li><div>vapour</div></li> <li><div>百度</div></li> <li><div>淘宝</div></li> <li><

IE6/IE7中li底部4px空隙的Bug

当li的子元素中有浮动(float)时,IE6/IE7中<li>元素的下面会产生4px空隙的bug. 代码如下: <ul class="list"> <li><div>vapour</div></li> <li><div>百度</div></li> <li><div>淘宝</div></li> <li><

[微软]有两个序列a,b,大小都为n,序列元素的值任意整数,无序; 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小_利用排列组合思路解决_python版

(原题出自微软公司面试题)问题如下:有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小.例如:a=[100,99,98,1,2, 3]b=[1, 2, 3, 4,5,40] 题目是看到QQ群友发的,网上也百度了下目前已经有好几种解法了.写了半天有点晕,后面忽然想到中学时候数学里面的排列组合的方法.方法对于较短的list可行,长list组合情况太多,可能耗时太长或溢出. 1 from itertools im

通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小

题目描述: 有两个序列a,b,大小都为n,序列元素的值任意整数,无序:要求:通过交换a,b 中的元素,使[序列a 元素的和]与[序列b 元素的和]之间的差最小.例如:var a=[100,99,98,1,2, 3];var b=[1, 2, 3, 4,5,40]; 分析: 很多情况下,贪心算法得到的解并不是最优解,但是这道题貌似是最优解 思想:每次从AB中找到两个使得和之差最小的元素交换 当前和之差diff=sumA-sumB,从A中找到一元素a,从B中找到一元素b,如果交换那么就须有(sumA

【android】巧用android:divider属性设置LinearLayout中元素之间的间隔

如上图,要想实现3个button线性排列并且使它们的大小相同.间隔相等.而且整体填充满整个linearlayout,我们一般的做法是在每两个button之间放一个固定宽度的view,然后设置button的宽度为0.layout_weight为1.这样虽能实现功能,可是总感觉不方便,特别是button多的时候. 今天介绍另一种简单.优雅的方法,就是利用android:divider属性. 1.首先新建一个固有的width/height的Drawable: spacer_medium.xml [ja

小tip: margin:auto实现绝对定位元素的水平垂直居中

转载自:http://www.zhangxinxu.com/wordpress/?p=3794 一.绝对定位元素的居中实现 如果要问如何CSS实现绝对定位元素的居中效果,很多人心里已经有答案了. 兼容性不错的主流用法是: .element { width: 600px; height: 400px; position: absolute; left: 50%; top: 50%; margin-top: -200px; /* 高度的一半 */ margin-left: -300px; /* 宽度