javascript - 在 Head Container 达到最小高度后开始主体滚动

标签 javascript jquery html css

我有一个非常简单的页面,如果我向下滚动,我的页眉高度会降低到它的最小高度,这是我想要的。但是 body 同时滚动以降低我的头部容器的高度。我想让主体在 Head-Container 达到其最小高度后开始滚动。

我在脚本的第一个 if 中添加了类似的内容:

if(st < 100)
{
  $("#Head").scrollTo(0);
}

但这不起作用,因为我覆盖了正确的滚动值。 有什么建议么? 提前致谢, 约翰内斯

<HTML>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
var lastVal = 0;
$(document).ready(function() {
    $(window).scroll(function() {
        var st = $(window).scrollTop();
        if (st > lastVal){
            $("#Head").css({height: "+=" + (lastVal-st) + "px"});
        } else {
            $("#Head").css({height: "+=" + (st-lastVal) + "px"});
        }
        lastVal = st;
    });
});
</script>
<style TYPE="text/css">
#Head {
    background-color: #333;
    color: #fff;
    min-height: 100px;
    height: 230px;
    position: relative;
}

</style>
<BODY>
    <DIV id="main">
        <div id="Head">
            <h1>My Head</h1>
        </div>
        <div id="content">
                        <P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Proin egestas luctus sapien nec auctor. Aenean ut sapien leo, et euismod nulla. Suspendisse ac feugiat orci. Vestibulum vitae magna diam, non fringilla dui. Vivamus auctor mi ut eros egestas ut malesuada orci lobortis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ut ipsum feugiat ligula sagittis malesuada a vel orci. Sed sit amet nisl id risus sollicitudin venenatis. Donec lobortis facilisis mauris, sed eleifend nunc laoreet quis. Nulla neque orci, aliquam eget rhoncus ut, feugiat id erat. Duis orci sapien, dictum non pretium non, egestas in nisl.
            </P>
            <P>
                Aenean felis turpis, aliquet ac consectetur ac, pulvinar vitae dui. Aenean lacus lorem, rhoncus id dictum sit amet, luctus quis metus. Nullam posuere dignissim hendrerit. Nam tristique urna non neque laoreet nec porta tortor vestibulum. Ut varius facilisis vehicula. Vestibulum hendrerit pretium lorem, sit amet aliquet nisi porta eget. Sed sapien nunc, viverra et vehicula fringilla, cursus vitae mauris. Curabitur commodo mi eu lorem pulvinar auctor. Praesent et sapien et massa ultricies dignissim id at velit. Proin fringilla orci rutrum lacus hendrerit eu cursus quam auctor. 
            </p> 
                <P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Proin egestas luctus sapien nec auctor. Aenean ut sapien leo, et euismod nulla. Suspendisse ac feugiat orci. Vestibulum vitae magna diam, non fringilla dui. Vivamus auctor mi ut eros egestas ut malesuada orci lobortis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ut ipsum feugiat ligula sagittis malesuada a vel orci. Sed sit amet nisl id risus sollicitudin venenatis. Donec lobortis facilisis mauris, sed eleifend nunc laoreet quis. Nulla neque orci, aliquam eget rhoncus ut, feugiat id erat. Duis orci sapien, dictum non pretium non, egestas in nisl.
            </P>
                <P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Proin egestas luctus sapien nec auctor. Aenean ut sapien leo, et euismod nulla. Suspendisse ac feugiat orci. Vestibulum vitae magna diam, non fringilla dui. Vivamus auctor mi ut eros egestas ut malesuada orci lobortis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ut ipsum feugiat ligula sagittis malesuada a vel orci. Sed sit amet nisl id risus sollicitudin venenatis. Donec lobortis facilisis mauris, sed eleifend nunc laoreet quis. Nulla neque orci, aliquam eget rhoncus ut, feugiat id erat. Duis orci sapien, dictum non pretium non, egestas in nisl.
            </P>
                <P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Proin egestas luctus sapien nec auctor. Aenean ut sapien leo, et euismod nulla. Suspendisse ac feugiat orci. Vestibulum vitae magna diam, non fringilla dui. Vivamus auctor mi ut eros egestas ut malesuada orci lobortis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ut ipsum feugiat ligula sagittis malesuada a vel orci. Sed sit amet nisl id risus sollicitudin venenatis. Donec lobortis facilisis mauris, sed eleifend nunc laoreet quis. Nulla neque orci, aliquam eget rhoncus ut, feugiat id erat. Duis orci sapien, dictum non pretium non, egestas in nisl.
            </P>
                <P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Proin egestas luctus sapien nec auctor. Aenean ut sapien leo, et euismod nulla. Suspendisse ac feugiat orci. Vestibulum vitae magna diam, non fringilla dui. Vivamus auctor mi ut eros egestas ut malesuada orci lobortis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ut ipsum feugiat ligula sagittis malesuada a vel orci. Sed sit amet nisl id risus sollicitudin venenatis. Donec lobortis facilisis mauris, sed eleifend nunc laoreet quis. Nulla neque orci, aliquam eget rhoncus ut, feugiat id erat. Duis orci sapien, dictum non pretium non, egestas in nisl.
            </P>
                <P>
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sodales lorem et mauris feugiat eu interdum neque imperdiet. In ullamcorper laoreet blandit. Phasellus quis leo quam, ac adipiscing lectus. Aenean vulputate pharetra lorem sit amet scelerisque. Aliquam erat volutpat. Nullam ac ante mauris. Integer et diam ante. Aenean eu elit vel sem semper sagittis quis sit amet erat. Praesent fermentum, justo nec suscipit rhoncus, massa metus varius dolor, ac sollicitudin lectus risus nec est. Nunc venenatis justo at enim iaculis nec sagittis eros imperdiet. Fusce porta venenatis sodales. Curabitur molestie quam in arcu porttitor sollicitudin.
            </P><P>
                Aenean felis turpis, aliquet ac consectetur ac, pulvinar vitae dui. Aenean lacus lorem, rhoncus id dictum sit amet, luctus quis metus. Nullam posuere dignissim hendrerit. Nam tristique urna non neque laoreet nec porta tortor vestibulum. Ut varius facilisis vehicula. Vestibulum hendrerit pretium lorem, sit amet aliquet nisi porta eget. Sed sapien nunc, viverra et vehicula fringilla, cursus vitae mauris. Curabitur commodo mi eu lorem pulvinar auctor. Praesent et sapien et massa ultricies dignissim id at velit. Proin fringilla orci rutrum lacus hendrerit eu cursus quam auctor. 
            </p>        
        </div>
    </DIV>
