IE绝对定位元素始终被遮挡或者消失的解决方法

最近做一个下拉菜单,当鼠标悬停在主菜单上,显示下拉菜单。ie8和FF都很正常,但是 ie6下拉菜单内容始终被下边的内容遮挡。

试了很多种解决办法。发现原来是IE的bug。 解决方法如下:

1.当绝对定位层的邻近浮动层的宽度不等于父层宽度时,以及没有清除浮动时,IE6/7,FF中显示一致; 

2.当绝对定位层的邻近浮动层的宽度不等于父层宽度时,有清除浮动时,IE6/7不显示绝对定位层,FF显示; 

3.当绝对定位层的邻近浮动层的宽度等于父层宽度时,以及没有清除浮动时,IE6不显示绝对定位层,IE7/FF显示; 

4.当绝对定位层的邻近浮动层的宽度等于父层宽度时,有清除浮动时,IE6/7不显示绝对定位层,FF显示; 

要解决这个BUG的方法也很简单,让绝对定位层不挨着浮动层放置就好了,还有个更简单的方法,在绝对定位元素和其他元素之间加一个空白的div。 

再来看看绝对定位元素神秘消失被遮挡的现象 

先了解一下所涉及到的几个定位特性: 

1. 相对定位元素默认的z-index的数值是0。 

2. 当两个相对定位同时出现时,代码靠后的z-index优先。 

3. 子级遵循父级设定的z-index;如果子级设定了绝对定位、z-index,可以冲破父级显示 

看下面的代码: 

 

 

复制代码代码如下:

<div style="position:relative; background:#FF0000; width:200px; height:100px;"> 

<div style="position:absolute; background:#FFFF00; width:49px; height:50px; left:106px; top:310px; z-index:100"></div> 

</div> 

<div style="position:relative; background:#000000; width:200px; height:100px;"></div> 

<div style="position:relative; background:#9900FF; width:200px; height:100px;"></div> 

 

代码解释:上面是三个相邻的相对定位的层,在第一个层里加了个相对其绝对定位的层,按照理论,这个绝对定位的元素是在三个相对定位元素之上的,但是,实际却没有显示。尝试设置z-index值也没有效。 

网上解决这个bug的办法一般用hack使B为负值,来降低 B 在IE下级别 

但是这种方法在z-index为负值时,产生了新的ie bug 

按照定位的特性,ie的这个bug是可以回避的 

从表面上看 下面的层 遮住了上面的绝对定位层,实际上是下面的 层遮住了绝对定位的的父级层,只要将 该父级层 的z-index设定大于后面的层即可

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值