IE6浏览器不支持固定定位(position:fixed)解决方
今天在学习的时候,突然发现在IE6浏览器下,positionfixed不管用了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://.w3./TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
</head>
<body>
<div style="width:600px;height:2000px;background-color:#f90;">正常普通流元素</div>
<div style="position:fixed;bottom:10px;left:50px;width:400px;height:200px;background-color:#111;color:#fff;">positionfixed元素</div>
</body>
</html>
上面的代码在IE6中打开,效果如下
而在其他浏览器(IE7+、firefox、opera、safari、chrome)下则正常显示
经过多次测试,原来不只在IE6下,在IE7、IE8浏览器下,若是文档使用的是怪异(quirk)模式也会导致这个问题。这也难怪,当IE7、8使用怪异模式时,渲染引擎将以接近IE6的渲染模式来解析CSS。,我得出了以下结论
IE6、IE7(quirk模式)、IE8(quirk模式) 浏览器将 'position' 特性的 fixed 值当作错误值处理。从而导致使用固定定位的元素使用 'position' 的默认值 static。即这个元素在 此时 变成了普通流中的元素,这必然会导致布局错位等问题。
解决方案在 IE6、IE7(quirk模式)、IE8(quirk模式)中为固定定位元素设置 '_position:absolute',再通过 JavaScript 脚本或者 CSS Expression 动态设置其偏移量,我发现只能实现在最底部和最顶部固定。要想设置具体的位置还需要配合_marg。
使元素固定在浏览器的顶部
# {
_position: absolute;
_bottom: auto;
_: expression(eval(document.documentElement.scrollTop));
}
使元素固定在浏览器的底部
#bottom {
_position: absolute;
_bottom: auto;
_: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.margTop,10)||0)-(parseInt(this.currentStyle.margBottom,10)||0)));
}
这两段代码只能实现在最底部跟最顶部,你可以使用
_marg
修改其中的数值控制元素的位置。
看到这里,你一定以为已经完事了。NO!还有bug被固定定位的元素在滚动滚动条的时候会出现一闪一闪的情况。解决这个问题的办法是在 CSS 文件中加入
html{
background-image:url(about:blank);
background-attachment:fixed;
}
或者
body {
_background-attachment:fixed;
_background-image:url(about:blank);
}
,也可以用吧javascript方法解决,不过有点大材小用
wdow.onresize = wdow.onscroll = function(){
//code
};
网站设计
- 静宁会SEO的网站建设公司:全面提升您的网络影
- 提升在线业务的关键:选择最佳的丽水网站建设
- 浙江网站优化发展潜力如何
- 井研专业的网站建设公司:打造您的在线品牌
- 灵山SEO网站建设公司:提升您的在线业务表现
- 蒙城网站建设优化公司:提升您网站表现的理想
- 阳谷企业网站优化:提升线上业务力的关键
- 樟树专业的网站建设公司:打造您在线业务的坚
- 通河百度SEO排名的策略与技巧
- 重庆百度快照排名如何进行精准的客户引流
- 重庆百度快照排名
- 常宁便宜的建站公司:助您轻松打造在线业务
- 巫溪百度网站优化:提升网站曝光率与流量的关
- 湖北整站优化怎么做才能放大客户需求
- 闸北网站建设多少钱?全面解析与预算规划
- 辽宁企业网站优化怎么做电话营销