面試問題 關於水平居中和垂直居中

2021-07-10 16:53:10 字數 2018 閱讀 2987

這個問題很常見,記錄下來將來好在面試之前複習複習!!

1、margin:0 auto

0是隨意的乙個值,第二個值必須設為auto,此方法只能水平居中,對浮動元素和絕對定位元素無效!只對塊狀元素有效。

2、text-align:center

只能對、按鈕、文字等行內元素(display為inline或inline-block)水平居中。此屬性是相對于父元素來說的。

3、line-height

把該屬性的值設定為文字父容器的高度,實現垂直居中。只適用於只有一行文字的情況。對塊狀和行內元素都使用。

4、使用**:適用ie8以上和火狐等現代瀏覽器,不適用於ie6、7.

把需要居中的元素放在標籤中,**預設對裡面的內容進行垂直居中,所以只要設定td的屬性align為center就可以實現水平居中(千萬注意,這裡的align是td的屬性,不是css屬性,千萬注意!!!),或者在css中設定text-align:center也行。

把該屬性的值設定為文字父容器的高度,實現垂直居中

5、display:table-cell:適用ie8以上和火狐等現代瀏覽器,不適用於ie6、7.display:table-cell

屬性指讓標籤元素以**單元格的形式呈現,類似於td標籤。可以通過設定css屬性text-align:center來水平居中、vertical-align:middle來垂直居中,

這種方法只能在ie8+、谷歌、火狐等瀏覽器上使用。(vertical-align實現居中的性質非常混亂,記住這一種)

把該屬性的值設定為文字父容器的高度,實現垂直居中

6、使用絕對定位居中父類:postion設定為relative,寬高已知;

子類:position設定為absolute,top和left相對於父類來移動的,此時的margin是相對於自己移動(聽說position:、設定為absolute,margin相對於自己,真假求證啊)寬高已知;

接下來的一切就變得很好理解了。

top:50%(這個是父類高度的50%,以下類推)

left:50%

margin-top:自身高的負一半

margin-left:自身寬的負一半

7、適用於ie9+以上,火狐等瀏覽器

其他的條件和6相同,然後:

top:0

bottom:0

left:0

right:0

margin:auto

聽說是這樣解釋的:top和bottom是沒有優先順序的,所以他們都要求是0的時候,瀏覽器只好讓他們居中,同理對left和right,不過margin:auto這句話是不可少的。

8、利用浮動和相對定位來實現水平居中(個人覺得此方法有點矯情,不推薦。)

條件:需要給居中的元素加乙個包裹元素;

需要居中的元素可以不設定寬度;

包裹元素進行浮動,並且設定為相對定位,把left設定為:50%(父類寬度的50%);

需要居中的元素設定為相對定位,把left設定為:-50%(父類也就是包裹元素寬度的50%,包裹元素和需要居中的元素沒有設定寬度,所以他們寬度相等)

水平居中

水平居中

9、傳說中的方法,只適用於ie6、7父元素寬高已知,父元素設定font-size為父元素高度/1.14;

子元素不必知道寬高,必須是inline或者inline-block元素,且設定vertical-align:middle。

水平居中和垂直居中

行內元素 為該行內元素的父元素新增設定text align center 塊級元素 為其自身設定margin auto樣式 子元素是行內元素 設定父元素的line height為其自身盒子的高度 子元素是塊級元素但子元素高度沒有設定 設定父元素是 display table cell vertica...

垂直居中和水平居中總結

container center 以上 可使塊級子元素水平垂直居中,為inline block的子元素只能垂直居中,若也想其水平垂直居中確保在父元素樣式中新增 text align center。關鍵必須設定其父元素固定寬高。即使有多個子元素也一樣可以垂直水平居中。當子元素都為行內元素 行內元素不能...

CSS 垂直居中和水平居中

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