0

谁能告诉我如何实现滚动“侧边栏”跟随用户滚动页面,但在到达“页脚”时停止

<div id="section">
    <div id="sidebar"> </div>
    <div id="hello"> </div>
</div>
<div id="footer"> </div>

div 'section' 没有设定高度,这意味着只要 id 为 hello 的 div 增长,它就会增长。这意味着 'hello' 和 'section' 都没有设定高度

div 'section' 的宽度为 728,'hello' 的宽度为 400。'sidebar' 的宽度为 200。

我想要发生的是(使用jquery)当人滚动略过侧边栏时,侧边栏应该与页面一起滚动。但是侧边栏不应与页脚重叠。

因此侧边栏应该只与页面一起滚动直到 div 部分的末尾。

红色块(在我的网站上)是要滚动的侧边栏。

4

1 回答 1

1

像下面这样的东西应该让你开始(仅测试铬):http: //jsfiddle.net/MyFB9/3/

JS

var $sb = $('#sidebar'); 
var $foot = $('#footer');
var footerTop = $foot.offset().top;
$foot.html(footerTop);
$(document).scroll(function(){
    //+ 100 since the height of the sidebar is 100px

    if($(this).scrollTop() + 100 > footerTop){
        //when we get close, line up perfectly with the footer
        $sb.css({top:footerTop - 100}); 
    }else{
        //otherwise scroll with the page
        $sb.css({top:$(this).scrollTop()}); 
    }

    //Visualy display the position of the bottom edge of the sidebar
    $sb.html($sb.offset().top + 100)
});

HTML

<div id="section">
    <div id="sidebar"> </div>
    <div id="hello"> </div>
</div>
<div id="footer"> </div>​

CSS

#section{
 vertical-align:top;   
}
#sidebar, #hello{
 display:inline-block;
 position:relative;    
 vertical-align:top; 
 top:0px;
 left:0px;   
}
#sidebar{
 height:100px; 
 width:50px;
 background-color:red;   
}
#hello{
 height:900px; 
 width:50px;
 background-color:green;   
}
#footer{
 height:450px;
 width:100px;
 background-color:yellow;    
}
​
于 2012-06-07T02:51:48.663 回答