整理了一下常见的基础布局以及对应的不同的解决方案
水平居中
margin + 定宽
1 | <div class="parent"> |
table + margin
1 | <div class="parent"> |
absolute + margin-left
1 | <div class="parent"> |
flex + justify-content
1 | <div class="parent"> |
垂直居中
table-cell + vertical-align
1 | <div class="parent"> |
absolute + transform
1 | <div class="parent"> |
flex + align-items
1 | <div class="parent"> |
水平垂直居中
absolute + transform
1 | <div class="parent"> |
inline-block + text-align + table-cell + vertical-align
1 | <div class="parent"> |
flex + justify-content + align-items
1 | <div class="parent"> |
一列定宽,一列自适应
float + margin
1 | <div class="parent"> |
float + overflow
1 | <div class="parent"> |
table
1 | <div class="parent"> |
flex
1 | <div class="parent"> |
等分布局
float
1 | <div class="parent"> |
flex
1 | <div class="parent"> |
table
1 | <div class="parent-fix"> |
圣杯布局(三列布局, 两边固定宽度中间自适应)
1 | <div class="bd"> |
补充:
- DOM元素的顺序不能改变
- 当main内容部分比两边的子面板宽度小的时候,布局就会乱掉。可以通过设置main的min-width属性或使用双飞翼布局避免问题
双飞翼布局(同三列,圣杯布局改进版)
1 | <div class="main-wrap column"> |
以上为常见布局解决方案,传统主要用position, flex, table,float等属性去实现布局,另外就是flex相关一套弹性布局属性。还是觉得弹性布局的表达力更强,语法更直观实现更方便。另外在2017年末尾的今天,弹性布局的浏览器兼容问题也不算一个很大的问题了。