当向下滚动页面时固定元素保持在顶部时,内容在固定元素下消失

时间:2015-09-16 12:40:05

标签: javascript jquery html css scroll

我遇到了一些内容问题,当页面向下滚动时会在固定元素下消失。下面的JS小提琴很好地展示了它。 基本上,7号以上的内容跳过固定导航元素。我假设在将标题放在顶部后,必须有一个简单的{padding-top:100px;}通过js应用于body。

JSfiddle here

<div id="ontop">something</div>
<header>navigation - stays on top when scrolling</header>
<div id="wrapper"> 
    1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>
    7 - wrapper disappears above this point while scrolling down<br/> 
    8<br/>9<br/>10<br/>
</div>

CSS:

#ontop {width:100%; height:80px; background-color:yellow;}
header {width:100%; height:100px; background-color:lightgrey;}
#wrapper {background-color:lightblue; height:5000px;}

.navfixed {position: fixed; top: 0px; z-index: 100; width:100%; display:block; margin-bottom:120px;} 

最后是JS:

$(function () {
    var elem = $('aside'),
        elemTop = elem.offset().top;
    $(window).scroll(function () {
        elem.toggleClass('fixed', $(window).scrollTop() > elemTop);
    }).scroll();
});

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

需要在滚动时将#wrapper元素的上边距设置为切换wrapperBelow

$(function () {
    var elem = $('header'),
        wrapperElem = $('#wrapper'),
        elemTop = elem.offset().top;
    $(window).scroll(function () {
        elem.toggleClass('navfixed', $(window).scrollTop() > elemTop);
         wrapperElem.toggleClass('wrapperBelow', $(window).scrollTop() > elemTop);
    }).scroll();
});
#ontop {width:100%; height:80px; background-color:yellow;}
header {width:100%; height:100px; background-color:lightgrey;}
#wrapper {background-color:lightblue; height:5000px;}

.navfixed {position: fixed; top: 0px; z-index: 100; width:100%; display:block; margin-bottom:120px;} 
.wrapperBelow{
    margin-top:112px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ontop">something</div>
<header>navigation - stays on top when scrolling</header>
<div id="wrapper"> 
    1<br/>2<br/>3<br/>4<br/>5<br/>6<br/>
    7 - wrapper disappears before this while scrolling<br/> 
    8<br/>9<br/>10<br/>
</div>