position:absolute和margin:auto 連用實現元素水平垂直居中


有時候,要實現一些元素水平垂直都居中,這部分元素呢 可能大小未知,例如一些圖片或者是一些未知大小的塊元素。

利用絕對定位可以將要居中的元素脫離文檔流.

 position: absolute;
 left:0px;
 right: 0px;
 top:0px;
 bottom: 0px;

但他的父元素要設成相對定位

position: relative;

這樣設置完成后 會發現子元素並沒有居中。這是因為雖然脫離了文檔流但是top的bottom的值是相等的。根據優先級會自動向上對齊。同理左右也是如此。

這時在要居中的元素中加上

margin:auto;

margin:auto會自動去計算子元素和父元素之間的邊距,並設為居中。所以就會實現上下左右都居中。

 

那么還有一個問題,既然居中是有margin:auto來計算實現。為什么還需要將元素設為絕對定位呢?

這是因為margin:auto 默認只會計算左右邊距。而上下如果設置為auto時默認是取0.也就是說,margin:auto和margin:0 auto 在一般情況下沒有區別,不能實現垂直居中。

但是有了絕對定位后,margin-top和margin-bottom 的值就不是0了,也是通過計算所得。所以能實現垂直居中。

最后,發出完整的css類

.center{
               position: absolute;
               left:0px;
               right: 0px;
               top:0px;
               bottom: 0px;
               margin:auto;
               background: pink;
               text-align: center;
               vertical-align:middle;
    }

晚安,世界

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM