CSS水平居中和垂直居中的各種方法

2021-07-02 04:23:16 字數 1780 閱讀 7283

**:前端開發-武方博 

css的居中有水平居中和垂直居中,這兩種居中又分為行內元素居中和塊級元素居中,不同的居中用不同方法。

水平居中

1、行內元素水平居中(文字,)

給父層設定 text-align:center; 可以實現行內元素水平居中。

谷歌搜尋

2、確定寬度塊級元素水平居中

確定寬度的塊級元素水平居中,常用的有 margin:0 auto; 相信很多開發人員都用的是這個,不過本人認為還有更好的寫法:margin-left:auto;margin-right:auto; 因為 margin-top 和 margin-bottom 在重置 css 時就已經寫了為 0 了。

3、不確定寬度的塊級元素水平居中

不確定寬度的塊級元素有三種方法實現。

方法一:

這裡用到了 table 標籤來實現不確定寬度的塊級元素水平居中。table 本身不是塊級元素,如果不給它設定寬度的話,會由內部元素的寬度「撐開」,但即使不設定它的寬度,僅設定 margin-left:auto 和 margin-right:auto 就可以實現水平居中。

這種方法很巧妙,但是增加了無語義標籤,加深了標籤的巢狀層數。

方法二:

方法二是改變元素的 display 值,使塊級元素變成行內元素,然後使用 text-align:center 使其居中。相對於方法一,它不用增加無語義標籤,簡化了標籤的巢狀深度,但它也存在一定的問題:它將塊級元素變成了行內元素,這樣就失去了一些塊級元素的功能,比如設定寬度,高度。

方法三:

方法三通過給父層設定浮動和相對定位以及 left:50%,子元素設定相對定位和 left:-50% 來實現水平居中。它可以保留塊級元素的功能,而且不會新增無語義標籤,不增加巢狀深度,但是設定了相對定位,會帶來一定的***。

這三種方法各有優缺點,具體使用哪種方法可以視具體情況而定。

垂直居中

1、父層高度不確定的垂直居中

通過給父層設定相同的上下內邊距實現。

hello world

2、父層高度確定的單行文字垂直居中

通過給父層設定行高來實現,行高和父層高度相同。

hello world

3、父層高度確定的多行文字、、塊級元素垂直居中

方法一:

說到垂直居中,css 中有個用於垂直居中的屬性 vertical-align,但只有在父層為 td 或者 th 時,這個屬性才會生效,對於其他塊級元素,例如 div、p 等,預設情況是不支援的。在 firefox 和 ie8 下,可以設定塊級元素的 display 值為 table-cell,來啟用 vertical-align 屬性,但 ie6,7 並不支援,所以這種方法沒有辦法跨瀏覽器相容。但是我們可以使用 table。

table 可以很好的實現垂直居中效果,但是它新增了無語義標籤,增加了巢狀深度。

方法二:

對支援 display:table-cell 的 ie8 和 firefox 用 display:table-cell 和 vertical-align:middle 來實現居中,對不支援 display:table-cell 的 ie6 和 ie7 使用 hack 寫法。

利用 hack 技術區別對待 firefox、ie8 和 ie6、ie7,在不支援 display:table-cell 的 ie6 和 ie7 下,通過給父子兩層元素分別設定 top:50% 和 top:-50% 來實現居中。這種方法的好處是沒有增加額外的標籤,但缺點也很明顯,一方面它使用了 hack,不利於維護,另一方面,它設定了 position:relative 和 position:absolute,帶來了***。

CSS 垂直居中和水平居中

position relative width 500px height 500px background color ddd content background color 6699ff width 50 height 50 position absolute top 25 left 25 這兩...

CSS垂直居中和水平居中

總括 css居中一直是乙個比較敏感的話題,為了以後開發的方便,樓主覺得確實需要總結一下了,總的來說,居中問題分為垂直居中和水平居中,實際上水平居中是很簡單的,但垂直居中的方式和方法就千奇百怪了。人生用物,各有天限 夏澇太多,必有秋旱。水平居中設定 行內元素 設定 text align center ...

CSS 水平居中和垂直居中

1 水平居中 行內元素 text align center 2 水平居中 定寬塊狀元素 margin auto,滿足定寬和塊狀兩個條件的元素是可以通過設定 左右margin 值為 auto 來實現居中的。3 水平居中 不定寬塊狀元素 不定寬度的塊狀元素有三種方法居中 這三種方法目前使用的都很多 1 ...