關(guān)于html水平垂直居中的問題小結(jié)

字號:


    最近遇到很多居中的問題,就花點(diǎn)時間總結(jié)了一下放在這里,以后找也方便
    1.居中文本
    代碼如下:
    <div>
    我在中間……
    </div>
    .. height+line-height+text-center(只能居中單行)
    .wrap{
    width:px; 
    height:px;
    border:px solid red; 
    text-align: center;
    line-height: px;
    }
    ps:text-align:center只是將元素下面的內(nèi)聯(lián)元素居中顯示
    1.2display:table-cell(多行固定高度居中)
    代碼如下:
    .wrap{
    width:px; 
    height:px;
    border:px solid red; 
    text-align: center; 
    display:table-cell; 
    vertical-align: middle;
    }
    display:table-cell:ie67不管用,最好配合display:table;一起用
    ie67下:(以后也不用了,不過也放這兒吧)
    方法一:(通過em標(biāo)簽高度與父級等高,所以span和em居中就相當(dāng)于span在父級居中)
    代碼如下:
    <div>
    <span>
    我在中間…… 我在中間…… 我在中間…… 我在中間……
    </span>
    <em></em>
    </div>
    .wrap{
    width:px; 
    height:px;
    border:px solid red; 
    text-align: center;
    }
    .wrap span{
    vertical-align: middle;
    display:inline-block; 
    width:px;
    }
    .wrap em{
    height:%;
    vertical-align: middle; 
    display:inline-block;
    }
    方法二:(通過給子元素增加一個絕對定位的父級標(biāo)簽,再配合子元素的相對定位水平垂直居中)
    代碼如下:
    <div>
    <span>
    <span>我在中間…… 我在中間…… 我在中間…… 我在中間……</span>
    </span>
    </div>
    .wrap{
    width:px; 
    height:px;
    border:px solid red;
    display:table;
    position:relative; 
    overflow: hidden;
    }
    .wrap .span{
    display:table-cell; 
    vertical-align: middle; 
    text-align: center;
    *position:absolute;
    top:%;
    left:%;
    }
    .wrap .span{
    *position:relative;
    top:-%;
    left:-%;
    }
    1.3padding(內(nèi)填充,不用多說)
    代碼如下:
    .wrap{
    width:px;
    border:px solid red;
    padding:px ;
    }
    2.居中元素
    代碼如下:
    <div>
    <span></span>
    </div>
    2.1position:absolute+margin負(fù)值(必須要有寬高,才能計算margin)
    代碼如下:
    .wrap{
    width:px; 
    height:px;
    position:absolute; 
    top:%; 
    left:%; 
    margin-top:-px; 
    margin-left:-px;
    border:px solid red;
    }
    .wrap span{ 
    width:px; 
    height:px; 
    background:red;
    position: absolute; 
    top:%; 
    left:%; 
    margin-top:-px; 
    margin-left:-px;
    }
    ps:CSS實(shí)現(xiàn)DIV水平居中和上下垂直居中
    代碼如下:
    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset="utf-8" /> 
    <title>上下垂直居中 在線演示 DIVCSS5</title> 
    <style> 
    #main { 
    position: absolute; 
    width:400px; 
    height:200px; 
    left:50%; 
    top:50%; 
    margin-left:-200px; 
    margin-top:-100px; 
    border:1px solid #00F 
    } 
    /*css注釋:為了方便截圖,對CSS代碼進(jìn)行換行*/ 
    </style> 
    </head> 
    <body> 
    <div id="main">DIV水平居中和上下垂直居中<a >DIVCSS5</a></div> 
    </body> 
    </html> 
    水平垂直居中原理介紹
    這里使用了絕對定位position:absolute,使用left和top設(shè)置對象距離上和左為50%,但如果設(shè)置50%,實(shí)際上盒子是沒有實(shí)現(xiàn)居中效果,所以又設(shè)置margin-left:-200px;margin-top:-100px;,這里有個技巧是,margin-left的值是寬度一半,margin-top的值也是對象高度一半,同時設(shè)置為負(fù),這樣就實(shí)現(xiàn)了水平和垂直居中。