transform對定位元素的影響


1、溫故知新

   absolute:生成絕對定位的元素,相對於除position:static 定位以外的第一個有定位屬性的父元素進行定位,若父元素沒有定位屬性則相對於瀏覽器窗口的左上角定位,定位的元素不再占據文檔的空間。

   relative:生成相對定位的元素,相對於其正常位置進行定位,定位的元素仍然占據文檔的空間;

2、發現問題

 

   css//
div { width: 150px; height: 150px; margin-left: 80px; background-color: #00aabb;
     
        }
        a {
            position: absolute;
            top: 0;
            left: 0;
            width: 70px;
            height: 70px;
            background-color: green;
        }
標簽//
<div>
    <a href=""></a>
</div>

效果圖

要是在div上面加一個transform:translate(0)后的效果圖如下:

是不是看出問題來了,對加了這個屬性后,起到了一個類似定位的作用。

那么這個屬性是類似absolute還是relative,這里我就不寫事例了,直接說出結果transform的作用類似於relative的作用,

因為其還占據了空間沒有脫離文檔流,但也僅僅是類似relative的作用, 你給其加了這個屬性的元素加定位值(top:20px;left:20px)是沒任何效果

 3、加了transform的元素改變其層疊關系。

        div {
            width: 150px;
            height: 150px;
            margin-left: 80px;
            background-color: #00aabb;
        }
        p{
            width: 150px;
            height: 150px;
            margin-top: -80px;
            background-color: gold;

<div></div>
<p></p>

  看上面代碼知p元素會覆蓋一部分div元素。如果在div上面加一個transform屬性(如:translate(0));情況就反過來了,如下圖

3、總結

當給一個元素加上transform屬性的時候,這個元素就會具有relative的特性,所以若一個元素的父元素擁有tranform屬性,那么子元素在使用定位屬性的時候要注意。


免責聲明!

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



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