背景
布局是我们前端开发中不可避免的,简单回忆一下 css 的布局方案,供大家参考以及自己参阅。
居中布局
这里的居中布局是不定宽度为前提,固定宽度情况也包含其中。
水平居中
inline-block + text-align
1 | .parent { |
这个方案的兼容性比较好,可兼容到 IE8,对于 IE567 不支持inline-block
,需要使用 css hack 进行兼容。
table + margin
1 | .child { |
这个方案兼容到 IE8,可以使用
absolute + transform
1 | .parent { |
这个方案兼容到 IE9,因为transform
兼容性导致,如果.child
为定宽元素,可以使用以下写法,提高兼容性。
1 | .parent { |
flex + justify-content
1 | .parent { |
flex 布局很强大,但是受到兼容的限制。不考虑兼容可以大胆使用。
垂直居中布局
table-cell + vertial-align
1 | .parent { |
此方案可以用
absolute + transform
1 | .parent { |
css3 新属性兼容性不是很好。
flex + align-items
1 | .parent { |
兼容性不是很好,不考虑低版本浏览器。
水平垂直居中
inline-block + table-cell + text-align + vertical-align
1 | .parent{ |
兼容到 IE8.
absolute + transform
1 | .parent{ |
兼容性差,兼容 IE10 以上
flex
1 | .parent{ |
兼容差
多列布局
一列定宽,一列自适应
float + margin
1 | .left{ |
此方案对于定宽布局比较好,不定宽布局推荐下面方法 2.
float + overflow
1 | .left{ |
此方案不管是多列定宽或是不定宽,都可以完美实现,同时可以实现等高布局。
table
1 | .parent{ |
flex
1 | .parent{ |
多列定宽,一列自适应
float + overflow
1 | .left,.center{ |
table
1 | .parent{ |
flex
1 | .parent{ |
一列不定宽,一列自适应
float + overflow
1 | .left{ |
table
1 | .parent{ |
flex
1 | .parent{ |
多列不定宽,一列自适应
float + overflow
1 | .left,.center{ |
等分
float + margin
1 | .parent{ |
table + margin
1 | .parent-fix{ |
flex
1 | .parent{ |
等高
float + overflow
1 | .parent{ |
table
1 | .parent{ |
flex
1 | .parent{ |
并排等分,单排对齐靠左布局
flex
1 | .main { |
圣杯布局&双飞翼布局
圣杯布局
1 | <div class="container"> |
双飞翼布局
1 | <div class="container"> |
定位布局
1 | <div class="header">header</div> |