双栏布局
定宽栏 + 自适应栏
margin 方式
<div class="container">
<div class="left">
左边
</div>
<div class="right">
右边
</div>
</div>
html{
height: 100%;
background: #f2f2f2;
}
.container{
/* display: flex; */
position: relative;
}
.left{
border: 1px solid black;
width: 200px;
height: 100%;
position: fixed;
top: 0;
left: 0;
bottom: 0;
overflow: hidden;
}
.right{
border: 1px solid black;
width: 200px;
margin-left: 200px;
}
flex 方式
<div class="container">
<div class="left">
左边
</div>
<div class="right">
右边
</div>
</div>
.container{
display: flex;
height: 100vh;
}
.left{
border: 1px solid black;
height: 100%;
width:200px;
}
.right{
border: 1px solid black;
flex: 1;
}
//注释
左边设置 flex: 0 0 200px 表示元素不缩小,不扩大,初始宽度为200px,即固定为200px。
右边设置 flex: 1 1 auto 表示元素按需缩小,扩大,基础宽度自适应,即宽度为总宽度减去200px,实现自适应。
注意
注意的是,flex容器的一个默认属性值: align-items: stretch;
这个属性导致了列等高的效果。 为了让两个盒子高度自动,需要设置: align-items: flex-start
补充;flex 三个值解析
.item {
flex-grow: 0; // 增长比例,子项合计宽度小于容器宽度,需要根据每个子项设置的此属性比例对剩下的长度进行分配
flex-shrink: 1; // 回缩比例,子项合计宽度大于容器宽度,需要根据每个子项设置的此属性比例对多出的长度进行分配
flex-basis: auto; // 设置了宽度跟宽度走,没设置宽度跟内容实际宽度走
}
flex-group: 指定容器剩余空间多余时的分配规则,默认是0(多余的空间不分配)
flex-shrink:指定容器剩余空间不足时的分配规则,默认是1(空间不足时要分配)
flex-basis:指定固定的分配数量,默认是auto