javascript - 持久 header 导致网站高度崩溃

标签 javascript jquery html css

这是我的代码:

http://jsfiddle.net/KCb5z/8/embedded/result/ http://jsfiddle.net/KCb5z/8/

$(function () {

    var $select = $('#select');
    var $window = $(window);
    var isFixed = false;
    var init = $select.length ? $select.offset().top : 0;

    $window.scroll(function () {
        var currentScrollTop = $window.scrollTop();
        if (currentScrollTop > init && isFixed === false) {
            isFixed = true;
            $select.css({
                top: 0,
                position: 'fixed'
            });
        } else if (currentScrollTop <= init && isFixed === true) {
            isFixed = false;
            $select.css('position', 'relative');
        }
    });

    $(".nav").click(function (e) {
        e.preventDefault();
        var divId = $(this).attr('href');
        $('body').animate({
            scrollTop: $(divId).offset().top - $select.height()
        }, 500);
    });

});

问题是当我滚动经过黄色栏时,它会将其 CSS 从相对更改为固定。这意味着网站现在不那么高了,它把所有的内容都拖了上去,造成了一种故障效果。

这几乎就像我需要一个包含黄色栏的 div 以保持该高度,或者插入某种 div 以保持网站高度相同(无论该栏是否停靠)。

谁能告诉我这是如何实现的?

最佳答案

当position设置为fixed时,在body的顶部添加padding以容纳它。同样,当元素未固定时删除填充:

if (currentScrollTop > init && isFixed === false) {
    isFixed = true;
    $select.css({
        top: 0,
        position: 'fixed'
    });
    $('body').css('padding-top', $select.height());
} 
else if (currentScrollTop <= init && isFixed === true) {
    isFixed = false;
    $select.css('position', 'relative');
    $('body').css('padding-top', 0);
}

Example fiddle

请注意,padding-top 可以设置在要修复的元素上方的任何元素上(如果需要)。我只使用了 body,因为它最方便作为示例。

关于javascript - 持久 header 导致网站高度崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23610032/

相关文章:

jquery - 添加选项以使用数据属性 jQuery 进行选择

javascript - 为什么要 y.innerHTML = x.innerHTML;避免?

php - 在 PHP 代码中应用 HTML 代码 - 语法错误

javascript - 如何获取 DOM 中的前一个元素?

javascript - 没有带有 ExtractTextPlugin 的 js 源映射

javascript - rxjs 可观察到的 : handle unsubscribe of all subscribe

javascript - 如何使用 jQuery 使某个 Div ID 显示在不同的 Div ID 上或之后

javascript - ie9 - FormData 未定义 - javascript

html - 文本不围绕 iPhone 上的 float 图像

javascript - 在css背景上从数据库动态加载图像