2013-03-06 111 views
0

我有4個div(標題,左右內容和頁腳)。我有right content滾動跟隨,我想要發生的是當頁腳的頂部遇到right的底部,右邊也滾動與左邊div一起。(div滾動跟隨)當div遇到anothere div時,(div滾動跟隨)也滾動到其他div

我設置了我目前在jsfiddle中的預覽。

+0

嘗試看看這個。看起來和你的問題一樣.. http://stackoverflow.com/questions/15215660/fixing-unfixing-div-when-scrolling – kirk 2013-03-06 01:36:31

+0

謝謝你的回覆,我會檢討我們是否有同樣的情況。 – jhunlio 2013-03-06 01:39:43

+0

我認爲我們的情況不一樣,或者我錯了,謝謝你的回覆。 – jhunlio 2013-03-06 02:05:03

回答

1

您可以使用Math.min()和預先值封頂右側欄的marginTop設置,這樣纔不會超越動畫它接觸頁腳點:

我點名預先計算出的值rightDelta

$(function() { 
    var $sidebar = $("#right"), 
     $window = $(window), 
     rightOffset = $sidebar.offset(), 
     rightDelta = $("#footer").offset().top - $("#header").offset().top - $("#header").outerHeight() - $("#right").outerHeight(), 
     topPadding = 15; 

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

}); 

Updated fiddle

事實上,你可以使用Math.min()Math.max()結合,使滾動處理一個語句功能:

$(function() { 
    var $sidebar = $("#right"), 
     $window = $(window), 
     rightOffset = $sidebar.offset(), 
     rightDelta = $("#footer").offset().top - $("#header").offset().top - $("#header").outerHeight() - $("#right").outerHeight(), 
     topPadding = 15; 

    $window.scroll(function() { 
      $sidebar.stop().animate({ 
       marginTop: Math.max(Math.min($window.scrollTop() - rightOffset.top + topPadding, rightDelta), 0) 
      }); 
    }); 

}); 

Updated fiddle

+0

你的想法很聰明謝謝你的回答。 – jhunlio 2013-03-06 03:25:36