欢迎各位兄弟 发布技术文章
这里的技术是共享的
解决IE6浏览器下position:fixed固定定位问题
发布于:2011-10-05 18:07 | 点击:113 | 评论:0
使元素固定在浏览器的顶部:#top{
_position:absolute;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop));
}使元素固定在浏览器的底部:#top{
_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-top:10px; 或者 _margin-bottom:10px; 修改其中的数值控制元素的位置。
position:fixed; 闪动问题
现在,问题还没有完全解决。在用了上面的办法后,你会发现:被固定定位的元素在滚动滚动条的时候会闪动。
解决闪动问题的办法是在 CSS 文件中加入:
*html{
background-image:url(about:blank);
background-attachment:fixed;
} 其中 * 是给 IE6 识别的。
到此,IE6 的 position:fixed; 问题已经被解决了。这里还为大家搜集了一个采用JS解决的办法。
JS的解决方案
JS是我最不愿使用的解决方案,因为这种纯样式的bug用JS来解决有点大材小用,而且JS需要DOM载入后才执行,有可能会出现闪屏的现象.
JS的解决方案很简单,通过设置一个top来实现,top是指分页的上边距离document的上边的长度,可以被分解成下面几项(并不是完整的代码)
top = scrollTop + clientHeight - height(分页的高度)
scrollTop和clientHeight分别用来解决上面两个问题,滚动条的滚动会影响到scrollTop,而窗口的变化会影响到clientHeight,所以当这两个事件被触发时必须重置top,于是就形成类似下面的代码,但这段脚本的刷新率会非常高,估计有性能问题.
window.onresize = window.onscroll = function(){
//reset top
};
//离顶部多少
#fixed{position:absolute;top:expression(eval(document.body.scrollTop + 50));}