如果可以实现记得点赞分享,谢谢老铁~
一、背景说明
对于纵向排列布局,且上中下个个模块都是自动高度。当我们针对中间部分需要自适应高度且进行滚动时,那我们就可以用flex: 1 来处理。
二 、先看效果图
二 、flex布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>flex布局实现 内容区域高度自适应</title>
<style>
* {
padding: 0;
margin: 0;
}
.directoryCon {
height: 100vh;
width: 100%;
background-color: aqua;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.directoryCon .headerTitle {
height: 100px;
background-color: blue;
display: flex;
justify-content: center;
align-items: center;
}
.directoryCon .main {
flex: 1;
background-color: rgb(0, 174, 255);
overflow: hidden;
display: flex;
}
.directoryCon .main .menu{
display: flex;
flex-direction: column;
}
.directoryCon .main .menu .logo{
height: 100px;
width: 100%;
background-color: blueviolet;
display: flex;
align-items: center;
justify-content: center;
}
.directoryCon .main .menu .list{
flex: 1;
overflow-y: scroll;
background-color: rgb(255, 166, 0);
}
.directoryCon .main .menu ul>li{
height: 200px;
width: 250px;
display: flex;
justify-content: center;
align-items: center;
border-bottom: 1px solid #000;
}
.directoryCon .footer {
height: 100px;
background-color: rgb(137, 206, 97);
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div class="directoryCon">
<div class="headerTitle">
<h1>头部</h1>
</div>
<div class="main">
<div class="menu">
<div class="logo">
<h1>FLEX布局</h1>
</div>
<ul class="list">
<li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li>
<li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li>
<li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li>
<li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li><li>我是菜单</li>
</ul>
</div>
</div>
<div class="footer">
<h1>底部</h1>
</div>
</div>
</body>
</html>
二 、解析
在 Flexbox 布局中,我们可以通过设置容器的 display 属性为 flex 实现自适应高度。
当我们将容器的 display 属性设置为 flex 时,容器中的所有子元素都会成为 Flexbox 容器的项目。
我们可以通过设置 flex-direction 属性来确定 Flexbox 容器中子元素的排列方向。默认情况下,子元素的排列方向是 flex-direction: row,即按照行方向排列。
在实现自适应高度时,需要将容器的 display 属性设置为 flex 和 flex-direction 属性设置为 column,就可以轻松地解决传统布局中内容自适应高度的问题。
同时,我们还设置了容器的 height 属性为 height: 100vh ,为容器定义了一个固定的高度。并通过设置所有子元素的 flex 属性为 1,让它们平分容器的剩余空间。