如何将屏幕的剩余空间占满,并出现滚动条。
前段时间在做项目的过程中,我想实现一个需求,是一个评论的页面(如图所示)。该页面需要全屏,而上面的红色边框header部分我不清楚它的具体高度,但是如果我想将下面边框的部分实现滚动条,是需要上面的确切高度来计算下半部分的高度,再设置overflow-y: auto
才能实现。
我一时间不知道怎么办,最后通过一些资料的查找发现我们可以通过flex布局来实现。
我们可以将包含这两个元素的父容器的display设置为flex,然后将下面元素的flex设置为1,height设置为0就可以了。
我猜测的原因可能是此时元素的高度被设置为0,而元素本身的高度是通过flex: 1
撑满父元素剩余的空间,那他的高度就不是通过我们设置的height: 0
来计算,而是通过撑开的高度来计算。即在flex布局下,flex的优先级比height更高。
代码
html
<div class="container">
<header></header>
<main></main>
</div>
css
.container{
display: flex;
flex-direction: column; /* 主轴方向:垂直 */
position: fixed; /* 页面全屏 */
width: 100%;
height: 100%;
top: 0;
left: 0;
}
main{
flex: 1;
height: 0;
overflow-y: auto;
}