jQuery 滚动/跟随侧边栏 (div)

标签 jquery scroll sidebar

使用 jquery 技术实现滚动/跟随侧边栏 Help with Scroll/Follow Sidebar

$(function() {
    var $sidebar   = $(".sidebar"),
        $window    = $(window),
        $footer    = $(".footer"), // use your footer ID here
        offset     = $sidebar.offset(),
        foffset    = $footer.offset(),
        threshold  = foffset.top - $sidebar.height(), // may need to tweak
        topPadding = 15;

    $window.scroll(function() {
        if ($window.scrollTop() > threshold) {
            $sidebar.stop().animate({
                marginTop: threshold
            });
        } else if ($window.scrollTop() > offset.top) {
            $sidebar.stop().animate({
                marginTop: $window.scrollTop() - offset.top + topPadding
            });
        } else {
            $sidebar.stop().animate({
                marginTop: 0
            });
        }
    });
});

唯一的问题是当侧边栏(.sidebar)到达页脚(.footer)时,它会将页脚向下推到接近页脚的高度。
如果页脚的高度为 200 像素,侧边栏会将页脚推至 ~200 像素(Internet Explorer)、~50 像素(Firefox、Chrome、Opera),然后显示页脚。
内容和页脚之间的 200 像素空白是我真正的问题。< br/> 我希望侧边栏在页脚开始处停止滚动。

最佳答案

也许更简洁的代码:

$(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,让侧边栏“不”动画)。

关于jQuery 滚动/跟随侧边栏 (div),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18002101/

相关文章:

jquery - 使用 webpack 2 加载 jQuery 插件

javascript - 如何将对象(及其属性/值)打印到 DOM

android - 如何制作双向 RecyclerView?

android - GridView 的平滑滚动

html - 2 带侧边栏的列响应式布局

html - 两个 div 元素并排放置的问题

javascript - 有没有办法反转 jQuery UI 图标或 Bootstrap 图标?

javascript - 你将如何创建一个 JQuery/svg 单击拖动选择轮廓效果?

javascript - 无需滚动即可检测滑动方向

angular - 如何在登录页面angular 2上隐藏侧边栏