我相信你以前都见过类似的问题,但我读过的内容都没有解决这个问题。
基本上我有一个高度为100%的div填充了视口。在这个div中,我有一个高度为40px的h1标签和一个高度为100%的无序列表,以填充页面的剩余高度。
由于40px H1标签,页面会得到我不想要的垂直滚动条。
关于类似问题的另一个答案是将overflow:hidden
添加到div。这工作了一段时间,但我发现并解决了这个问题。当我得到 X 数量的列表项时,我的无序列表需要滚动条,由于div上的overflow: hidden
,我无法看到最底层的项目。请参阅以下链接以获取演示:
(Here)。
如果有人能帮我解决这个问题,我将不胜感激。
HTML:
<div>
<h1>Header</h1>
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
</div>
CSS:
html {
height: 100%;
}
body,
h1,
ul {
margin: 0;
padding: 0;
}
body {
height: 100%;
}
div {
height: 100%;
width: 300px;
overflow:hidden;
}
h1 {
height: 40px;
line-height: 40px;
}
ul {
list-style: none;
background: red;
height: 100%;
overflow: auto;
}
答案 0 :(得分:0)
只需要进行一项更改 - 只需将正文设置为高度:自动或只是省略它,因为这是默认值
body {
height: auto;
}
答案 1 :(得分:0)
ul {
list-style: none;
background: red;
height: 100%;
overflow: auto;
}
从“自动”变为“隐藏”
答案 2 :(得分:0)
您可以将高度设置为AUTO或指定最小高度和最大高度。
<强>实施例强>
ul{
/*
It's one or the others
*/
height:auto;
min-height: 400px;
max-height: 600px;
}
使用min和max,介于(400和600)之间的值将根据内容的大小来设置。
overflow: auto;
可能也是您的问题,您可以将其设置为overflow: hidden;
答案 3 :(得分:0)
这就是为我解决的问题:
body {
height: auto;
overflow:hidden;
}
div {
height: 100%;
width: 300px;
}
ul {
overflow: scroll;
height: 100%;
}
因此,添加高度:auto和overflow:隐藏到正文应该摆脱页面的滚动条。
答案 4 :(得分:0)
如果您支持现代浏览器,则可以使用calc
功能:
html, body {
height: 100%;
}
body, h1, ul {
margin: 0;
padding: 0;
}
div.wrapper {
height: 100%;
width: 300px;
overflow: auto;
}
h1 {
height: 40px;
line-height: 40px;
}
ul {
list-style: none;
background: red;
height: calc(100% - 40px);
overflow: auto;
}
对于ul
元素,将高度设置为100% - 40px
,这将计算在剩余空间中适合ul
的确切高度。
请参阅演示:http://jsfiddle.net/audetwebdesign/KNShL/
您还可以使用绝对定位将ul
精确地拟合到父块中。
html, body {
height: 100%;
}
body, h1, ul {
margin: 0;
padding: 0;
}
div.wrapper {
height: 100%;
width: 300px;
position: relative;
}
h1 {
height: 40px;
line-height: 40px;
}
ul {
list-style: none;
background: red;
overflow: auto;
position: absolute;
top: 40px;
bottom: 0;
left: 0;
width: 100%;
}
在这种情况下,请在position: relative
父块上设置div.wrapper
,然后在子position: absolute
元素上使用ul
,并将偏移量设置为top: 40px
,bottom: 0
和right: 0
,宽度为100%。
绝对定位方法应该适用于支持CSS2的任何旧版浏览器。
答案 5 :(得分:0)
始终使用关键字“auto”,%中的数字将始终在html中出现错误或模糊屏幕,即每当屏幕被更改时,它都无法正确回答。如果你使用的是%,那么永远不要给它的父级赋予“填充”和“边距”。总是使用屏幕。