2017-01-16 42 views
0

我只是碰到一些莫名其妙絆倒:爲什麼這個絕對定位的元素遵循流程?

.parent { 
 
    position:relative; 
 
    background:lime; 
 
    height: 100px; 
 
} 
 
.parent div { 
 
    position:absolute; 
 
    background-color: yellow; 
 
}
<div class="parent"> 
 
    Parent 
 
    <div id="test">Child</div> 
 
</div>

注意,黃色的「孩子」矩形詞「家長」的下方。爲什麼?我瞭解topleft的默認值的方式是0,因此元素應該將其自身定位在父級的左上角。實際上,如果我刪除文本Parent或將top: 0添加到子元素,則會發生這種情況。但爲什麼在這種情況下絕對定位的盒子會遵循流程?

+5

_「我理解頂部和左側的默認值的方式均爲0」 _ - 不,他們都沒有;兩者的默認值都是'auto'。是的,這有一個不同的效果,比明確設置'0'會。基本上,隱式的「top」值將成爲正常流程中元素_would_與其位置祖先頂部邊界的偏移量。 – CBroe

+0

@CBroe,男人,你應該發佈這個答案而不是評論。 – Anton

+0

謝謝,@CBroe!我找到了我正在尋找的東西! :) –

回答

1

當位置爲auto(這是默認值)時,絕對位置仍然錨定在其父元素的內容流中。如果您將子元素移動到父元素的開頭,則會看到您期望的內容(請參見下面的代碼片段)。您可以避免通過添加top: 0;left: 0;

.parent { 
 
    position:relative; 
 
    background:lime; 
 
    height: 100px; 
 
} 
 
.parent div { 
 
    position:absolute; 
 
    background-color: yellow; 
 
}
<div class="parent"> 
 
    <div id="test">Child</div> 
 
    Parent 
 
</div>

相關問題