简介
总结记录一下经常需要用到垂直居中布局,欢迎补充(空手套。。。O(∩_∩)O)
以下栗子如果未特别标注同一使用这样的html结构
1 | <div class="container"> |
垂直居中布局
利用绝对定位和负margin
绝对定位可以很容易做到top:50%,现在只要再让目标元素上移自身高度的一半就垂直居中了
1 | .container { |
优点:兼容性好
缺点:需要知道居中元素的高度
利用绝对定位和transform
1 | .container { |
- 优点:不需要考虑content元素的高度
- 缺点:兼容性
利用绝对定位和calc
1 | .container { |
- 优点:相比于前面少了两条样式
- 缺点:兼容性
利用flex
1 | .container { |
1 | .container { |
- 优点:垂直居中特别容易搞定
- 缺点:兼容性
震惊absoulute(绝对定位)还可以这样用
1 | .container { |
优点:
- 1.跨浏览器,兼容性好(无需hack,可兼顾IE8~IE10);
- 2.无特殊标记,样式更精简;
- 3.自适应布局,可以使用百分比和最大最小高宽等样式;
- 4.居中时不考虑元素的padding值(也不需要使用box-sizing样式);
- 5.布局块可以自由调节大小;6.img的图像也可以使用
- 6.浏览器支持:Chrome、Firefox、Safari、Mobile Safari、IE8-10。 “完全居中”经测试可以完美地应用在最新版本的Chrome、Firefox、Safari、Mobile Safari中,甚至也可以运行在IE8~IE10上
使用inline-block
1 | .container { |
这里注意
:容器‘container’里要设置font-size:0;避免inline-block之间产生间隔
优点:
- 内容高度可变
- 内容溢出则能自动撑开父元素高度
- 浏览器兼容性好,甚至可以调整支持IE7
使用table与table-cell
1 |
|
- 优点:
- 内容高度可变
- 内容溢出则能自动撑开父元素高度
- 浏览器兼容性好
- 缺点:额外标签