IE绝对定位元素被遮挡的解决

一:

          在进行网页布局设计的时候,经常会根据需要设置相对,绝对以及浮动定位最近突然发现了一个奇妙的现象:IE绝对定位元素神秘消失或被遮挡, 首先是IE绝对定位元素神秘消失,设置的绝对定位元素突然从IE浏览器下消失了,然而火狐能正常显示. 尝试对绝对定位元素进行清除浮动操作,IE下能显示,但是出现了莫名的留白,火狐下正常显示.至少这个现象表明,绝对定位元素在IE下神秘消失对相邻元素的浮动定位有关.查了相关资料,高人有这样的解释:

 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设定大于后面的层即可

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中解决元素层级被遮挡的方法有多种。以下是一些常见的方法: 1. 使用布局管理器(Layout Manager):Java提供了多个布局管理器,可以根据需要选择适合的布局来处理元素的层级关系。布局管理器可以自动处理元素的位置和大小,确保元素不会互相遮挡。 2. 调整组件的位置和大小:可以通过修改组件的坐标和尺寸来调整元素的层级关系。可以使用setBounds()方法或者其它相关的方法来实现。 3. 使用透明度(Opacity):通过设置组件的透明度,可以实现元素之间的覆盖和透明效果。可以使用setOpaque()方法将组件设置为透明,然后使用setAlpha()方法设置透明度的值。 4. 使用图层(LayeredPane):使用JLayeredPane可以创建多个图层,每个图层上可以放置一个或多个组件。通过调整图层的顺序,可以改变元素的层级关系。可以使用add()和setLayer()方法来添加和移动组件到不同的图层上。 5. 使用重叠窗体(Dialog):可以使用Java的对话框(Dialog)功能来实现元素之间的层叠效果。对话框可以有不同的层级,可以通过修改对话框的模态性和焦点来控制元素的层级关系。 6. 使用JavaFX:如果使用JavaFX来开发界面,可以使用StackPane来处理元素的层级关系。StackPane可以通过设置每个子组件的对齐方式和层级来控制元素的显示和遮挡关系。 总之,Java中有多种方法可以解决元素层级被遮挡的问题,具体方法的选择取决于具体的需求和实现方式。以上提到的方法仅供参考,开发者可以根据实际情况选择合适的方法来解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值