CSS居中小結

下面是CSS居中的幾種方法:


水平居中元素:

通用方法,元素的寬高未知

方式一:CSS3 transform


方式二:Flex 布局


適用于子元素為浮動,絕對定位,內聯元素,均可水平居中。

居中的元素為常規文檔流中的內聯元素(display: inline)

常見的內聯元素有:span, a, img, input, label 等等


此方法同樣適用于 display: inline-block 的元素。

居中的元素為常規文檔流中的塊元素(display: block)

常見的塊元素:div, h1~h6, table, p, ul, li 等等

方式一:設置 margin


此方法只能進行水平的居中,且對浮動元素或絕對定位元素無效。

方式二:修改為 inline-block 屬性


居中的元素為浮動元素


居中的元素為絕對定位元素

方式一:


方式二:


垂直居中元素:

通用方法,元素的寬高未知

方式一:CSS3 transform


方式二:Flex 布局


適用于子元素為浮動,絕對定位,內聯元素,均可垂直居中。

居中元素為單行文本


把文字的 line-height 設為文字父容器的高度,適用于只有一行文字的情況。

已知元素寬高

方式一:


方式二:


垂直居中元素:

1. 絕對居中定位


優點:

不僅可以實現在正中間,還可以在正左方,正右方

元素的寬高支持百分比 % 屬性值和 min-/max- 屬性

可以封裝為一個公共類,可做彈出層

瀏覽器支持性好

2. 負邊距居中


特點:

良好的跨瀏覽器特性,兼容 IE6 - IE7

靈活性差,不能自適應,寬高不支持百分比尺寸和 min-/max- 屬性

3. Transform 定位


特點:

內容可自適應,可以封裝為一個公共類,可做彈出層

可能干擾其他 transform 效果

4. Flexbox 布局


這是 CSS 布局未來的趨勢。Flexbox 是 CSS3 新增屬性,設計初衷是為了解決像垂直居中這樣的常見布局問題。

5. table-cell 居中


適用于子元素 display 為 inline-block, inline 類型的元素,需要已知父元素的寬高,且父元素的寬高不能設為百分比數。

6. font-size 配合 vertical-align 實現垂直居中


該方法的要點是給父元素設一個合適的 font-size 的值,這個值的取值為該父元素的高度除以 1.14 得到的值,并且子元素必須 是一個 inline 或 inline-block 元素,需要加上 vertical-align: middle 屬性。使用這種方法,子元素的寬度或高度都不必知道。

具體原理可以上網搜 vertical-align 垂直居中。

7. 文本內容居中


總結:CSS的居中的方法有很多,需要掌握的知識點也很多,為了很好地記憶和掌握CSS居中的相關知識,我們需要將其相關知識加以整理,歸納。最終達到物為我用的目的。


參考資料:

【1】敲代碼,學編程 ?知乎《詳解CSS居中布局技巧》

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,786評論 1 92
  • 水平居中 行內或類行內元素 在塊級父容器中讓行內元素居中,只需使用 text-align: center; : 這...
    萊昂納德剛閱讀 188評論 0 0
  • CSS中在不同場景下,解決居中的方式有很多,經常讓人無從下手,所有我們將CSS居中進行一次小結,方便以后我們布局使...
    字母31閱讀 274評論 0 1
  • CSS居中總結 最近在學習CSS居中,居中里面又包含水平居中和垂直居中,分不太清內聯元素(inline or in...
    從這到那閱讀 450評論 1 2
  • 水的故事 最近小朋友總是愛玩水。刷牙的時候,一直開著水龍頭。把水接到杯子里又倒掉,看著心疼。特別我是一個對節約用水...
    西涼水哥閱讀 551評論 0 49