實(shí)現(xiàn)元素水平居中的五種方法

概述

我們平時(shí)看到的居中效果主要分為三大類,水平居中,垂直居中和水平垂直居中,在這里總結(jié)以下元素水平居中的方法。

一 定寬自動邊距

.center {
    width:40px;
    margin-left: auto;
    margin-right: auto;
}

注意元素一定要定寬

優(yōu)點(diǎn):方法簡單易懂,瀏覽器兼容性強(qiáng)
缺點(diǎn):擴(kuò)展性差,無法自適應(yīng)未知項(xiàng)的其他情況。

二 inline-block實(shí)現(xiàn)水平居中方法

僅僅inline-block 是無法實(shí)現(xiàn)水平居中的,還需要再父元素
中設(shè)置text-align: center 才能實(shí)現(xiàn)居中效果。

.pagination {
    text-align: center;
}
.pagination li {
    margin: 0 5px;
    display: inline-block;
}

優(yōu)點(diǎn):簡單易懂, 擴(kuò)張強(qiáng)
缺點(diǎn):需要額外處理inline-block的瀏覽器兼容性問題,如在某些瀏覽器中出額外出現(xiàn)的空格。

三 浮動實(shí)現(xiàn)水平居中的方法

原理是使用浮動配合position定位實(shí)現(xiàn),詳細(xì)的可以參考Horizontally Centered Menus with no CSS hacks
一 首先是沒有浮動的div div是一個(gè)塊元素, 其默認(rèn)的寬度為100%,如下圖所示:


如果div設(shè)置了浮動,那么他的內(nèi)容設(shè)置了多大的寬度就會撐開多大的容器(除顯式的設(shè)置寬度外)

下面以分頁導(dǎo)航欄為例,先讓導(dǎo)航欄浮動到左邊,其他分頁項(xiàng)也進(jìn)行浮動,如下圖所示

接下來運(yùn)用position:relative;屬性,使ul元素相對于父元素定位,讓其向右移動50%(left: 50%),如下圖所示

同理,下面對li元素也運(yùn)用position:relative 屬性,使li元素相對于父元素ul定位,使其向左移動 50%(right:50%),效果如下圖所示:

浮動居中就成功實(shí)現(xiàn)了。
優(yōu)點(diǎn):兼容性強(qiáng),擴(kuò)展性強(qiáng)
缺點(diǎn):實(shí)現(xiàn)原理較為復(fù)雜

四 絕對定位實(shí)現(xiàn)水平居中

原理和方法四很相似,不過是改用絕對定位來實(shí)現(xiàn),下面使相關(guān)的代碼

.element {
    position: absolute;
    width: 寬度值;
    margin-left: -(寬度值/2);
  }

優(yōu)點(diǎn):兼容性強(qiáng),擴(kuò)展性強(qiáng)
缺點(diǎn):實(shí)現(xiàn)原理較為復(fù)雜

五 CSS3的flex實(shí)現(xiàn)水平居中的方法

CSS的flex屬性可以讓我們的布局更加靈活和簡單,但瀏覽器的兼容性較差
代碼如下

.element {
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-pack: center;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-pack: center;
  display: -o-box;
  -o-box-orient: horizontal;
  -o-box-pack: center;
  display: -ms-box;
  -ms-box-orient: horizontal;
  -ms-box-pack: center;
  display: box;
  box-orient: horizonta;
  box-pack: center;
}

優(yōu)點(diǎn):實(shí)現(xiàn)便捷,可擴(kuò)展性強(qiáng)
缺點(diǎn): 兼容性差

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,206評論 1 92
  • 1. 前言 前端圈有個(gè)“梗”:在面試時(shí),問個(gè)css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)。在...
    YjWorld閱讀 4,941評論 5 15
  • 收聽音頻,戳鏈接,舊號itclan已暫停使用,歡迎關(guān)注微信itclanCoder公眾號可收聽更多音頻 前言 關(guān)于網(wǎng)...
    itclanCoder閱讀 8,363評論 3 30
  • 最可悲的,不是我不愛你,而是,你已在我心門之外。我們生活在同一間房,吃同一餐飯,我可以跟你交流,可以商量,但再也笑...
    蕾蕾_7807閱讀 152評論 0 0
  • 《清醒思考的藝術(shù): 你最好讓別人去犯的52種思維錯(cuò)誤》《明智行動的藝術(shù)》(德國)羅爾夫?多貝里 Rolf Dobe...
    翱翔GTD閱讀 1,351評論 0 12

友情鏈接更多精彩內(nèi)容