我已经看到了一些有关同一问题的问题,但没有一个指定的答案实际上适用于这个问题。
请考虑以下代码段:
$(function () {
$(window).on('scroll', function () {
/**
THIS SHOULD NOT BE CALLED!!!
So, change some colors to warn about it, if it happens.
*/
$('#content').css('background-color', 'red');
});
});

body {
margin:0;
padding:0;
height: 100%;
width: 100%;
}
#container {
position: absolute;
height: 100%;
width: 100%;
z-index: 9999999;
overflow: auto;
}
#nav {
background-color:rgb(50,50,50);
color: white;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 30px;
padding-top: 10px;
z-index: 100;
}
#content-wrapper {
background-color:rgb(200,200,200);
min-height: 100%;
height: auto !important;
width: 100%;
z-index:2;
}
#content {
padding-top: 40px;
padding-bottom: 40px;
}
#footer {
background-color: rgb(220, 220, 240);
position: fixed;
left: 0;
bottom: 0;
height: 30px;
width: 100%;
padding-top: 10px;
z-index: 9999;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div id="nav">
Navbar
</div>
<div id="content-wrapper">
<div id="content">
<div>
Begin
</div>
<div style="height: 600px;">
...
</div>
<div>
End
</div>
</div>
</div>
<div id="footer">
Footer
</div>
</div>
&#13;
滚动条位于nav
和footer
下方。由于非常重要仅 container
元素滚动(BODY
元素必须不滚动),我能解决这个问题吗?有可能吗?
HTML结构应基本上与此问题中建议的一致(固定导航,全高内容等)。我尝试了几个技巧;修改z-index
es,包装东西等等,我迷失在这里。
目标浏览器是Google Chrome,因为这是此应用程序使用的浏览器。理想的解决方案是使固定元素调整其宽度,以补偿overflow: auto;
元素上的container
。
答案 0 :(得分:3)
这里的另一种方法是仅从您的示例中滚动#content-wrapper。以下是如何完成此操作的基本示例:
<强> HTML 强>
<div id="container">
<div id="nav">
Navbar
</div>
<div id="content-wrapper">
<div id="content">
<div>
Begin
</div>
<div style="height: 600px;">
...
</div>
<div>
End
</div>
</div>
</div>
<div id="footer">
Footer
</div>
</div>
<强> CSS 强>
body {
margin:0;
padding:0;
height: 100%;
width: 100%;
}
#container {
position: absolute;
height: 100%;
width: 100%;
overflow: hidden;
}
#nav {
background-color:rgb(50,50,50);
color: white;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 30px;
padding-top: 10px;
}
#content-wrapper {
position:absolute;
top:40px;
bottom:40px;
left:0;
right:0;
background-color:rgb(200,200,200);
width: 100%;
overflow:scroll;
}
#footer {
background-color: rgb(220, 220, 240);
position: fixed;
left: 0;
bottom: 0;
height: 30px;
width: 100%;
padding-top: 10px;
}
答案 1 :(得分:1)
从overflow:auto
删除#container
。
#container
的 CSS 就像
#container {
position: absolute;
height: 100%;
width: 100%;
z-index: 9999999;
}
<强>更新强>
将overflow:auto
添加到#content
。
答案 2 :(得分:0)
从overflow: auto
删除#container
。