在css中,元素居中顯示,是基礎也是一個小難點。咱們常常不知爲什麼老是不能把元素放在咱們想放的地方。如今我們就來總結一下一些常見的居中。至少能讓咱們解決平時開發的問題。css
咱們一個一個來看,一個一個理解,解決。html
先來一段html代碼:瀏覽器
<div class="parent"> <div class="child"> <p>測試文本 </p> </div> </div>
而後css文件中有兩種處理方法post
.parent { text-align: center; }
或者測試
.child { width: 100px; margin: 0 auto; }
這兩種方法均可以讓元素水平居中顯示。可是請注意,一個是設置的parent一個是設置的child。那他們的區別或者說優劣如何呢?
個人理解是:code
第二種是必需要設置寬度,有的同窗沒有設置寬度會發現margin 0 auto 不起做用。其實並不是這樣。只是他的默認寬度每每是繼承父元素的寬度。因此看不到效果。htm
html代碼繼承
測試文本 開發
css文件處理方法:it
.parent { line-height:200px; }
或者
. parent { display: table; height: 200px; } . child { display: table-cell; vertical-align: middle; }
咱們依舊能夠看到,第一種只設置了parent元素,第二種設置了parent和child
咱們能夠這樣理解這兩種方法:
ps:vertical-align還有不少用法,這裏再也不細講,比較多。可是要注意的是,不少用法會出現瀏覽器不兼容的問題bug較多。因此注意多瀏覽器測試。筆者上面的方法通過測試。是兼容的。
html代碼:
<div class="parent"> <div class="child"> <p>測試文本</p> </div> </div>
css文件內的處理方法
.parent { text-align: center; line-height: 200px; }
或者
.parent { text-align: center; display: table; height: 200px; width: 500px; } .child { width: 100px; display: table-cell; vertical-align: middle; }
再或者
.parent { line-height: 200px; } .child { width: 100px; margin: 0 auto; }
三種各有優劣勢。須要你們理解塊級元素,行級元素,而後根據業務須要進行選擇。其實只要理解底層基本的東西。還有很多的奇淫技巧能夠達到效果。
下面是這三種方法的說明:
咦,兩兩組合不該該四種嗎。這裏爲什麼只有三種。是由於將parent元素設置爲table和margin的那個組合不能達到效果。由於table-cell是inline-block級別的元素,margin沒法操做種級別的。margin的喜愛是block級。
正如以前所說,還有不少方法能夠幹這些事。好比不少人喜歡的postion,它實際上是一個定位的神器。只是對於居中這些我用position很少。這裏就只舉一個例子吧
對於上面的html代碼
css裏面咱們能夠這樣
.parent { width: 400px; height: 400px; } .child { position: relative; top: 50%; left: 50%; }
position的relative是子元素相對於父元素的位置。這裏設置的top: 50%;left: 50%;準確位置是子元素左上角和父元素的左上角。50%是相對於父元素的寬高。其實並沒徹底居中,有必定的偏差。