2012-08-15 97 views
0

我的目标是让社交共享栏滚动页面从一个元素到另一个元素。你可以在这里看到我的进展http://ossian.statenews.com/~matt/statenews-redesign/docs/article.html。此时元素会一直滚动到底部,因为我想滚动到“相关故事”的顶部。这里是我的jQuery:........限制滚动到元素jQuery

$(document).ready(function() { 
var $sidebar = $("#sharebox"), 
$window = $(window), 
offset  = $sidebar.offset(), 
topPadding = 50; 

$window.scroll(function() { 
    if ($window.scrollTop() > offset.top) { 
     $sidebar.stop().animate({ 
     marginTop: $window.scrollTop() - offset.top + topPadding 
     }); 
    } else { 
    $sidebar.stop().animate({ 
    marginTop: 0 
    }); 
    } 
}); 
}); 

回答

0

if语句只检查window scrollTop的,你应该检查.related-stories了。

if ($window.scrollTop() > offset.top && $window.scrollTop() < $('.related-storie').scrollTop()) { 
    $sidebar.stop().animate({ 
     marginTop: $window.scrollTop() - offset.top + topPadding 
    }); 
} 
+0

由于新版本。你能否给我一个我如何包含这个的例子? – mtthwbsh 2012-08-15 19:17:12

+0

@mttwbsh当然,看看我的更新。 – 2012-08-15 19:20:02

0

这将是更好的用户体验,如果您使用的块的固定位置,像

$(document).ready(function() { 
    var $sidebar = $("#sharebox"), 
    $window = $(window), 
    offset  = $sidebar.offset(), 
    topPadding = 50, 
    $leadStory = $('.leadstory'); 
    $relatedStories = $('.related-stories'); 

    $sidebar.css({ 
     position : 'fixed', 
     'margin-left' : 0, 
     left : offset.left, 
     top : offset.top 
    }); 

    var criteria = $relatedStories.offset().top - $sidebar.height(); 
    $window.scroll(function() { 
     if ($window.scrollTop() > criteria) { 
      $sidebar.css({ 
       top : offset.top - ($window.scrollTop() - criteria) 
      }); 
     } else { 
      $sidebar.css({ 
       top : offset.top 
      }); 
     } 
    }); 
}); 

退房上述

+0

我应用了这个,当我滚过它时,它似乎消失了,然后当我滚动回顶端时,它又重新出现。 – mtthwbsh 2012-08-15 19:48:41

+0

代码中可能存在一些错误... – 2012-08-15 20:13:25

+0

查看 – 2012-08-15 20:45:21