CSS中的絕對定位(absolute)誤區


這幾天在慕課上看視頻學習,偶然聽到幾個老師都說: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;

 

 

 

 

 

----------------------------------------------------------------------------自己實踐------------------------------------------------------------------------------------------

 

 

 


免責聲明!

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



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