這篇文章主要為大家介紹了關於利用純CSS實現居中的七大方法,其中包括line-height居中法、table-cell居中法、上下左右定位+margin居中法、50%定位+margin居中法、50%定位+translate居中法、Flexbox居中法以及Flexbox+margin居中法,需要的朋友可以參考學習。
前言
記得有次找工作面試的時候,一面試官問了一個CSS方面的問題:如何讓元素在瀏覽器窗口中上下左右居中。我記得當時給了個答案是,先用JS取得瀏覽器視窗高度,然後給body設定line-height為視窗高度並設定text-align:center, 接著再設定該元素display:inline-block和vertical-align :middle。唉,現在想想自己都覺得累。
難道就一定要用到JS嗎?就不能有一種只用CSS方法就能實現元素居中的方法嗎?答案是,有!而且方法遠不止一種!
一、line-height居中法
父元素:text-align: center; line-height:600px; font -size: 0;
子元素:display: inline-block; vertical-align: middle;
註:
600px必須為父元素的高度,這裡還需注意的一點是font-size需設為零,若未寫該屬性將導致元素並不能精確垂直居中。此方法即為我面試時所答的方法,缺點很明顯,父元素高度須確定。 (相容IE8+)
二、table-cell居中法display: table-cell; text-align : center; vertical-align: middle;
子元素:
註:
相容IE8+
三、上下左右定位+margin居中法position: relative ;
子元素:
附註:
相容IE8+
#四、50%定位+margin居中法
# #父元素:position: relative;
子元素:position: absolute; left: 50%; top: 50%; margin: -200px 0 0 -200px;
200px須為此子元素的寬高的一半。例如該子元素寬為100px,高為50px,則margin取值為-25px 0 0 -50px。此方法缺點是須確定子元素寬高。 (相容IE8+)
五、50%定位+translate居中法###########父元素:###position: relative;### ######子元素:###position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);###### ##### #######附註:######此方法使用了CSS3 transform屬性,適合用於行動端。 (相容IE9+)############六、Flexbox居中法############父元素:###display: flex; justify-content: center; align -items: center;###### ############附註:######此方法使用了Flexbox彈性佈局,行動端相容性也存在很大問題。 (相容IE10+)############七、Flexbox+margin居中法###########父元素:###display: flex;########### ####子元素:###margin: auto;### #############註:#######同上,相容於IE10+###以上是利用純CSS實現居中的方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!