您的位置:首页 > 其它

IE6/7下绝对定位(position:absolute)元素消失

2012-08-09 11:36 169 查看
在IE6、7中如果一个浮动元素与绝对定位元素相邻的话,在某些情况下绝对定位元素将会消失。在网上找了一下,有如下解释:

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

测试代码1如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>IE6/7绝对定位元素消失-110201.com</title>
<style type="text/css">
.wrap { position:relative; width:300px; height:120px; margin:0 auto; background-color:#000 }
.pa { position:absolute; top:10px; right:10px; height:20px; padding:5px; width:20px; border:1px solid #fff; background-color:#f00; color:#00f; line-height:20px; }
.floatDiv { float:left; width:200px; height:100px; line-height:100px; text-align:center;  background-color:#0ff; color:#f00; }
</style>
</head>

<body>
<div class="wrap">
<div class="floatDiv">Float A</div>
<div class="pa">PA</div>
</div>
</body>
</html>

结果:IE6、7、8、9、Firefox下均表现正常。

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

只需在测试代码1的基础上,在.pa的样式中加入clear:both属性即可。

结果:IE6、7、8、9、Firefox下均表现正常,与上面的描述有差异,不知为何。。。

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

只需在测试代码1的基础上,把.floatDiv中的width属性值改为300px即可。

结果:IE6中绝对定位元素消失,IE7、8、9、Firefox正常,与上面的描述无异。

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

只需在测试代码1的基础上,把.floatDiv中的width属性值改为300px,在.pa的样式中加入clear:both属性即可。

结果:IE6、7、8、9、Firefox下均表现正常,与上面的描述有差异,不知为何。。。

测试环境:win7 IEtester V0.4.11 Firefox 9.0.1

上面的问题可能是由于环境的原因,因为IEtester在win7下还有很多问题,如:IE7不能打开非服务器解析的文件(本地的文件拖进去没反映),IE6的透明效果等等。

最后就是上面问题的解决方法:把绝对定位元素和浮动元素分开,就是在两个元素中间加一个空白的div就行啦!

原文转自:http://www.110201.com/article/314.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