html - 带滚动中心的 HTML 完整页面布局

标签 html layout

我需要生成如下 HTML 布局:

  1. 页面应流动以占据浏览器窗口中的可用空间
  2. 它应该有固定高度的页眉和页脚
  3. 中心区域应占据剩余高度
  4. 中心区域分为三列。如果内容超出可用区域,每个列都应该可以独立滚动。

我尝试过使用高度为 100% 的表格(最终可以进行一些调整),顶部和底部单元格具有固定高度。这使得中心区域占据剩余空间。该区域包含另一个包含三列的表。每个单元格包含一个 div,高度和宽度设置为 100%,溢出设置为自动。看起来它应该可以工作,但过多的内容只会导致主表扩展其高度,以便整个页面变得可滚动。

有谁知道这在实践中有效的例子吗?该解决方案预计可以合理地跨浏览器,但不必涵盖所有极端情况。

谢谢, 菲尔

更新 我找到了一个解决方案并将其作为答案发布在这里。

最佳答案

注意:我在这里假设使用 HTML5 和 CSS3,但保留适用于大多数浏览器的属性。 HTML5 可以轻松替换为 HTML 4.01。


为了创建您想要的布局,我们从一些基本的 HTML 开始:

<div id="wrapper">
  <header> Header </header>
  <div id="content">
    <section id="left"> Left </section>
    <section id="center"> Center </section>
    <section id="right"> Right </section>
  </div>
  <footer> Footer </footer>
</div>

困难在于根据您的需要来设计它。首先尽可能设置 100% 高度,以及合适的溢出值,我们可以获得非常接近您想要的内容:

html, body { height: 100%; margin: 0; padding: 0; }
#wrapper { height: 100%; }
header, footer { height: 50px; }
#content { height: 100%; overflow: hidden; }
section { float: left; overflow: auto; height: 100%; }
#left, #right { width: 100px; }
#center { width: 300px; }

不幸的是,这使得 100px(页脚和页眉的总高度)的布局太高。为了解决这个问题,我们必须将 #content 的高度降低相同的量,但标准盒模型不允许这样做。输入 box-sizing (其中 is supported by all major browsers except IE7 ),我们可以使用它来更改正在使用的盒模型。对于 border-box 盒子模型,填充包含在高度中,因此我们可以从 #content 中“删除”必要的高度:

#content { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; padding: 50px 0; margin: -50px 0; }

另请参阅 this JSfiddle demothe full screen result 了解更多详细信息。

关于html - 带滚动中心的 HTML 完整页面布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683564/

相关文章:

html - Vaadin 标签对齐

jQuery - 将可拖动元素链接为 "nodes"

html - 将 html 输入字段及其标签与页面中心对齐

jQuery 数据表插件 : Make specific row bold

html - 下拉菜单 -> HTML&CSS,悬停

android制作自定义布局形状

layout - 新的 stackoverflow 网站设计(隐藏左侧面板)

android - setContentView 执行期间黑屏

apache-flex - Flex 4 如何以 html 表格类型的方式布局 Spark 控件

android - 如何提高布局性能