2010-08-19 59 views

回答

0

我的假设(从第一个示例链接)是,而不是只有#sidebar保持在视图中,而是希望让另一个元素也滚动窗口(即登录到用户的详细信息)。

最简单的方法是将这一信息添加到您现有的滚动元素:

<ul id="sidebar"> 
    <li id="user-details">Name: John Doe<br/>Email: [email protected]</li> 
    <!-- remaining links here --> 
</ul> 

但是,如果要滚动与窗口两个元素:

<ul id="sidebar"> 
    <!-- sidebar links --> 
</ul> 
<ul id="user-details"> 
    <!-- user details --> 
</ul> 

这纯粹是在$(window).scroll()事件处理程序中为他们的margin-top设置动画:

编辑

下面的代码滚动#sidebar直到它到达滚动2000像素,在该点停止和涡卷#user-details直到它到达滚动的4000px:

// constants for the scrolling 
var offsetSidebar = $("#sidebar").offset(); 
var offsetUserDetails = $("#user-details").offset(); 

// on scroll of window 
$(window).scroll(function() { 
    scrollElement($("#sidebar"), offsetSidebar, 2000); 
    scrollElement($("#user-details"), offsetUserDetails, 4000); 
}); 

// handle the scrolling 
function scrollElement(elem, offset, boundary){ 
    var currOffset = elem.offset(); 
    if(currOffset.top < boundary && $(window).scrollTop() < boundary){ 
     if ($(window).scrollTop() > offset.top) { 
      elem.stop().animate({marginTop: $(window).scrollTop() - offset.top}); 
     } else { 
      elem.stop().animate({marginTop: 0}); 
     } 
    } 
} 

你可以看到它in action here

+0

对不起,我想我没有解释得这么好,我想要的是有一个盒子A跟着你,直到它到达某个点。现在box a已经停了,box B会开始跟着你,直到达到某个点。现在方框b已停止,方框c将开始跟随你,依此类推 – Jacinto 2010-08-19 22:29:48

+0

这仍然很容易。你只需要为所有的盒子设置边界条件来测试'$(window).scrollTop()'。因此,例如,框A将一直跟随到$(window).scrollTop()> 2000',框会一直跟到'$(window).scrollTop()> 4000'等等。我已经更新了我的示例以便您可以看到我的意思是。 – Pat 2010-08-20 00:40:28

+0

我可以将边界作为课程或ID吗? – Jacinto 2010-08-20 21:14:48