滚动时,Div落后于固定div

时间:2013-09-12 11:52:56

标签: javascript css3 position css-position fixed

我的财产状况有问题:已修复。 如果你看看我的 jfiddle你看,当你滚动时,黑色div击中顶部,然后通过JS添加样式“棒”,使其固定在位 - 按预期。不幸的是,当我这样做,并且div正在获得固定的风格时,黑条下方的div跳了一下,这破坏了这个想法。

我认为你要看的主要CSS是:

.orangeContent {
max-width:960px;
width:100%;
margin:0px auto;
padding:40px 0px 0px 0px;}

    header {
max-width:1920px;
width:100%;
margin:0px auto;
padding:0px;
background:#ffffff;

.stick {
position:fixed;
top:0px;
box-shadow:0px 4px 2px -2px #b32f01 ;
transition-duration:0.2s;}

当然是Javascript:

    $(document).ready(function() {
    var s = $("header");
    var pos = s.position();                    
    $(window).scroll(function() {
        var windowpos = $(window).scrollTop();

        if (windowpos >= pos.top) {
            s.addClass("stick");
        } else {
            s.removeClass("stick"); 
        }
    });
});

所以,基本上,任何想法如何解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:2)

这是因为黑色标题跳出了盒子流,所以下面的div跳了起来。我建议你将类修复添加到pageWrapper而不是标题本身,然后在你的css中添加:

.pageWrapper header{
    position: static
}

.pageWrapper div { /* the one with all the lorem ipsum */
    padding-top: 0;
}

.pageWrapper.stick header{
    position: fixed
}

.pageWrapper.stick div { /* the one with all the lorem ipsum */
    padding-top: 20px; /* needs to be set as the same height of the header */
}

我编辑了你的小提琴,告诉你我的意思。

http://jsfiddle.net/AyLNL/3/

我使用了.stick + .text选择器,它基本上是指.stick之后的.text,但是我建议你将.text放在pageWrapper中,然后使用.stick .text

答案 1 :(得分:0)

当然,div将跳转为position:fixed从流中获取元素。如果您的标头的静态高度比调整css文件中的header.stick + div的填充(或边距),否则在添加/删除'stick'类时重新计算