jquery - div位置固定在滚动条上,在页面顶部之前开始

标签 jquery css html scroll

当“侧边栏”到达“固定标题”而不是页面顶部时,如何使“侧边栏”固定位置?

jsfiddle

$(function() {
    var top = $('#sidebar').offset().top - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
    var footTop = $('#footer').offset().top - parseFloat($('#footer').css('marginTop').replace(/auto/, 0));

    var maxY = footTop - $('#sidebar').outerHeight();

    $(window).scroll(function(evt) {
        var y = $(this).scrollTop();
        if (y > top) {
            if (y < maxY) {
                $('#sidebar').addClass('fixed').removeAttr('style');
            } else {
                $('#sidebar').removeClass('fixed').css({
                    position: 'absolute',
                    top: (maxY - top) + 'px'
                });
            }
        } else {
            $('#sidebar').removeClass('fixed');
        }
    });
});

最佳答案

这一行:

if (y > top) {

假设您的固定标题没有填充(否则您也必须考虑到这一点)您可以更改为此

if (y >= top - $('#fixedHeader').height()) {

从你的侧边栏 css 中删除 top:0px;,并为你的固定标题添加预期的高度(目前你给它的高度是 40px),所以

#sidebar.fixed {
  position: fixed;
  top: 40px;
}

我还从你的 #fixedHeader 中删除了填充,因为你没有指定它是什么/如果你想要的话。如果您确实需要填充,如上所述,您也必须将其添加到您的计算中。

http://jsfiddle.net/VtPcm/706/

关于jquery - div位置固定在滚动条上,在页面顶部之前开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21830736/

相关文章:

javascript - 如何显示jquery slider 的当前值

javascript - 用户个人资料页面 - PHP

javascript - 选择文本时 Firefox 输入无法滚动

html - 如何在 "cells"之间添加 2px 间距

javascript - 使用 jQuery 从 ajax/jsonp 请求输出 html

javascript - 从 jquery call 调用 Angularjs HTTP 请求服务或选择 open

javascript - 加载 jQuery 插件和多个脚本的最佳实践

javascript - 与 onclick 事件一起使用时如何在 document.write() 函数中添加文本?

CSS子菜单悬停

javascript - 递增和递减计数器未正确设置状态