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