CSS各種居中布局方法匯總

本篇文章討論居中情況設(shè)定為總寬度不定,內(nèi)容寬度不定的情況。(改變大小時(shí),仍然居中)。
特別說(shuō)明:在元素設(shè)置position:absolute;來(lái)設(shè)置居中效果時(shí),除去博客下介紹的css3方法外,還可以使用負(fù)的margin來(lái)居中,這樣解決了兼容性的問(wèn)題,但是只適用于寬高已知的情況(因?yàn)樨?fù)的偏移量為元素寬高的一半)。寬高改變時(shí),不再是居中效果。
在這些布局中的子元素,因?yàn)槠鋵傩栽O(shè)置,都默認(rèn)為內(nèi)容寬度。
本文所有居中的例子,只討論css的實(shí)現(xiàn),html代碼統(tǒng)一如下:
- <div class="parent">
- <div class="child">demo</div>
- </div>
1. 水平居中
1.1 inline-block配合text-align
- .parent{
- text-align: center;
- }
- .child{
- display: inline-block;
- }
優(yōu)點(diǎn):兼容性非常好,只需要添加只需要在子元素的css中添加*display:inline和*zoom:1就可兼容到IE6、7;缺點(diǎn):內(nèi)部文字也會(huì)水平居中,需消除影響。
1.2 table配合margin
- .child{
- display:table;
- margin: 0 auto;
- }
優(yōu)點(diǎn):設(shè)置特別簡(jiǎn)單,只需對(duì)子元素進(jìn)行設(shè)置,支持IE8+,需支持IE6,7時(shí),可更換子元素為表格結(jié)構(gòu)。
1.3 abasolute配合transform
- .parent{
- position:relative;
- }
- .child{
- position:absolute;
- left:50%;
- transform: translateX(-50%);
- }
優(yōu)點(diǎn):居中元素不對(duì)其他元素產(chǎn)生影響。缺點(diǎn):CSS3新屬性支持IE9+,低版本瀏覽器不支持。
2. 垂直居中
2.1 table-cell配合vertical-align
- .parent{
- display: table-cell;
- vertical-align:middle;
- }
優(yōu)點(diǎn):設(shè)置簡(jiǎn)單,只需對(duì)父元素進(jìn)行設(shè)置,兼容到IE8+,需兼容地版本瀏覽器時(shí),可更換div為表格結(jié)構(gòu)。
2.2 absolute配合tranform
- .parent{
- position:relative;
- }
- .child{
- position:absolute;
- top: 50%;
- transform: translateY(-50%);
- }
優(yōu)點(diǎn):居中元素不對(duì)其他元素產(chǎn)生影響。缺點(diǎn):CSS3新屬性支持IE9+,低版本瀏覽器不支持。
3. 水平+垂直居中
3.1 inline-block配合text-align加上table-cell配合vertical-align
- .parent{
- display: table-cell;
- vertical-align:middle;
- text-align:center;
- }
- .child{
- display: inline-block;
- }
優(yōu)點(diǎn):綜合前兩中方法,兼容性好!支持IE8+,低版本瀏覽器也好兼容。缺點(diǎn):設(shè)置較為復(fù)雜。
3.2 absolute配合transform
- .parent{
- position: relative;
- }
- .child{
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%,-50%);
- }
優(yōu)點(diǎn):居中元素不對(duì)其他元素產(chǎn)生影響。缺點(diǎn):CSS3新屬性支持IE9+,低版本瀏覽器不支持。
4. 全能的flex
css3新增布局屬性,布局簡(jiǎn)單,強(qiáng)大,性能略差,只支持IE10+,在移動(dòng)端使用較多。
4.1 水平居中
- /*當(dāng)父元素設(shè)置display: flex;時(shí),子元素為flex-item,默認(rèn)為內(nèi)容寬度。*/
- .parent{
- display: flex;
- justify-content: center;
- }
- /* 在設(shè)置子元素為margin: 0 auto;時(shí),可刪除父元素的justify-content: center;同樣可以達(dá)到居中效果*/
- /* .child{
- margin: 0 auto;
- }*/
4.2 垂直居中
- .parent{
- display: flex;
- align-items: center;
- }
4.3 水平垂直居中
- parent{
- display: flex;
- justify-content: center;
- align-items: center;
- }
- /*如同flex布局的第一部分一樣這里也可以對(duì)子元素進(jìn)行下面的設(shè)置:同時(shí)刪除上面的除去display外的其他屬性*/
- /* .child{
- margin:auto;
- } */
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
- 這篇文章主要介紹了CSS元素居中布局的簡(jiǎn)單方法,文中介紹了內(nèi)嵌元素和塊元素以及行內(nèi)塊三種情況,需要的朋友可以參考下2015-07-18
DIV+CSS中讓布局、背景圖片、文字內(nèi)容居中的方法
這篇文章主要為大家介紹了在DIV+CSS布局的頁(yè)面里,讓布局、背景圖片、文字內(nèi)容居中的方法,從布局內(nèi)容到頁(yè)面里文章文字居中都是非常重要的,而css來(lái)設(shè)置居中也是非常簡(jiǎn)單的2014-10-09- 這篇文章主要收羅了CSS布局中有關(guān)水平和垂直居中的N種方法,個(gè)人感覺(jué)是相當(dāng)不錯(cuò),需要的朋友可以參考下2014-05-08
CSS垂直居中網(wǎng)頁(yè)布局實(shí)現(xiàn)的5種方法
網(wǎng)頁(yè)制作Webjx文章簡(jiǎn)介:利用 CSS 來(lái)實(shí)現(xiàn)對(duì)象的垂直居中有許多不同的方法,比較難的是選擇那個(gè)正確的方法。我下面說(shuō)明一下我看到的好的方法和怎么來(lái)創(chuàng)建一個(gè)好的居中網(wǎng)站。2009-04-02CSS實(shí)現(xiàn)網(wǎng)頁(yè)分欄布局的方法:絕對(duì)定位和浮動(dòng)
網(wǎng)頁(yè)制作Webjx文章簡(jiǎn)介:在CSS中,實(shí)現(xiàn)分欄布局有兩種方法。第一種方法是使用四種CSS定位選項(xiàng)(absolute 、static、relative和fixed)中的絕對(duì)定位(absolute positioning2009-04-02基本的頁(yè)面設(shè)計(jì)元素布局比例-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
基本的頁(yè)面設(shè)計(jì)元素布局比例,給大家做個(gè)參考 標(biāo)志圖案: 位置 統(tǒng)計(jì)結(jié)果2008-10-17網(wǎng)頁(yè)布局 CSS簡(jiǎn)單實(shí)現(xiàn)垂直居中-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
英文原文: http://www.search-this.com/2008/05/15/easy-vertical-centering-with-css/ 中文譯文: http://www.12sui.cn/blog/71.html 本人英語(yǔ)還沒(méi)過(guò)四級(jí),所以不2008-10-17CSS網(wǎng)頁(yè)布局:div垂直居中的各種方法-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
在前面的文章中我簡(jiǎn)單總結(jié)了一個(gè)“CSS在頁(yè)面布局中實(shí)現(xiàn)div水平居中的方法”,其實(shí)水平居中實(shí)現(xiàn)還是比較簡(jiǎn)單的,反而垂直居中有點(diǎn)麻煩,因?yàn)槲覀冊(cè)O(shè)計(jì)頁(yè)面的時(shí)候往2008-10-17CSS網(wǎng)頁(yè)布局:div水平居中的各種方法-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
在Web標(biāo)準(zhǔn)中的頁(yè)面布局是使用Div配合CSS來(lái)實(shí)現(xiàn)的。這其中最常用到的就是使整個(gè)頁(yè)面水平居中的效果,這是在頁(yè)面布局中基本,也是最應(yīng)該首先掌握的知識(shí)。不過(guò),還是經(jīng)常會(huì)有2008-10-17CSS高級(jí)技巧:網(wǎng)頁(yè)布局-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
上一篇CSS教程 文章:CSS高級(jí)技巧:文字環(huán)繞圖片 布局 CSS至關(guān)重要的作用, CSS的設(shè)計(jì)初衷. CSS布局和幾年前table橫行時(shí)的布局又不太一樣, 在結(jié)構(gòu)化語(yǔ)義化的HTML文檔2008-10-17