IE6下的relative定位的奇怪问题,大家来看看是不是bug
时间:2009-04-15
来源:互联网
#main里面没设position属性,只是在其父容器#root设了一个position: relative
#left包含在#main里面,其position: relative属性应该以其原来的位置作为参考,但在IE6里,却以#main的父元素#root来参考了,就因为#root元素设置了position: relative?可这又不是absolute定位要参考外部元素的relative啊?
甚至:在IE6下,只要窗口大小改变,#left就会消失!要重新刷新才会出来
代码如下:
提示:您可以先修改部分代码再运行
作者: JOVE2 发布时间: 2009-04-15
作者: ONEBOYS 发布时间: 2009-04-15
引用:
原帖由 ONEBOYS 于 2009-4-15 12:35 发表需要给left的父级main也加一个position:relative;
作者: JOVE2 发布时间: 2009-04-15
本来不加position:relative应该也没事的,跟那个margin:0 auto应该有关系。
和这个问题类似:http://bbs.blueidea.com/viewthread.php?tid=2918577
作者: ONEBOYS 发布时间: 2009-04-15
引用:
原帖由 JOVE2 于 2009-4-15 11:42 发表absolute定位是以外部第一个设了relative属性的元素作为定位参考
另外你遇到的问题是 IE6 的 bug,很多教材上都会提到的。
这时需要触发 #main 的 hasLayout,或者需要显示地声明其尺寸。你可以试一下。
作者: birdstudio 发布时间: 2009-04-15
作者: JOVE2 发布时间: 2009-04-16
作者: xiaoqiaoqiao 发布时间: 2009-04-16

作者: birdstudio 发布时间: 2009-04-16

或者把 root 的相对定位去掉也可以。当然,我估计 root 的相对定位另有它用,不能去掉。
应该是 Bug。
姑且这样理解:main 设置了 {margin: 0 auto;},其水平位置由 body 的宽度来决定,也就是说它没有确定的水平位置。貌似在这种情况下,IE6 无法获取其水平位置以供内部元素作为定位参照(并且错误地获取了相对定位的 root 水平位置),而此时设置相对定位可以让 IE6 重新计算并确定其水平位置,内部元素也就可以正确布局了。

作者: birdstudio 发布时间: 2009-04-16
引用:
原帖由 birdstudio 于 2009-4-16 12:29 发表看明白了,给 main 加一个相对定位就好了。呵呵,就是 2 楼的方法。

或者把 root 的相对定位去掉也可以。当然,我估计 root 的相对定位另有它用,不能去掉。
应该是 Bug。
姑且这样理解:main 设置了 { ...
提示:您可以先修改部分代码再运行
作者: JOVE2 发布时间: 2009-04-17
呵呵,实在无法解释。

作者: birdstudio 发布时间: 2009-04-17
作者: JOVE2 发布时间: 2009-04-18
作者: venos 发布时间: 2009-06-03
作者: redsky1987 发布时间: 2009-06-03

谢谢朋友们解答,刚遇到这个问题,现在OK了,哈哈
作者: sasalaolao 发布时间: 2011-04-27
作者: sasalaolao 发布时间: 2011-04-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28