html - 带标题的 2 列流体布局

标签 html css

我已尝试清楚地描述我的问题。如果我遗漏了什么或者我应该澄清,请发表评论。

问题

我正在尝试创建一个具有一些功能的非常简单的 HTML/CSS 布局。

我尝试添加这些:

  • 未知高度的标题
  • 内容溢出时可以滚动的内容 div
  • 一个侧边栏,如果内容溢出可以滚动

我尝试过的

这是我到目前为止尝试过的方法

body,html { width: 100%; height: 100%; margin: 0; }
#header {
  text-align: center;
  padding: 1rem;
  background-color: #AAA;
}
#main-content {
  margin-right: 25%;
  background-color: #CAC;
  height: 100%;
  max-height: 100%;
}
#sidebar {
  width: 25%;
  float: right;
  padding: 0 0 0 15px;
  background-color: #ACA;
  height: 100%;
}
<div id="header">
  Header
</div>

<div id="sidebar">
  Sidebar (coming over "Inner Content")
</div>

<div id="main-content">
  Inner Content. 100% causes a scrollbar to get added to the whole page
</div>

(坏)图片

Nv1mm

限制

  • 我正在努力使它易于修改,这样任何诸如边距 + 绝对定位之类的 hack 都不会起作用。

  • 我正在避免表格标签。

  • 没有 JavaScript

支持

我支持所有现代浏览器 (IE10+)

最佳答案

你应该使用 flexbox。它是为创建像这样的灵活布局而制作的。唯一需要注意的是,由于您希望页眉具有可变高度,因此您需要使用嵌套的 flexbox ,这意味着您需要为主要内容和侧边栏添加一个父元素。

这是代码(Javascript 仅用于“填充”按钮——它填充内容以便可以测试滚动条):

window.onload = function () {
    var btn = document.querySelector("#fill");
    btn.onclick = function () {
        var content = btn.parentNode;
        content.removeChild(btn);
        for (var i = 0; i < 7; i++) {
            content.innerHTML += content.innerHTML;
        }
    };
};
body, html {
    width: 100%;
    height: 100%;
    margin: 0;
}
body {
    display: flex;
    flex-direction: column;
}
#header {
    flex: 0 0 auto;
    text-align: center;
    padding: 1rem;
    background-color: #AAA;
}
main {
    flex: 1;
    display: flex;
}
#main-content {
    flex: 75%;
    overflow: auto;
    padding: 15px;
    background-color: #CAC;
}
#sidebar {
    flex: 25%;
    padding: 15px;
    background-color: #ACA;
}
<div id="header">Header<br>Auto height</div>
<main>
    <div id="main-content">
        Inner Content. 100% causes a scrollbar to get added to the whole page<br>
        <button id="fill">Fill content</button>
    </div>
    <div id="sidebar">Sidebar (coming over "Inner Content")</div>
</main>

关于html - 带标题的 2 列流体布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952729/

相关文章:

Python Selenium : Find element by CSS Properties

刷新页面后JQuery点击有效

html - 如何在 Emacs 中删除 HTML 标签的内容

css - 固定 div 垂直和右对齐到另一个 div

html - 链接到页面中的框

javascript - 如何使用jquery读取html表单内容?

html - Twitter Bootstrap 固定网格到 Resoinsive

html - SVG 滤镜 <feOffset> - 可以设置像素值中的 dx 和 dy 吗?

html - 带边框的 CSS 布局问题

javascript - 使用物化框架时的空白页面