头闻号

惠州市美和丽商贸有限公司

彩妆化学品|皮肤用化学品|洗面奶|化妆水|护肤膏霜|护肤乳液

首页 > 新闻中心 > 科技常识:IE6浏览器不支持固定定位(position:fixed)解决方案
科技常识:IE6浏览器不支持固定定位(position:fixed)解决方案
发布时间:2023-02-01 10:20:08        浏览次数:2        返回列表

今天小编跟大家讲解下有关IE6浏览器不支持固定定位(position:fixed)解决方案 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关IE6浏览器不支持固定定位(position:fixed)解决方案 的相关资料,希望小伙伴们看了有所帮助。

  今天在学习的时候 突然发现在IE6浏览器下 position:fixed不管用了:复制代码代码如下: <!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/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;">position:fixed元素</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 动态设置其偏移量 但是我发现只能实现在最底部和最顶部固定。要想设置具体的位置还需要配合_margin。

使元素固定在浏览器的顶部:复制代码代码如下: #top { _position: absolute; _bottom: auto; _top: expression(eval(document.documentElement.scrollTop)); } 使元素固定在浏览器的底部:复制代码代码如下: #bottom { _position: absolute; _bottom: auto; _top: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0))); }   这两段代码只能实现在最底部跟最顶部 你可以使用_margin修改其中的数值控制元素的位置。

  看到这里 你一定以为已经完事了。NO!还有bug:被固定定位的元素在滚动滚动条的时候会出现一闪一闪的情况。解决这个问题的办法是在 CSS 文件中加入:复制代码代码如下: * html{ background-image:url(about:blank); background-attachment:fixed; } 或者:复制代码代码如下: body { _background-attachment:fixed; _background-image:url(about:blank); }   当然 也可以用吧javascript方法解决 不过有点大材小用:复制代码代码如下: window.onresize = window.onscroll = function(){ //code };

来源:爱蒂网