不多的时候,界面上须要一个固定位置的块,不论页面怎么滚动,始终停在它的位置,好比“返回顶部”、“给建议”、“分享按钮”、“广告”等等。css中有position: fixed;能够直接用,很方便,可是万恶的IE6却不支持,下面讲两种方法解决这个问题。 css
方法一: html
*html {/* 只有IE6支持 */ background-image: url(about:blank); /* 使用空背景 */ background-attachment: fixed; /* 固定背景 */ } #box { /* 非IE6浏览器使用固定元素 */ position: fixed; top: 0; left: 0; /* IE6改成绝对定位,并经过css表达式根据滚动位置更改top的值 */ _position: absolute; _top: expression(eval(document.documentElement.scrollTop)); }
这个方法要注意的是,*html使用固定位置空背景目的是解决滚动的时候抖动的问题,原理是这样,滚动页面浏览器从新计算出网页,而后执行css,因此固定元素产生延迟的抖动,使用固定背景以后,在滚动的时候先执行了css,再从新计算网页,因此没有抖动问题了。
document.documentElement.scrollTop是滚动条偏移的值,能够根据这个来设置位置,好比document.documentElement.scrollTop+200或者使用margin定位也行。 express
方法二:纯css的解决方法 浏览器
html { _overflow: hidden; } body { _height: 100%; _overflow: auto; } .box { position: fixed; left: 10px; top: 180px; _position: absolute; }
原理很简单,滚动条是body的滚动,固定元素是相对body定位,那么把它设置窗口那么高,不就一直是在窗口那个位置了? 安全
最后,我选择的是方法一。
虽然第二种看起来简单,可是我想直接设置了html或者body的height和overflow可能会带来未知的界面bug,不太敢用。第一种方法感受安全一些,并且能够查看淘宝网,也是用的第一种方法。 url