双栏布局
定宽栏 + 自适应栏
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
