jquery - 如何将高度超过视口(viewport)的固定div粘贴到 body

标签 jquery css html

我知道 div 的定位(固定、绝对和相对)。我可以将一个固定的 div 附加到 body 上,这样它在滚动 body 时会保持在相同的位置。在这里,我要问一个有点不同的问题。

我有一个高度超过视口(viewport)高度的侧边栏,我希望它固定在主体上。滚动 body 时,它也应该滚动,但一旦固定 div 的底部可见,它不应该与 body 一起滚动。

例如,Facebook 墙的右侧边栏与主体一起滚动,一旦右侧边栏的底部可见(固定),则停止与主体滚动。

最佳答案

这可以通过将侧边栏设置为绝对并在窗口滚动位置通过底部后立即将其更改为固定来实现。

CSS:

#sidebar {
    height: 120%;
    width: 100px;
    border: 2px solid blue;
    padding: 20px;
    margin: 20px;
    position: absolute;
    top: 0;
}

jQuery:

$(document).ready(function() {
    var bottomPos = $('#sidebar').outerHeight(true) - $(window).height();
    $(window).scroll( function() {
        if ( $(window).scrollTop() > bottomPos ) {
            $('#sidebar').css({'position':'fixed','top':'auto','bottom':'0px'});
        } else {
            $('#sidebar').css({'position':'absolute','top':'0px'});
        }
    });
});

a demo .

关于jquery - 如何将高度超过视口(viewport)的固定div粘贴到 body ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25996585/

相关文章:

javascript - jQuery - 无法将类添加到具有 onClick 事件的按钮

Jquery 如果 span[itemprop=employmentType] 有 = 特定的文本/输出

html - <input/> 上的 Opera 12.14 border-radius 不工作

jQuery克隆和appendTo复制错误的内容

javascript - jQuery - 通过父级按类获取元素

jquery - 如何使用hammer.js实现两指点击

javascript - 如何在没有 css 的情况下检查鼠标是否在屏幕上的 "invisible"框内(JavaScript 和 jQuery)

html - 如何保持背景图像质量清晰?

javascript - 使用剪辑路径显示/滑动图像

javascript - 使用 javascript 跟踪 iframe 的 http 请求