我正在尝试制作一个类似于这样的CSS布局:
这种类型的布局在CSS中被称为“圣杯布局”。我遇到的问题是,当我使用在线找到的布局和解决方案时,无法按照我的要求正确地工作。我正在尝试制作一个页面,无论内容如何,都会将页脚放置在浏览器底部,并向下延伸列。到目前为止,我只看到过页脚放置在内容停止处的页面,结果是页脚下面有一些空白空间。
如果有人能帮助我解决这个问题,我将不胜感激!
我正在尝试制作一个类似于这样的CSS布局:
这种类型的布局在CSS中被称为“圣杯布局”。我遇到的问题是,当我使用在线找到的布局和解决方案时,无法按照我的要求正确地工作。我正在尝试制作一个页面,无论内容如何,都会将页脚放置在浏览器底部,并向下延伸列。到目前为止,我只看到过页脚放置在内容停止处的页面,结果是页脚下面有一些空白空间。
如果有人能帮助我解决这个问题,我将不胜感激!
body {
display: flex;
flex-direction: column;
min-height: 100vh;
}
header {
flex: 0 0 100px;
background-color: #C14F4F;
}
main {
flex: 1;
display: flex;
background-color: #699EBD;
}
footer {
flex: 0 0 40px;
background-color: #C14F4F;
}
.left, .right {
flex: 0 2 150px;
background-color: #C28282;
}
.middle {
flex:1 1 300px;
}
<header></header>
<main>
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</main>
<footer></footer>
已经是2020年了,怎么不试试Grid呢?
body {
display: grid;
height: 100vh;
grid-template: auto 1fr auto / auto 1fr auto;
}
header {
grid-column: 1 / 4;
}
.left-sidebar {
grid-column: 1 / 2;
}
main {
grid-column: 2 / 3;
overflow: auto;
}
.right-sidebar {
grid-column: 3 / 4;
}
footer {
text-align: center;
grid-column: 1 / 4;
}
html, body {
margin: 0;
padding: 0;
background-color: #aed9e0;
}
body > * {
outline: 1px dashed #247ba0;
}
.left-sidebar, .right-sidebar, main, header, footer {
padding: 2rem;
}
<body>
<header><strong>Header</strong></header>
<div class="left-sidebar">Left Sidebar</div>
<main contenteditable>
Main Content
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</main>
<div class="right-sidebar">Right Sidebar</div>
<footer>Footer Content</footer>
</body>
请参见 这个技巧 以获取顶部/底部,然后将侧边栏放在其中。甚至在 IE6 中也可以使用 :p
这似乎大部分都能满足你的需求。 http://www.savio.no/examples/three-column-layout-6.asp 它使用了一个虚假的100%高度列,除了三个列之外。
padding-bottom:9999px;
margin-bottom:-9999px;
这将创建“不可见”的内容,使侧边栏可以延伸到底部(负边距“规范化”了侧边栏的尺寸,以便在侧边栏上进行的计算仍然是有意义的)。