對不起,兩年後重新打開這篇文章,但對於搜索如何粘貼一個長/巨大的側邊欄的人會有所幫助。回收你的代碼,你只需要調整兩行,你會得到預期的效果:
$(function() {
var lst = 0;
var height = $('.sidebar').height();
var offset = $(".sidebar").offset();
$(window).scroll(function() {
if ($(window).scrollTop() > lst) { //downscroll
if ($(window).scrollTop() > offset.top) {
$(".sidebar").stop().animate({
marginTop: $(window).scrollTop() - 100
});
} else {
$(".sidebar").stop().animate({
marginTop: 0
});
}
} else { //upscroll
if ($(window).scrollTop() < offset.top) {
$(".sidebar").stop().animate({
marginTop: $(window).scrollTop()
});
}
}
lst = $(window).scrollTop();
offset = $(".sidebar").offset();
});
});
Althoug它通常是編碼交替的CSS屬性position: fixed
和position: relative
,當你想滾動和停止邊欄(如WordPress的時編輯帖子/頁做),這是另一個版本時這個屬性不符合我們的CSS兼容:
$(function() {
var lst = 0;
var sidebar = $('.sidebar');
var container = sidebar.parent('div').height()+400;
var height = sidebar.height();
var offset = sidebar.offset();
$(window).scroll(function() {
if ($(window).width()>768) {
if ($(window).scrollTop() > lst) { //downscroll
var bottom_trigger = parseFloat(sidebar.css('paddingTop')) + parseFloat(offset.top) + height;
if (($(window).scrollTop()+$(window).height()) > (bottom_trigger) && ($(window).scrollTop()+$(window).height()) < container) {
sidebar.css("padding-top", "+=" + ($(window).scrollTop()-lst));
}
} else { //upscroll
var top_trigger = parseFloat(sidebar.css('paddingTop'))+parseFloat(offset.top)-100;
if ($(window).scrollTop() < top_trigger) {
sidebar.css("padding-top", "+=" + ($(window).scrollTop()-lst));
}
}
lst = $(window).scrollTop();
}
});
你爲什麼不只是看他們的代碼?無論如何,他們改變它的CSS位置:固定 – 2013-05-07 09:45:15
是的,但他們是如何檢測鼠標位置?注意其長邊欄,而不是你的標準短邊欄 – stefanie 2013-05-07 10:13:42
鼠標位置與它無關。你只需要檢查頁面滾動的距離 – 2013-05-07 10:16:12