绝对定位元素实现水平垂直居中

Posted 兔子先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了绝对定位元素实现水平垂直居中相关的知识,希望对你有一定的参考价值。

第一种:

.element {
    width: 600px; height: 400px;
    position: absolute; left: 50%; top: 50%;
    margin-top: -200px;    /* 高度的一半 */
    margin-left: -300px;    /* 宽度的一半 */
}

但,这种方法有一个很明显的不足,就是需要提前知道元素的尺寸。否则margin负值的调整无法精确。此时,往往要借助JS获得。

 

第二种:

CSS3的兴起,使得有了更好的解决方法,就是使用transform代替margintransformtranslate偏移的百分比值是相对于自身大小的,于是,我们可以:

.element {
    width: 600px; height: 400px;
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);    /* 50%为自身尺寸的一半 */
}

于是乎,无论绝对定位元素的尺寸是多少,其都是水平垂直居中显示的。

然,问题很明显,兼容性不好。IE10+以及其他现代浏览器才支持, IE9(-ms-), IE10+以及其他现代浏览器才支持。中国盛行的IE8浏览器被忽略是有些不适宜的(手机web开发可忽略)。

实际上,绝对定位元素的居中实现还有另外一种方法,可以说是权衡了上面的尺寸自适应以及兼容性的一个方案,其实现的核心是margin:auto.

在微信开发中我们在处理transform的时候最好再添加一个-webkit-transform:translate(-50%, -50%); 因为X5内核的webkit版本比较低,所以需要兼容处理。

 

第三种:

margin:auto实现绝对定位元素的居中

代码如下:

.element {
    width: 600px; height: 400px;
    position: absolute; left: 0; top: 0; right: 0; bottom: 0;
    margin: auto;    /* 有了这个就自动居中了 */
}

代码两个关键点:

  1. 上下左右均0位置定位;
  2. margin: auto

于是,就居中了。

 

教程参考地址:http://www.cnblogs.com/c-and-unity/articles/4837470.html

以上是关于绝对定位元素实现水平垂直居中的主要内容,如果未能解决你的问题,请参考以下文章

CSS代码片段

绝对定位元素实现水平垂直居中

小tip: margin:auto实现绝对定位元素的水平垂直居中

css绝对定位如何水平居中?

将一个不定宽高的盒子设置水平垂直居中的六种方法

小tip: margin:auto实现绝对定位元素的水平垂直居中