絕對定位上下左右都為0 margin為auto為什么能居中


老規矩,先來一段廢話,我大學剛入門的時候覺得CSS很簡單,記一記就會了,不就是盒模型嘛,現在想來覺得自己那時候真的很自以為是哈哈。但是隨着工作沉淀,我明白了任何技術都有着它的深度和廣度,正是因為不少人對CSS都抱有輕視的態度,不說精通,能把CSS學到位的人都少之又少。當然我這么說並不代表我的CSS如何了得,事實上,我也是個切圖仔,對CSS知之甚少。

回歸正題:

元素居中的方法有很多比如display:flex、絕對定位結合transform: translate(-50%, -50%)等等,但我覺得最神奇的還是:

<body>
    <div class="content"></div>
</body>
        .content {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;

            width: 100px;
            height: 100px;
            margin: auto;

            background: green;
        }

之前我只知道這樣也能居中,但是不知道為什么。甚至還覺得主要是因為上下左右都為0的原因。

 

原因:

其實主要是因為:margin: auto;

auto的意思其實就是:平分剩余空間

 

(你看這個盒子模型它又長又寬,啊,串台了)

根據這個盒子模型我們可以看出,上下的margin都是一樣的,左右也一樣,也就是上、下平分、左、右平分。

那如果我們把上下左右的值設置都設置為100px並且把margin:auto; 去掉呢?

 

 那它就以top、left的值來定位了,即使我把right、bottom寫在了前面。也就是當left、top、right、bottom都有值時,優先以左上角來定位。

這時可見剩余空間並沒有被平分。

在上右下左值不為0時加上margin: auto;也一樣居中了。可見,auto屬性確實在平分剩余空間。

 

順便再提一句,給父元素設置z-index:9999; 子元素仍然排在父元素上面,那是為什么呢?層疊上下文跟z-index的關系是如何的?以后有機會再說吧


免責聲明!

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



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