left

float + margin

1.浮动左列

2.右列自适应,且设置margin-left

实用性:兼容性好,但是浮动后超出无法顶开父容器高度

left

float + margin

1.浮动左列

2.右列自适应, 右列负margin-left

3.右列子元素正margin-left

实用性:兼容性虽好,但是相当麻烦的方案,从布局角度看 右列 部分超到了 左列 部分,还额外需要一个子元素,父元素由于两个子元素都浮动,高度彻底塌陷,还额外需要清除浮动

left

left

left

left

left

left

float + overflow

1.浮动左列,左列指定宽度

2.右列overflow: hidden, 触发右列 BFC 模式

3.父元素 overflow 之后,触发 BFC 模式,浮动后仍然可以撑开父容器高度

实用性:兼容性好,较为常用的实现方式,基本没什么后遗症

left

表格布局

1.父元素设置 display:table; table-layout:fixed; 设置宽度

2.子元素设置 table-cell

3.左列设置宽度

实用性:不需要用到浮动,高度不会塌陷,且可以实现双边等高布局,但是也只会是等高布局,无法设置左右列边距

left

flexbox

1.父元素 display:flex

2.左列设置宽度,右列flex:1

3.右列flex:1

4.align-items: start; 设置为 start 就不撑满

实用性:PC端IE9+,简洁明了的布局方式,可以通过控制 align-items 实现等高或者不等高。

left

网格布局

1.父元素 设置 display:grid

2.父元素 设置 grid-template-columns: 200px 1fr; 实现 左列100px 右列自适应

3.align-items: start; 设置为 start 就不撑满

实用性:更加简洁,高效的二维布局方式,但是兼容性 ie11+ 还是相对蛋疼