用标题扩大边距

时间:2016-05-24 14:07:45

标签: javascript jquery html css css3

我有一个标题,当你向下滚动时,它会保持静止状态并消失。然后,当您向上滚动时,标题会出现在用户在页面上的位置。这一切都很好,但是当我一直向上滚动到顶部时,我的边距由于标题而扩大,然后一旦到达最顶部,边距就会上升以匹配标题。

我有一张横幅图片。向下滚动一些方式,然后向上滚动。您将看到图像覆盖的更改边距。除此之外,标题是“烦恼”。

我能做些什么,保证金始终保持不变,并且不会重新启动?

var didScroll;
var lastScrollTop = 0;
var delta = 5;
var navbarHeight = $('header').outerHeight();

$(window).scroll(function(event){
    didScroll = true;
});

setInterval(function() {
    if (didScroll) {
        hasScrolled();
        didScroll = false;
    }
}, 250);

function hasScrolled() {
    var st = $(this).scrollTop();

    // Make sure they scroll more than delta
    if(Math.abs(lastScrollTop - st) <= delta)
        return;

    // If they scrolled down and are past the navbar, add class .nav-up.
    // This is necessary so you never see what is "behind" the navbar.
    if (st > lastScrollTop && st > navbarHeight){
        // Scroll Down
        $('header').removeClass('nav-down').addClass('nav-up');
    } else {
            if (st < navbarHeight) {
            if (st === 0 || st < 1) {
            $('header').css('position', 'static');
          }
        } else {
            $('header').css('position', 'fixed');
        }
        // Scroll Up
        if(st + $(window).height() < $(document).height()) {
            $('header').removeClass('nav-up').addClass('nav-down');
        }
    }

    lastScrollTop = st;
}


<header class="nav-down">
</header>


header {
    background: #F2F2F2;
    height: 120px;
    top: 0;
    transition: top 0.5s ease-in-out;
    width: 100%;
    z-index: 100;
    border-bottom: 1px solid #9C9C9C;
}
.nav-up {
    top: -123px;
}

1 个答案:

答案 0 :(得分:2)

这是因为当您将position的{​​{1}}更改为header时,会导致DOM被fixed的{​​{1}}轻推,因为你的标题不再是效果的DOM布局。

修复:

当您将height应用于header时,将margin-top添加到position: fixed此处的代码中(因为您使用的是现场网站时未经测试):< / p>

#service-img

编辑:

使用我的代码使用Chrome DevTools在您的网站上进行了测试,效果很好。希望有所帮助!