Javascript 位置固定但仍可滚动?

Javascript 位置固定但仍可滚动?,javascript,css,Javascript,Css,是否可能有一个DIV位置:fixed,但是如果该DIV的内容超出了屏幕的查看区域,那么您仍然可以使用窗口滚动?到目前为止,我已经把我所有的东西都放在这 这段代码位于一个媒体查询中,当屏幕达到最大宽度和/或最大高度时会触发该查询,但我认为这段代码与我的问题无关。这是我认为需要修改才能正确工作的代码: .expand { display: block !important; position: fixed; -webkit-backface-visibility: hid

是否可能有一个DIV位置:fixed,但是如果该DIV的内容超出了屏幕的查看区域,那么您仍然可以使用窗口滚动?到目前为止,我已经把我所有的东西都放在这

这段代码位于一个媒体查询中,当屏幕达到最大宽度和/或最大高度时会触发该查询,但我认为这段代码与我的问题无关。这是我认为需要修改才能正确工作的代码:

.expand {
    display: block !important; 
    position: fixed;
    -webkit-backface-visibility: hidden;
    top: 50px;
    left: 0;
    background: rgba(31, 73, 125, 0.8);
    width: 100%;
    z-index: 999;
}
我想要修复这个问题的原因是,小汉堡菜单始终静态地停留在屏幕的左上角,因为有时我正在构建的站点可能会相当长,所以我希望观众能够更轻松地访问


谢谢大家!

是的,您只需要给div一个固定的高度和
溢出:自动设置

()

如果你不想给它一个最小高度,一个简单(但)的选择是使用css
calc()
像这样

.expand {
    max-height: calc(100% - 50px); // 100% viewport height minus the height of the nav.
}
我建议在浏览器不支持calc的情况下,在之前设置回退高度


JavaScript

要实现您真正想要的,您需要javascript。给你

检查菜单是否打开,如果没有

  • 定义检查以查看内容是否大于视口,如果大于,则设置
    bottom:0px
    溢出:自动
    并从正文中删除滚动
如果是的话

  • 从菜单和打开菜单时添加的正文中删除所有样式
()


嗯?这个问题从来没有一个选定的答案,那么你具体指的是哪一个答案呢?很多人写的是
overflow-y:scroll所以我认为它会帮助你解决问题。是的,使用溢出总是会添加第二个滚动条。我知道我在我的帖子里没有这么说,但我不想那样说。
.expand {
    max-height: calc(100% - 50px); // 100% viewport height minus the height of the nav.
}
(function($) {
    var menu = $('.responsive-menu'), open;
    $('.menu-btn').click(function () {
        if(!open) {
            if(menu.height() > $(window).height()) {
                open = true;
                menu.css({'bottom': '0px', 'overflow': 'auto'});
                document.body.style.overflow = 'hidden';
            }
        } else {
            open = false;
            menu.css({'bottom': '', 'overflow': ''});
            document.body.style.overflow = '';
        }
        menu.toggleClass('expand');
    });
})(jQuery);