div随滚动条滚动到页面头部固定不动然后距离底部多少像素还原

JavaScript019

div随滚动条滚动到页面头部固定不动然后距离底部多少像素还原,第1张

获取div的高度:offsetTop和滚动条滚动的高度document.scrollTop,

if(div的高度<滚动条的高度){这里设置div的属性position为fixed,top:0}else{这里设置div高度为原来的高度}

<body>

<div style="background: #999height: 500px"></div>

<div id="nav" style="width: 100%background: #eee">菜单</div>

<div style="background: #999height:1900px"></div>

<script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript">

$(function () {

var nav= $('#nav')

nav.attr('otop', dv.offset().top)//存储原来的距离顶部的距离

$(window).scroll(function () {

st = Math.max(document.body.scrollTop || document.documentElement.scrollTop)

if (st >= parseInt(nav.attr('otop'))) {

if (nav.css('position') != 'fixed') nav.css({ 'position': 'fixed', top:0})

}else if (nav.css('position') != 'static') nav.css({ 'position': 'static' })

})

})

</script>

</body>

这种固定导航的效果,很多电商例如淘宝,都会有。

我说说他们的实现方法。

一,js算scroll的高度,就是滚动条滚了多高。

二,算悬浮的导航距离顶部的高度。

三,window的时候,对比这两个高度,如果一大于二,那么导航加个fixed。(IE7以上都有效)

然后用js处理下IE6就行。

建议去搜下相关js代码,我一般都用jQuery写。

你想要的table的头部也是一个道理,但是thead没办法fixed吧?

所以弄2个table吧,1个table放头部内容,1个table放具体内容。

另外,expression慎用,消耗浏览器资源不是一点两点。