我正在一个Web应用程序上工作,我希望其中的内容能填满整个屏幕的高度。
该页面具有标题,其中包含徽标和帐户信息。这可以是任意高度。我希望内容div将页面的其余部分填充到底部。
我有一个标题div
和一个内容div
。目前,我正在使用表格进行布局,如下所示:
CSS和HTML
#page {
height: 100%; width: 100%
}
#tdcontent {
height: 100%;
}
#content {
overflow: auto; /* or overflow: hidden; */
}
<table id="page">
<tr>
<td id="tdheader">
<div id="header">...</div>
</td>
</tr>
<tr>
<td id="tdcontent">
<div id="content">...</div>
</td>
</tr>
</table>
页面的整个高度已填满,不需要滚动。
对于content div中的任何内容,设置top:0;
将其放在标题的正下方。有时,内容将是一个实际表,其高度设置为100%。把header
里面content
不会让这种工作。
是否有一种无需使用即可达到相同效果的方法table
?
更新:
内容内的元素的div
高度也将设置为百分比。因此,内部100%的内容div
将填充到底部。两个元素占50%。
更新2:
例如,如果标题占据屏幕高度的20%,则内部指定为50%的表#content
将占据屏幕空间的40%。到目前为止,将整个内容包装在表中是唯一有效的方法。
还有两个简短提及flexbox的答案;但是,那是两年多以前的事了,他们没有提供任何示例。flexbox的规范现在肯定已经确定。
注意:尽管CSS Flexible BoxesLayout规范处于候选推荐标准阶段,但并非所有浏览器都已实现。WebKit实现必须以-webkit-为前缀;Internet Explorer实现了规范的旧版本,并带有-ms-前缀。Opera12.10实施了该规范的最新版本,没有前缀。有关最新兼容性状态,请参见每个属性的兼容性表。
所有主要的浏览器和IE11 +都支持Flexbox。对于IE 10或更早版本,可以使用FlexieJS填充程序。
使用flexbox,您可以轻松地在具有固定尺寸,内容尺寸尺寸或剩余空间尺寸的任何行或列之间进行切换。在我的示例中,我设置了页眉以使其与内容对齐(按照OP问题),添加了页脚以显示如何添加固定高度的区域,然后设置内容区域以填充剩余的空间。
html,
body {
height: 100%;
margin: 0
}
.box {
display: flex;
flex-flow: column;
height: 100%;
}
.box .row {
border: 1px dotted grey;
}
.box .row.header {
flex: 0 1 auto;
/* The above is shorthand for:
flex-grow: 0,
flex-shrink: 1,
flex-basis: auto
*/
}
.box .row.content {
flex: 1 1 auto;
}
.box .row.footer {
flex: 0 1 40px;
}
<!-- Obviously, you could use HTML5 tags like `header`, `footer` and `section` -->
<div class="box">
<div class="row header">
<p><b>header</b>
<br />
<br />(sized to content)</p>
</div>
<div class="row content">
<p>
<b>content</b>
(fills remaining space)
</p>
</div>
<div class="row footer">
<p><b>footer</b> (fixed height)</p>
</div>
</div>
在上面的CSS中,flex属性是flex-grow,flex-shrink和flex-basis属性的简写形式以建立flex项目的灵活性。Mozilla 很好地介绍了弹性盒模型。
问题内容: 我有2个div: 页面左侧有一个,右侧是一个。左侧的一个宽度固定,我希望右侧的一个填充剩余空间。 问题答案: 这似乎可以完成您想要的。
问题内容: 我在flexbox中并排有2个div。右手应始终具有相同的宽度,我希望左手仅抓住剩余空间。除非我专门设置宽度,否则它不会。 因此,现在将其设置为96%,直到您真正按下屏幕为止,它看起来还可以-右div有点饿了它所需的空间。 我想我可以保留原样,但感觉不对,就像必须要说的那样: 正确的人永远是相同的; 你在左边-你得到剩下的一切 问题答案: 使用该属性可以使弹性项目消耗 主轴上的 可用空
问题内容: 如何使div填充剩余宽度? 我如何才能填满其余部分? 问题答案: 试试这样的事情: div自然会占用其容器的100%宽度,因此无需显式设置此宽度。通过添加与两侧div相同的左/右页边距,它自己的内容被强制置于它们之间。 请注意,“中间格”云 后 的HTML“正确的div”
我有一个基本的flexbox布局,如下所示。。 我试图使顶部的div填充剩余的空间,底部的div是动态的,因此高度根据文本的不同而变化。我的结果是这样的。。 在这种情况下,flexbox是最好的选择吗?
我试图让id为的div作为列表项填充页面上的剩余高度。我对web开发前端相当陌生,尝试过几种不同的方法,但似乎都不起作用。 绿色边框的div是我想填充剩余高度的,也保持表单在上面。由于某种原因,窗口的整个高度已经有一个滚动条,我在想黑色/红色边框会一直到屏幕的底部,但也因为某种原因超过了它。关于如何解决这些问题有什么想法吗? HTML/CSS标记:
我需要用div填充下的的剩余垂直空间。 我需要一个唯一的CSS解决方案。