css垂直居中方式的總結

2022-08-20 22:06:12 字數 3046 閱讀 1830

工作中還是會用到很多

垂直居中相關的知識

,所以我覺得有必要總結一下。

我想先問一下你們能想到的實現垂直居中的方法有哪些?

1、line-height方式

2、table布局

3、inline-block方式

4、絕對定位之automargin

5、絕對定位之負margin

6、transform

7、額外div

8、flex居中

我把他們分為了兩類,文字的垂直居中和塊級垂直居中

文字垂直居中:line-height方式、table布局

塊級垂直居中:絕對定位之automargin、絕對定位之負margin、額外div、inline-block方式、transform方式、flex居中

一、line-height方式

說明:該方式只適用於情況比較簡單的單行文字,只需要簡單地把 line-height 設定為那個物件的

height

值就可以使文字居中了。這種方法在小元素上非常有用,例如使按鈕文字或者單行文字居中。

優缺點分析

優點:適用於所有瀏覽器

無足夠空間時不會被截斷;

缺點:只對文字有效(塊級元素無效),

多行時,斷詞比較糟糕;

二、table布局

說明:

該屬性定義行內元素的基線相對於該元素所在行的基線的垂直對齊。

在表單元格中,這個屬性會設定單元格框中的單元格內容的對齊方式。

display:table此元素會作為塊級**來顯示 類似table標籤

display:table-cell 此元素會作為乙個**單元格顯示 類似td 和 th標籤

原理:

利用表布局特點,vertical-align設定為middle後,單元格中內容中間與所在行中間對齊。

優缺點分析

優點:支援任意內容的可變高度、支援響應式

,相對於line-height而言,可以相容文字有多行的情況

;缺點:每乙個需要垂直居中的元素都會需要加上額外標籤(需要table、table-cell兩個額外元素)

三、inline-block

說明:將center元素display設定為inline-block,vertical-align設定為middle,為包含框設定after偽元素,將偽元素display設定為inline-block,vercial-align設定為middle,同時設定height為100%,撐開容器。

原理:為同一行的inline-block元素設定vertical-align:middle,該行內的inline-block元素會按照元素的垂直中心線對齊。

優缺點分析

優點:支援響應式、支援可變高度;

缺點:會加上額外標記;

四、絕對定位之automargin

說明:使用絕對定位要求元素必須設定明確高度。內容超過元素高度時需要設定overflow決定滾動條的出現

resize 屬性規定是否可由使用者調整元素的尺寸。

注釋:如果希望此屬性生效,需要設定元素的 overflow 屬性,值可以是

auto

、hidden

或 scroll

。resize: none|both|horizontal|vertical;

優缺點分析

優點:支援響應式,

並且在resize後仍然居中;

缺點:沒有顯式設定overflow時,內容超過元素高度時會溢位,沒有滾動條;

五、絕對定位之負margin

說明:已知元素高度後,使用絕對定位將top設定為50%,mergin-top設定為內容高度的一半(height + padding) / 2;內容超過元素高度時需要設定overflow決定滾動條的出現;top:50%元素上邊界位於包含框中點,設定負外邊界使得元素垂直中心與包含框中心重合;

優缺點分析

優點:**量少、適用於所有瀏覽器、不需要巢狀標籤;

缺點:不支援響應式(不能使用百分比、min/max-width);

六、transform

這是最簡單的方法,不近能實現絕對居中同樣的效果,也支援聯合可變高度方式使用。內容塊定義transform: translate(-50%,-50%)必須帶上瀏覽器廠商的字首,還要加上

top: 50%; left: 50%;

優點:

1.      內容可變高度

2.      **量少

缺點:

1.      ie8不支援

2.      屬性需要寫瀏覽器廠商字首

3.      可能干擾其他

transform

效果4.      某些情形下會出現文字或元素邊界渲染模糊的現象

七、額外div

說明:在需要居中的元素外插入乙個div,設定外div的height為50%,margin-bottom為內部元素的一半(height+padding)/2。內容超過元素高度時需要設定overflow決定滾動條的出現。

優缺點分析

優點:瀏覽器相容性好,支援舊版本ie;

缺點:需要額外元素、不支援響應式;

CSS水平垂直居中方式

1.grid布局實現 一 father 2.grid布局實現 二 father 3.grid配合margin實現 father son 4.flex布局實現 father 5.flex配合margin實現 father son 6.使用display table cell實現 father son ...

CSS居中方式總結

一 水平居中 1 行內元素或者display為inline的塊級元素,前提是子元素沒有float 對父元素設定 text align center 2 塊級元素 已知寬高 1 元素自身設定為 margin 0 auto 2 利用絕對定位和margin結合的方式 elem 3 塊級元素 未知寬高 1 ...

CSS居中方式總結

1.text align center 使用以上方式居中是將父級容器中display inline 的行內元素或者文字進行水平居中。2.inline height height 值 使用inline height時經常和height一起使用,使得內容垂直方向上居中,建議在列表內部的li中使用 3.m...