CSS居中

内容居中:text-align:center;这种用法需要定义在父级元素上面。然后他的子元素的内容就全部居中了。

div居中1:margin:0 auto;

div居中2:left: 50%;margin-left: -60px;这种用法需要父级元素的position:relative; 然后子元素的position:absolute;绝对定位。子元素的宽度要设置,比如120px,这时候再向左偏移他一半的宽度就好了。

1.使用绝对定位垂直和水平居中:

<style>
        .container {
            border: 1px solid red;
            position: relative;
            height: 500px;
        }

        .absolute_center {
            position: absolute;
            width: 200px;
            height: 200px;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            margin: auto;
            background: #518fca;
            resize: both; /*用于设置了所有除overflow为visible的元素*/
            overflow: auto;
        }
    </style>

绝对对位原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。html代码:

<div class="container">
        <div class="absolute_center">
            生活不能等待别人来安排,要自已去争取和奋斗;<br>
            而不论其结果是喜是悲,但可以慰藉的是,你总不枉在这世界上活了一场。<br>
            有了这样的认识,你就会珍重生活,而不会玩世不恭;同时,也会给人自身注入一种强大的内在力量。
        </div>
    </div>

使用绝对定位要求元素必须设置明确高度。内容超过元素高度时需要设置overflow决定滚动条的出现

优点:支持响应式,只有这种方法在resize之后仍然垂直居中

缺点:没有显式设置overflow时,内容超过元素高度时会溢出,没有滚动条

2.负marginTop方式

已知元素高度后,使用绝对定位将top设置为50%,margin-top设置为内容高度的一半(height + padding) / 2;内容超过元素高度时需要设置overflow决定滚动条的出现

原理:top:50%元素上边界位于包含框中点,设置负外边界使得元素垂直中心与包含框中心重合;水平居中同样的道理,使用margin-left负值(元素宽度的一半)。

.negative_margin_top {
            position: absolute;
            top: 50%;
            left: 0;
            right: 0;
            margin: auto;
            margin-top: -100px;
            width: 200px;
            height: 200px;
            background: #518fca;
        }

优点:代码量少、浏览器兼容性高支持ie6 ie7

缺点:不支持响应式(不能使用百分比、min/max-width)

3.table-cell方式

原理:利用表布局特点,vertical-align设置为middle后,单元格中内容中间与所在行中间对齐

.container {
            display: table;
            border: 1px solid red;
            height: 500px;
            width: 100%;
        }

        .absolute_center {
            display: table-cell;
            text-align: center;
            background: #518fca;
            vertical-align: middle;
        }

优点:支持任意内容的可变高度、支持响应式

缺点:每一个需要垂直居中的元素都会需要加上额外标签(需要table、table-cell两个额外元素)

4.弹性盒式布局

.is-Flexbox {

display: -webkit-box;

display: -moz-box;

display: -ms-flexbox;

display: -webkit-box;

display: flex;

align-items: center;

justify-content: center;

text-align: center;

border: 1px solid red;

            height:500px;
        }

<div class="is-Flexbox">
            既要脚踏实地于现实生活,又要不时跳出现实到理想的高台上张望一眼。<br>
    </div>

优点:真正的垂直居中、水平居中布局

缺点:ie11才开始支持弹性布局

来源:http://www.cnblogs.com/dojo-lzz/p/4419596.html

http://www.jqhtml.com/6435.html