假设高度已知,请写出三栏布局,左右栏宽度各300px,中间自适应
以下五种实现方案
1 | // 公共的css样式` |
float实现
1 | <section class="layout float"> |
position实现
1 | <section class="layout absolute"> |
flex实现
1 | <section class="layout flexbox"> |
table实现
1 | <section class="layout table"> |
grid实现
1 | <section class="layout grid"> |
五种方案比较
- float:清除浮动,脱离文档流,处理不好,带来很多问题,本身的局限性,兼容性比较好
- position:快捷,不容易出现问题,布局已经脱离文档流,下面的子元素也要脱离文档流,导致可使用性、有效性差
- flex:解决上面float、position的不足,兼容性不好,主要应用移动端
- table:table-cell,很多场景中适用,兼容性好
- grid:网格布局,新技术,可做很多复杂事情
- flex与table-cell两种看应用场景使用
如果已知高度去掉,中间的高度变化,左右同时变化,那个方案不实用
- 推荐flex与table
- float 需要创建bfc
大家也可以扩展延伸
三栏布局
- 左右宽度固定,中间自适应
- 上下高度固定,中间自适应
两栏布局
- 左宽度固定,右自适应
- 右宽度固定,左自适应
- 上高度固定,下自适应
- 下高度固定,上自适应