134-css-13-布局~两栏方案

134-css-13-布局~两栏方案

两栏布局

左侧定宽,右侧自适应

1、float+calc()函数; 左侧浮动,右侧浮动、calc(100% - 左侧宽度)
2、float+margin-left; 左侧浮动,右侧margin-left左侧宽度
3、absolute+margin-left; 左侧absolute,右侧margin-left左侧宽度
4、float+overflow; 左侧浮动,右侧overflow:hidden(BFC)
5、absolute; 左侧absolute,右侧absolute、left左侧宽度
6、百分比; 左侧百分比,右侧百分比(行内块或者浮动)
7、flex; 父级flex,右侧flex:1
8、grid; 父级grid、grid-template-columns: auto 1fr;

1、float+calc()函数

.left {
  float: left;
}
.right {
  float: left;
  width: calc(100% - 200px); /* 宽度减去左列的宽度 */
}

2、float+margin-left

.left {
  float: left;
}
.right {
  margin-left: 200px; /* 通过外边距的方式使该容器的左边有200px */
}

3、absolute+margin-left

.left {
  position: absolute; /* 开启定位脱离文档流 */
}
.right {
  margin-left: 200px; /* 通过外边距的方式使该容器的左边有200px */
}

4、float+overflow

.left {
  float: left;
}
.right {
  overflow: hidden; /* 设置 overflow会创建一个BFC 完成自适应 */
}

5、absolute

.left {
  position: absolute;
}
.right {
  position: absolute;
  left: 200px; /* 定位间隔左侧的宽的200px */
}

6、百分比

.left {
  display:inline-block;
  width:50%;
}
.right {
  display:inline-block;
  width:50%;
}

7、flex

.parent {
  display:flex;
  width:50%
}
.right {
  flex:1; /* flex: 1; 表示 flex-grow: 1; 即该项占所有剩余空间 */
}

8、grid

.parent {
  display: grid;
  grid-template-columns: 100px auto;  /*设定2列就ok了,auto换成1fr也行*/
}
.parent {
  display: grid;
  grid-template-columns: auto 1fr; /* 将其划分为两行,其中一列由本身宽度决定, 一列占剩余宽度*/
}

参考

https://juejin.cn/post/6844903574929932301

https://juejin.cn/post/7028962991345254407