一般来讲,为了兼容IE6和IE7一般会用到 css hack
css hack
即在CSS样式中加入一些特殊的符号,因为不同浏览器的浏览器识别不同的符号,所以可以达到不同的效果。(不同的浏览器识别不同的符号是由规定的,而CSS hack就是让你记住这个标准)
- IE6加入下划线或者星号:
div{_color:red} - 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)的解释
expression: 是CSS表达式,其作用是把CSS属性和JS表达式关联起来,其实就是说:expression里边就是JS代码。-
为什么出现了两种值? 为了实现兼容
-
document.body.scrollTop此属性在xhtml标准网页或者更简单的说是带<!DOCTYPE ..>标签的页面里得到的结果是0 -
document.documentElement.scrollTop在标准网页正生效
-
-
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;