双栏布局

定宽栏 + 自适应栏

margin 方式

  1. <div class="container">
  2. <div class="left">
  3. 左边
  4. </div>
  5. <div class="right">
  6. 右边
  7. </div>
  8. </div>
  9. html{
  10. height: 100%;
  11. background: #f2f2f2;
  12. }
  13. .container{
  14. /* display: flex; */
  15. position: relative;
  16. }
  17. .left{
  18. border: 1px solid black;
  19. width: 200px;
  20. height: 100%;
  21. position: fixed;
  22. top: 0;
  23. left: 0;
  24. bottom: 0;
  25. overflow: hidden;
  26. }
  27. .right{
  28. border: 1px solid black;
  29. width: 200px;
  30. margin-left: 200px;
  31. }

flex 方式

  1. <div class="container">
  2. <div class="left">
  3. 左边
  4. </div>
  5. <div class="right">
  6. 右边
  7. </div>
  8. </div>
  9. .container{
  10. display: flex;
  11. height: 100vh;
  12. }
  13. .left{
  14. border: 1px solid black;
  15. height: 100%;
  16. width:200px;
  17. }
  18. .right{
  19. border: 1px solid black;
  20. flex: 1;
  21. }
  22. //注释
  23. 左边设置 flex: 0 0 200px 表示元素不缩小,不扩大,初始宽度为200px,即固定为200px。
  24. 右边设置 flex: 1 1 auto 表示元素按需缩小,扩大,基础宽度自适应,即宽度为总宽度减去200px,实现自适应。

注意
注意的是,flex容器的一个默认属性值: align-items: stretch;
这个属性导致了列等高的效果。 为了让两个盒子高度自动,需要设置: align-items: flex-start

补充;flex 三个值解析

  1. .item {
  2. flex-grow: 0; // 增长比例,子项合计宽度小于容器宽度,需要根据每个子项设置的此属性比例对剩下的长度进行分配
  3. flex-shrink: 1; // 回缩比例,子项合计宽度大于容器宽度,需要根据每个子项设置的此属性比例对多出的长度进行分配
  4. flex-basis: auto; // 设置了宽度跟宽度走,没设置宽度跟内容实际宽度走
  5. }
  6. flex-group: 指定容器剩余空间多余时的分配规则,默认是0(多余的空间不分配)
  7. flex-shrink:指定容器剩余空间不足时的分配规则,默认是1(空间不足时要分配)
  8. flex-basis:指定固定的分配数量,默认是auto