【问题标题】:How to make fixed sidebar stop at footer?如何使固定侧边栏停在页脚处?
【发布时间】:2011-12-08 21:17:36
【问题描述】:

现在我将这段代码用于我的有条件固定侧边栏:

$(function() {
 var a = function() {
 var b = $(window).scrollTop();
 var d = $("#sidebar-right").offset().top;
 var c=$("#scroller");
 var e=$("#scroller-left");
 if (b>d) {
  c.css({position:"fixed",top:"5px"})
  e.css({position:"fixed",top:"5px"})
 } else {
  if (b<=d) {
    c.css({position:"relative",top:""})
    e.css({position:"relative",top:""})
  }
 }
};
$(window).scroll(a);a()
});

问题是:如果侧边栏内容太高,它会超出页脚。我必须在代码中添加什么,让它在页脚处停止?

非常感谢。

【问题讨论】:

    标签: jquery fixed sidebar


    【解决方案1】:

    您是希望页面始终足够高以适合侧边栏,还是要剪掉侧边栏以使其始终适合?

    对于前者,只需使作为文档流一部分的元素(例如您的示例中的#sidebar-right)大于然后滚动条;

    if ($("#sidebar-right").height() < $("#scroller").height())
        $("#sidebar-right").height($("#scroller").height());
    

    如果是后者,则剪掉侧边栏,隐藏任何溢出;

    if ($("#scroller").height() > ($("#footer").offset().top - $("#sidebar-right").offset().top)) {
        $("#scroller").css("overflow", "hidden");
        $("#scroller").height($("#footer").offset().top - $("#sidebar-right").offset().top));
    }
    

    【讨论】:

    • 嗨,马特,我想要第二种方式。但是我有一个问题:它是在顶部还是底部被切断?我试图实现代码,但我不知道把它放在哪里。无论我把它放在哪里,它都使整个侧边栏不再固定。感谢您的快速帮助!!莉娜
    • 更多信息:#scroller 只是侧边栏内容周围的一个小 div。我不知道它是否需要,但它对我有用,我很高兴,不需要改变任何东西:)
    • 我的代码只是一个示例。要让它工作,您至少需要一个带有id="footer" 的页脚元素。除此之外,您可以在 $(function() { )); 中调用它
    • 我有一个 id="footer" 的元素,但如果我把它放在你说的地方,侧边栏会留在原处并且​​在向下滚动时不会跟随:(你有意见为什么?谢谢,莉娜
    • 第一个是: ("#sidebar-right").height()
    猜你喜欢
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2023-03-16
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多