這幾天在慕課上看視頻學習,偶然聽到幾個老師都說:CSS絕對定位在沒有其他有除static定位的包含塊的情況下是以body進行定位,如果要想相對當前元素的父元素來定位,父元素一定要設置position:relative。注意,前面一句是沒有問題的,在沒有父元素設置定位的話,默認就是以body來定位的,但是后面一句,要想相對父元素定位,父元素必須設置相對定位(relative),根據我的開發經驗和查閱相關資料確認后發現,這是不對的。 (總結一句話:父元素relative 子元素absolute )
正確的理解姿勢是:
相對定位:相對於塊級元素(或行內塊)自身位置進行定位;
絕對定位:絕對定位的盒子是相對於離它最近的一個已定位的盒子進行定位的(默認是body);
注意css描述的絕對定位概念,沒有說明是離他最近的一個已相對定位的盒子進行定位的,所以離他最近的盒子的定位可以是相對定位(relative)和絕對定位(absolute)的,但是在開發中,一般是父盒子設置相對定位的,但是不代表只能是相對定位,舉個栗子:
HTML:
1 <div class="father"> 2 <div class="son"></div> 3 </div>
CSS:
1 .father{
2 width: 300px;
3 height: 300px;
4 background-color: orange;
5 position: absolute;
6 top:50%;
7 left:50%;
8 margin-top: -150px;
9 margin-left: -150px;
10 }
11 .son{
12 width: 100px;
13 height: 100px;
14 background-color: pink;
15 position: absolute;
16 left:0;
17 top:0;
18 }
.father元素絕對定位是相對body的,這個沒問題,主要看.son元素,他自身設置絕對定位,父元素.father也有絕對定位,你覺得這個子元素會相對body定位還是父元素來定位呢?

結果為:子元素是相對於有絕對定位的父元素來定位的,而不是body;
----------------------------------------------------------------------------自己實踐------------------------------------------------------------------------------------------



