我有4個div(標題,左右內容和頁腳)。我有right content
滾動跟隨,我想要發生的是當頁腳的頂部遇到right
的底部,右邊也滾動與左邊div
一起。(div滾動跟隨)當div遇到anothere div時,(div滾動跟隨)也滾動到其他div
我設置了我目前在jsfiddle中的預覽。
我有4個div(標題,左右內容和頁腳)。我有right content
滾動跟隨,我想要發生的是當頁腳的頂部遇到right
的底部,右邊也滾動與左邊div
一起。(div滾動跟隨)當div遇到anothere div時,(div滾動跟隨)也滾動到其他div
我設置了我目前在jsfiddle中的預覽。
您可以使用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
});
}
});
});
事實上,你可以使用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)
});
});
});
你的想法很聰明謝謝你的回答。 – jhunlio 2013-03-06 03:25:36
嘗試看看這個。看起來和你的問題一樣.. http://stackoverflow.com/questions/15215660/fixing-unfixing-div-when-scrolling – kirk 2013-03-06 01:36:31
謝謝你的回覆,我會檢討我們是否有同樣的情況。 – jhunlio 2013-03-06 01:39:43
我認爲我們的情況不一樣,或者我錯了,謝謝你的回覆。 – jhunlio 2013-03-06 02:05:03