两栏布局,已知左侧宽度,右边自适应
- 1.双inline-block 左右盒子均设置为
display:inline-block;
左盒子设置固定宽高,右盒子使用calc(100% - width左 - 5px);
即可(因为中间会自动有5px的间隙需要额外减掉,目前我还不知道怎么消除(2019/11/20更新,可以在html
中将两个标签的换行符去掉))。 - 2.使用浮动单float 左盒子设置为左浮动,并设置固定宽高,右盒子设置
height:**px
;此方法会将右盒子的左边的内容覆盖(因为此处盒子设置为div
为块元素不必设置width
)。 - 3.使用浮动双float 左盒子浮动,右盒子浮动,右盒子宽度设置用
calc(100% - width左)
可以无缝衔接不会有被覆盖的内容。 - 4.使用浮动单float 左盒子设置左浮动,设置右盒子
margin:0px 0px 0px width(左)
,右盒子不必设置宽度。 - 5.使用定位双定位 在左右盒子外侧设置一个大盒子,不必设置大盒子的宽高,直接设置
position:relative;
左盒子设置position:absolute;
固定宽高,右盒子设置position:absolute;left:width左;width:calc(100% - width左)
可实现无缝衔接。 - 6.使用定位单定位 左盒子设置绝对定位,设置右盒子
margin:0px 0px 0px width(左)
,右盒子不必设置宽度。
两栏布局,左侧固定右侧自适应不计算左侧宽度
- 7.使用flex布局 外侧盒子
display:flex;align-items:flex-start/center;
左盒子设置宽高即可,右盒子flex:1 1 auto;
右盒子设置为放大缩小均为1,占据空间是剩下的空间。 - 8.使用grid网格 外层盒子设置
display:grid;grid-template-rows:100px;grid-template-columns:100px auto;
设置了一行两列的网格,且右边网格的大小自适应。 - 9.BFC 外侧盒子设置为
overflow:auto
,内部左盒子设置float:left;margin-right:0px;
对左侧进行浮动,继续设置左侧盒子的大小,右盒子设置overflow:auto;
对左盒子触发BFC,右盒子触发BFC,左盒子设置右外边距,右盒子设置左外边距(不设置也可),右盒子不需要设置width
注意:发现div在作为块元素时,不必设置width
,会自动填充剩下的空间,但是要设置height
,但是当div
设置成display:inline-block
时需要设置width
才行
三栏布局,已知左右侧宽度,中间自适应
- 1.使用定位 三个盒子外侧设置大盒子,大盒子使用相对定位,下面一层三个盒子均采用绝对定位,左盒子固定宽高,右盒子固定宽高并设置
right: 0px;
使右盒子靠右,中间盒子设置width: calc(100% - width左右相加);left: width左;
即可。 - 2.使用浮动 左盒子设置左浮动,右盒子设置右浮动,中间盒子设置
margin:auto;display: inline-block;width: calc(100% - 200px);
无缝衔接margin:auto;
在这里不管左右盒子是否一样大都可。 - 3.使用grid网格 设置外层盒子为
display:grid;grid-template-rows:100px;grid-template-columns:100px auto 100px;
即可。grid网格好厉害!!! - 4.使用flex 设置外层盒子为
display:flex;align-items:center
中间盒子设置flex:1 1 auto
左右盒子在盒子内部设置内容有大小即可。