CSS中的居中 完全指導

2021-07-04 20:31:25 字數 2282 閱讀 7682

水平居中:horizontally

1.行內元素

text-align : center;

2.單個塊級元素

你可以設定乙個塊級元素居中,如果你已經設定了這個塊元素的寬度(width)的話,設定其margin-left和margin-right為auto就可以。如果你沒有設width,塊級元素通常會佔滿其父元素顯示。

通常情況下你不能讓乙個浮動元素居中

3.多個塊級元素在一行內水平居中

此時你可以修改這些塊級元素的display屬性為inline-block或flexbox。

inline-block的情況

//父元素設定text-align為center

.inline-block-center

//子元素設定display為inline-block

.inline-block-center div

flexbox的情況:

直接設定父元素的display為flex,將父元素作為彈性伸縮盒顯示

.flex-center

垂直居中:vertically

1.行內元素

1.1單行行內元素

有時候行內元素或文字元素看上去垂直居中,僅僅是因為其上下內邊距設定了相同的值。

.link

如果有時候你不想選擇padding,那還有一種方法就是設定line-height的值與height的值相等。

.center-text-trick

1.2多行元素

設定相同的padding-top和padding-bottom對多行元素也會產生垂直居中的效果。

但是如果padding設定不好使的時候,我們也可以使用table和table-cell。對display為table-cell的元素使用vertical-align為middle即可。

.center-table

.center-table p

如果table過時了,那你可以嘗試一下flexbox,乙個flex子元素可以在其flex父元素中很簡單的居中。

.flex-center-vertically

注意:垂直居中的條件必須是其父元素有乙個固定的高度height。

如果以上幾種垂直居中的方法就失效了,那就只能'ghost element'技術,用偽元素(pseudo element)了。乙個滿高的偽元素被放置在父容器中,要垂直居中的元素和它一起居中。

.ghost-center

.ghost-center :: before

.ghost-center p

2.塊級元素

2.1知道元素的高度?

在網頁布局中,不知道某個塊元素的高度是很常見的,因為當塊元素的寬度改變時,其內容也會隨著改變高度。文字樣式的變化也會改變文字的總體高度。文字內容大小的變化也會改變文字的總體高度。

有固定高寬比例的元素。比如img,當其調整大小時,也會改變高度。

但如果你知道元素的高度,那改元素垂直居中可以這樣寫:

.parent

.child

2.2不知道元素的高度

我們還是可以把該元素先壓到父元素一半的地方,然後再往上輕推一點,具體如下:

.parent

.child

2.3是否可以利用css3的flexbox呢?

可以的,並且很簡單。

.parent

3.水平+垂直居中

1.元素有固定的寬度和高度

先對元素絕對定位,讓其先定位在父元素的50%/50%處,然後使用負外邊距,使其等於元素寬度和高度的一半,具體**如下

.parent

.child

2.元素的寬度和高度未知

如果你不知道元素的寬度和高度,你可以使用css3的transition過度屬性,使用translate函式,並在x,y兩個方向都移動該元素高寬的-50%。

.parent

.child

3.使用css3的flexbox

需要使用flexbox的兩個方向上的居中屬性,**如下:

.parent

結論:利用css,你可實現完全的居中。

原文:

居中的css 完全指南 翻譯

譯自 對於行內元素可以使用如下實現水平居中 blocklist1 1這種方法對於inline,inline block,inline table等都有效。對於乙個塊元素,可以設定其margin left和margin right自動 blocklist1 2 div1無論塊元素的寬度是否已知,都可以...

居中的css 完全指南 翻譯

blocklist1 1這種方法對於inline,inline block,inline table等都有效。blocklist1 2 div1無論塊元素的寬度是否已知,都可以實現水平居中。blocklist1 3 div1 blocklist1 3 div1 div.blocklist1 3 di...

CSS居中完全解決方案

把行內元素巢狀在乙個div中,並且在div中設定以下樣式 a 對於定寬的塊級元素,我們要設定起margin top,margin right 為auto center 多個塊級元素,我們將其display設定為inline block 然後將父級元素設定一下屬性 div 設定需要水平居中的塊狀元素的...