水平、垂直居中的若干种方法总结

一、水平居中

水平居中的实现很简单,这儿就不赘述了。
行内元素使用:text-align:center 可以做到水平居中
块级元素使用:margin: 0 auto 可以做到水平居中

二、垂直居中

2.1 行内元素居中

单行的垂直居中可以通过设置元素line-height为父元素的高度,完成垂直居中

2.2 块级元素居中

  • 2.2.1 使用table-cell

    对父级元素设置display和vertical-align:

display:table-cell;
vertical-align: middle;
  • 2.2.2 已知元素宽高时,使用absolute和margin

    优点:兼容性好,是最常用的一种设置水平、垂直居中的方案
    缺点:需要知道元素宽高
    设置父元素为:

position: relative; //非static就行

设置子元素(假设宽高分别为500px,600px)的top和bottom:

position: relative;
top: 50%;
height: 50%;
margin-top: -300px; // 1/2的子元素高度
margin-left: -250px; // 1/2的子元素宽度
  • 2.2.3 未知宽高的元素居中,使用absolute和transform

优点:不需要知道元素高度、宽度就可以设置居中
缺点:由于transform属性是css3属性,IE9以下无法使用

父元素:

position: relative; //非static就行

子元素

position: absolute;
top:50%;
left: 50%;
transform:translate(-50%,-50%);
  • 2.2.4 绝对定位居中(Absolute Centering)

实现原理请参考freshlover的专栏

优点:支持跨浏览器,包括IE8-IE10;
缺点:必须声明高度(查看可变高度Variable Height);在Windows Phone设备上不起作用。

.Absolute-Center {  
  margin: auto;  
  position: absolute;  
  top: 0; left: 0; bottom: 0; right: 0;  
}  
  • 2.2.5 行内块元素

优点: 高度可变、内容溢出会将父元素撑开、 支持跨浏览器,也适应于IE7。

缺点:需要一个容器、水平居中依赖于margin-left: -0.25em;该尺寸对于不同的字体/字号需要调整、内容块宽度不能超过容器的100% - 0.25em。

父元素:

text-align: center;  
overflow: auto;  

子元素:

display: inline-block;  
vertical-align: middle;  

伪元素:

content: '';  
height: 100%;  
margin-left: -0.25em; /* To offset spacing. May vary by font */  

基本思想是使用display: inline-block, vertical-align: middle和一个伪元素让内容块处于容器中央。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值