jQuery滚动/跟随侧边栏(div)
使用jquery技术从中滚动/跟踪侧栏 唯一的问题是,当侧边栏(.sidebar)到达页脚(.footer)时,它会将页脚向下推近页脚的高度。jQuery滚动/跟随侧边栏(div),jquery,scroll,sidebar,Jquery,Scroll,Sidebar,使用jquery技术从中滚动/跟踪侧栏 唯一的问题是,当侧边栏(.sidebar)到达页脚(.footer)时,它会将页脚向下推近页脚的高度。 如果页脚高度为200px,侧边栏将页脚推到~200px(Internet Explorer),~50px(Firefox、Chrome、Opera),然后显示页脚。200px内容和页脚之间的空白是我真正的问题。 我希望侧边栏停止滚动页脚的起始位置。试试看 threshold = foffset.top - $sidebar.height() - off
如果页脚高度为200px,侧边栏将页脚推到~200px(Internet Explorer),~50px(Firefox、Chrome、Opera),然后显示页脚。
200px内容和页脚之间的空白是我真正的问题。
我希望侧边栏停止滚动页脚的起始位置。
试试看
threshold = foffset.top - $sidebar.height() - offset.top
也许是一个更干净的代码:
$(function() {
var $sidebar = $("#sidebar"),
$window = $(window),
offset = $sidebar.offset(),
topPadding = 15;
$window.scroll(function() {
if ($window.scrollTop() > offset.top) {
$sidebar.stop().animate({
marginTop: $window.scrollTop() - offset.top + topPadding
}, 400);
} else {
$sidebar.stop().animate({
marginTop: 0
}, 400);
}
});
});
您可以使用“其他人”值更改
400
,以更改动画的持续时间(将其设置为0,让侧边栏设置为“不”动画)。问题太老了,在阅读其他答案后,我针对我的案例提出了此问题。我希望这能帮助以后的人
$(function() {
var $sidebar = $("#sidebar"),
$window = $(window),
offset = $sidebar.offset(),
topPadding = 15;
$window.scroll(function() {
if ($window.scrollTop() > offset.top) {
if (($window.scrollTop())> ($("#following").offset().top + $("#following").height() - $sidebar.height())) {
;
} else {
$sidebar.stop().animate({
marginTop: $window.scrollTop() - offset.top + topPadding
}, 400);
}
} else {
$sidebar.stop().animate({
marginTop: 0
}, 400);
}
});
});
因此,您需要让脚本从窗口高度计算中减去页脚高度…..尝试
threshold=foffset.top-$sidebar.height()-offset.top
@Vicky,这很有效,thanks@Ashish额外的滚动是因为侧边栏的顶部位置,上面的代码从滚动高度删除了它
$(function() {
var $sidebar = $("#sidebar"),
$window = $(window),
offset = $sidebar.offset(),
topPadding = 15;
$window.scroll(function() {
if ($window.scrollTop() > offset.top) {
if (($window.scrollTop())> ($("#following").offset().top + $("#following").height() - $sidebar.height())) {
;
} else {
$sidebar.stop().animate({
marginTop: $window.scrollTop() - offset.top + topPadding
}, 400);
}
} else {
$sidebar.stop().animate({
marginTop: 0
}, 400);
}
});
});