圣杯布局和双飞翼布局(其实是一回事)都是实现的三栏布局。
浮动布局(float + margin)
1 | <div class="container"> |
- 优点:快捷 简单 兼容性较好
- 缺点: 有局限性 脱离文档流 需要清除浮动等
绝对布局(position)
1 | <div class="container"> |
- 优点:简单粗暴
- 缺点: 脱离文档流 高度未知会出现问题 可用性差
弹性盒子布局(flex)
1 | <div class="container"> |
- 优点:比较完美 移动端首选
- 缺点: 不兼容 ie9 及以下
表格布局(table)
1 | <div class="container"> |
- 优点:兼容性很好(ie8 及以上) 父元素高度会被子元素撑开(不担心高度塌陷)
- 缺点: seo 不友好 当其中一个单元格高度超出的时候,其他的单元格也是会跟着一起变高的
网格布局(Grid)
1 | <div class="container"> |
- 优点:简单强大 解决二维布局问题
- 缺点: 不兼容 ie9 及以下
总结
布局方案 | 实现 | 优点 | 缺点 |
---|---|---|---|
Float布局 | 左右中三列,左列左浮动,右列右浮动,中间列设置左右margin | 比较简单,兼容性也比较好 | 浮动元素脱离文档流,使用的时候只需要注意一定要清除浮 |
动。| |Position布局|左中右三列(无顺序),根据定位属性去直接设置各个子元素位置|快捷,设置很方便|元素脱离了文档流,后代元素也脱离了文档流,高度未知的时候, 会有问题,有效性和可使用性比较差| |Table布局|左中右三列,父元素display: table;子元素display: table-cell;居中子元素不设宽度|使用起来方便,兼容性也不存在问题|①无法设置栏边距;② 对seo不友好;③当其中一个单元格高度超出的时候,两侧的单元格也是会跟着一起变高的| |Flex布局|左中右三列,父元素display: flex;两侧元素设宽;居中子元素flex: 1;|比较完美|存在IE上兼容性问题,只能支持到IE9以上| |Grid布局|左中右三列,父元素display: grid;利用网格实现|最强大和最简单|兼容性不好,IE10+上支持,而且也仅支持部分属性|