问题描述
如何最好地将页面限制为视口的高度?我想管理子元素上的溢价-y,但似乎无法限制高度-我只能管理以像素或百分比为单位的最大高度。我认为我需要将某些元素的高度限制为视口高度的其余部分(而不是百分比),但是我找不到解决方法。
(我正在使用引导程序,但我怀疑答案不是以引导程序为中心的。)
我想也许我可以将flex与flex-grow一起使用,但这也不限制高度。我想念什么?
<div class="container d-flex flex-column ">
<div>
My full-width page title goes here
</div>
<div class="row flex-grow-1">
<div class="col col-4">
potentially long content here
</div>
<div class="col-8">
main content
</div>
</div>
</div>
使用CSS
body {
height: 100vh;
}
.row {
margin-top: 20px;
}
.col {
border: solid 1px black;
padding: 10px;
overflow-y: scroll;
}
(Fiddle)
实际:页面高度不受限制;内部滚动条无意义;视口滚动条已打开
所需:Page使用视口的整个高度,仅此而已;内部滚动条有效;没有视口滚动条
解决方法
如果您不习惯使用bootstrap / flexbox,那么CSS网格将使这一工作变得很容易。
HTML
<div class="wrapper">
<div class="header">
My full-width page title goes here
</div>
<div class="sidebar">
sidebar content
</div>
<div class="main">
main content
</div>
</div>
CSS
html,body,.wrapper {
height: 100%;
}
.wrapper {
display: grid;
grid-template-columns: 1fr 2fr;
grid-auto-rows: min-content auto;
grid-template-areas:
"header header"
"sidebar main";
}
.header {
grid-area: header;
background: red;
}
.sidebar {
grid-area: sidebar;
overflow: auto;
}
.main {
grid-area: main;
}