ie6定位,IE6 position:fixed (固定定位)的解决方案

ie6下是不支持position:fixed的,这是ie6下的一个bug,ie7+ firefox,chrome都支持固定定位的。怎么解决这个问题呢?
有两种方案:
1)针对ie6写hack,其他的浏览器仍然用position:fixed属性。使用position:fixed 很简单,这里就不再叙述了。下面介绍下怎么
解决ie6下的问题。
使用position:absolute 绝对定位来解决。构造一个滚动条,这个滚动条是包含该文档的内容滚动条(它可以是body的,也可以是某个div的)。很明显position:absolute是绝对
定位的。他脱离了整个文档流,他不相对该滚动条包含的文档,而应该是滚动条包含文档的上一级元素。
这个是body的滚动条。html为最顶级的元素,所有的元素都相对于它定位。代码如下:
1 2 3 4 5 IE6 position:fixed bug 6 26 33 34 35
36

37 IE6 position:fixed bug 38

39

position:fixed; vs position:absolute;
40

41
我一直在的 42
43
44
45
效果如下图
ie6定位,IE6 position:fixed (固定定位)的解决方案
如果要构造一个包含的元素是一个滚动条呢?
代码可以这样修改
1 2 3 4 5 IE6 position:fixed bug 6 26 34 35 36
37

38 IE6 position:fixed bug 39

40

position:fixed; vs position:absolute;
41

42
我一直在的 43
44
45
46
这2种方案都可以解决问题,但是这个方案有一个弊端 ,就是在不同屏幕分辨率的情况下会出现位置不对的现象,道理很简单,因为要指定left或者right的值,由于屏幕不一样,当然这些值也是不一样的。
现在的布局一般都是居中的,设置了宽度的。这也比较难解决,必须使用js脚本来处理这类问题。
2)完全使用position:absolute来解决固定定位问题。因为其他的浏览器都支持绝对定位。
代码如下:
1 2 3 4 5 IE6 position:fixed bug 6 18 19 20
21
22

23 IE6 position:fixed bug 24

25
26
我一直在的 27
28
29
30
31
在ie6,7,8,9,ff,chrome中均测试通过。注意一点:不能给外包含的元素mod-test设置高度,不然的话,是没有滚动条的。而应该在里面设置一个容器,它设置一个高度。
Tags:  固定电话定位 ie6层定位 ie6相对定位 ie6绝对定位 ie6定位

延伸阅读

最新评论

发表评论