</BODY>
</HTML>

最佳答案

一个简单的技巧就可以做到这一点。 如果 header 的 height 大于 min-height 并滚动到顶部。

$(window).scroll(function() {
    var st = $(window).scrollTop();
    if (st > lastVal){
        $("#Head").css({height: "+=" + (lastVal-st) + "px"});
        if($("#Head").css('height') > $("#Head").css('min-height')){
            window.scrollTo(0, 0);
        }
    } else {
        $("#Head").css({height: "+=" + (st-lastVal) + "px"});
    }
    lastVal = st;
});

关于javascript - 在 Head Container 达到最小高度后开始主体滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29891944/

相关文章:

javascript - 如何在 VS 代码中获取搜索结果中的文件列表?

php - jquery ajax错误

javascript - 覆盖 JavaScript 平滑滚动

javascript - 如何避免在子列表中调用回调函数

javascript - 如何在jquery对象上调用raphael方法?

javascript - 他们如何做到这一点?模态书签和即时抓取?

javascript - CckEditor 与 jquery 表单冲突

javascript - 如何自动大写 phonegap for Android 中的文本输入?

javascript - 如果类在 jQuery 或 JS 中,则将 css 类添加到所有列表元素

javascript - 使用 ng-repeat 检测元素的 outerHeight()