CSS中的父相子絕布局


主要應用場景,就是我想要塊的布局根據父級來定位,而不是根據頁面。
例如,下面的例子中,我用兩個半圓拼成一個正圓,思路是用一個父級標簽把兩個子標簽包起來,父標簽是一個正圓,然后子標簽各占一半,先化成兩個矩形,然后就是位置的選擇。 這里用到的就是父相子絕,即父標簽用到相對位置,子標簽用到絕對位置,這樣子標簽的兩個半圓就能貼到父標簽,形成一個圓。



**注意:**
**1.這里面父標簽需要用相對定位,使用絕對定位的話會脫離文檔流,見下面例子。** **2.標簽寫position(relative或者absolute)的話,就會以它的父級標簽作為參考,如果父級沒寫css樣式,那就會以body樣式作為參考,如果也沒寫,就會以整個html頁面作為參考。例如這里,如果父級不設置position的話,那么那兩個子標簽就會以整個html頁面為參考點,而把矩形飄到頁面的兩端**

脫離文檔流,其實就是不是按照頁面中文本的順序,一行一行的排班下來,而是按照自己的意願,可能存在一些重疊,常用的辦法就是定位和浮動。具體見以下幾篇補充 **[什么是脫離文檔流](https://zhidao.baidu.com/question/556990261.html)** **[正常文檔流和脫離文檔流](https://www.cnblogs.com/masanhe/p/8318002.html)** **[HTML元素脫離文檔流的三種方法](https://www.cnblogs.com/ning123/p/11011845.html)**




下面這個例子,如果把父標簽的相對定位改成絕對定位,那么和父標簽相鄰的test標簽就會和該父標簽重疊,也就是脫離文檔流

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        div {
        font-size: 15px;
        color: #fff;
    }

        .test1 {
        width: 400px;
        height: 400px;
        background: #234;
        position: relative;
    }

        .test2 {
        width: 300px;
        height: 300px;
        background: #345;
        position: absolute;
        left: 40px;
        top: 40px;
    }

        .test {
        width: 500px;
        height: 500px;
        background: #123;
    }
    </style>
</head>
<body>
<div class="test1"> test1
    <div class="test2">test2</div>
</div>
<div class="test"> test</div>
</body>


</html>


免責聲明!

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



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