使用 CSS 将 div 设置为剩余高度,上方和下方的 div 高度未知
是否可以使包装器填充窗口高度(不滚动)并且中心 div 可滚动,而不会弄乱像素和 JavaScript?
<div id="wrapper">
<h1>Header</h1>
<div id="center">
<div style="height:1000px">high content</div>
</div>
<div id="footer">Footer</div>
</div>
基本上我希望页眉在顶部可见,页脚始终在底部可见,并且在中心有一个可滚动的内容,占据剩余高度。
页眉、页脚和中心 div 的高度都是未知的(没有设置 px 或 %,即可变字体大小或填充)。纯CSS可以吗?
Is it possible to make the wrapper fill the window height (no scrolling) and the center div scrollable without messing around with pixels and javascript?
<div id="wrapper">
<h1>Header</h1>
<div id="center">
<div style="height:1000px">high content</div>
</div>
<div id="footer">Footer</div>
</div>
Basically I want the header to be visible at the top and the footer to be always visible at the bottom and have a scrollable content in the center which occupies the remaning height.
The header, footer and center divs' heights are all unknown (no set px or %, i.e. variable font-size or padding). Is it possible with pure CSS?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
2014 更新:解决此布局问题的现代方法是使用
flexbox
CSS 模型。所有主流浏览器和 IE11+ 均支持它。2012:仅使用 CSS 来实现此目的的正确方法是使用
display: table
和display: table-row
。从 IE8 开始,所有主要浏览器都支持这些。这没有使用表格来显示。您将使用 div:就是这样。 div 已按您的预期进行了包装。
2014 UPDATE: The modern way to solve this layout problem is to use the
flexbox
CSS model. It's supported by all major browsers and IE11+.2012: The correct way to do this with CSS alone is to use
display: table
anddisplay: table-row
. These are supported by all major browsers, starting with IE8. This is not using tables for display. You'll use divs:That's it. The divs are wrapped as you'd expect.
源自 Dan Dascalescu 答案的跨浏览器解决方案:
http://jsfiddle.net/Uc9E2
A cross-browser solution derived from Dan Dascalescu answer:
http://jsfiddle.net/Uc9E2
使用
overflow:auto
可以让你做到这一点。演示
Using
overflow:auto
will let you do this.demo
所以你所说的是粘性页脚。我去做了更多研究,这就是我为您提供的信息。
这会给你一个粘性页脚。关键是position:fixed和bottom:0px;
不幸的是,这意味着它也会悬停在滚动视图中的任何内容之上。到目前为止,似乎只有 Javascript 可以解决这个问题,但我会继续寻找。
So what you are talking about is a sticky footer. I went and did some more research and here is what I have for you.
This will give you a sticky footer. The key is position:fixed and bottom:0px;
Unfortunately this means it also hovers above any content in the scrollview. So far there seems to be only Javascript to figure this out but I will keep looking.