TX:怎么实现IE6的position:fixed的兼容问题

一般来讲,为了兼容IE6和IE7一般会用到 css hack

css hack

即在CSS样式中加入一些特殊的符号,因为不同浏览器的浏览器识别不同的符号,所以可以达到不同的效果。(不同的浏览器识别不同的符号是由规定的,而CSS hack就是让你记住这个标准)

  1. IE6加入下划线或者星号:div{_color:red}
  2. IE7加入星号:div{*color:red}

例如:

div{
    backgound:green;
    *background:red;
}

/*浏览器中的背景色是绿色的,而在IE7中是红色的,因为*是IE7可识别的,所以会覆盖前边的绿色,而平常浏览器是不识别*号的,所以不会解析,是绿色。*/

有关position:fix的兼容

_html #menu{
  /*position: fixed;*/ 
  position: absolute;
  top: expression((e=document.documentElement.scrollTop)?e:document.body.scrollTop); 
}

/*仅仅有上边的代码可能还会存在定位元素闪动的问题,所以再加上*/
_html, _html body{
  background-image: url(about: blank);
  background-attachment: fixed;
}

有关top: expression((e=document.documentElement.scrollTop)?e:document.body.scrollTop)的解释

  1. expression: 是CSS表达式,其作用是把CSS属性和JS表达式关联起来,其实就是说:expression里边就是JS代码。

  2. 为什么出现了两种值? 为了实现兼容

    1. document.body.scrollTop此属性在xhtml标准网页或者更简单的说是带<!DOCTYPE ..>标签的页面里得到的结果是0
    2. document.documentElement.scrollTop在标准网页正生效
  3. e的作用?

    可以看做是一个变量,因为document.documentElement.scrollTop太长了

所以这句代码最终的意思就是:你浏览器窗口的滚动条滑到哪,这个元素的位置就在哪。

如果想要元素距页面顶部有一定的距离,可以再加上一个距离,比如100px

新浪使用:

position: fixed; 
top:0;
left:0;
/*对IE6实现position:fixed的效果*/
_position:absolute;
_top:expression(eval(document.documentElement.scrollTop)); 

再就是利用JS

 window.onload = window.onscroll = function () { 
        var sct = document.documentElement.scrollTop || document.body.scrollTop;     
        box.style.top = sct-box.offsetHeight+document.documentElement.clientHeight+'px'
}

参考链接:

document.documentElement.scrollTop || document.body.scrollTop;

关于position:fixed;的兼容性问题
完美解决IE6浏览器下不兼容position:fixed固定定位

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容