position屬性規定元素的定位類型。這個屬性定義創建元素佈局所用的定位機制。任何元素均可以定位,不過絕對或固定元素會生成一個塊級框,而不論該元素自己是什麼類型。相對定位元素會相對於它在正常流中的默認位置偏移。
position屬性有五個可選值,分別是absolute、fixed、relative,static,inherit.css
relative是相對於其正常文本流中的位置進行偏移。以下代碼:html
<html lang="en"> <head> <style type="text/css"> #item1 { width:100px; height:100px; background-color:green; } #item2 { width:100px; height:100px; background-color:red; } </style> </head> <body> <div id="content"> <div id="item1" >item1</div> <div id="item2">item2</div> </div> </body> </html>
上述代碼顯示結果以下:
瀏覽器
若把上述代碼中css樣式文件改成:佈局
#item1 { width:100px; height:100px; background-color:green; } #item2 { width:100px; height:100px; background-color:red; position:relative; left:20px; top:20px; }
顯示結果以下:
spa
總結:relative是相對正常文檔流的位置進行偏移,原先佔據的位置依然存在,也就是說它不會影響後面元素的位置。left表示相對原先位置右邊進行偏移,top表示相對原先位置下邊進行偏移。當left和right同時存在,僅left有效,當top和bottom同時存在僅top有效。relative的偏移是基於對象的margin左上側的。3d
爲了便於觀察,現將上述原始網頁代碼最外層div加上margin值。code
#content { margin-left:100px; margin-top: 100px; }
正常顯示以下:
當修改css樣式文件以下時:htm
#item1 { width:100px; height:100px; background-color:green; } #item2 { width:100px; height:100px; background-color:red; position: absolute; left:20px; top:20px; } #content { margin-left:100px; margin-top: 100px; }
顯示結果以下:
對象
因而可知當父級元素的position屬性值爲默認值時(static),absolute是相對於瀏覽器窗口進行定位的。
若是設置content的position屬性值爲非默認值,那麼absolute就是相對於該父級元素進行定位:blog
#content { margin-left:100px; margin-top: 100px; position: relative }
顯示效果以下圖所示:
當修改css樣式以下時:
#item1 { width:100px; height:100px; background-color:green; } #item2 { width:100px; height:100px; background-color:red; } #content { margin-left:100px; margin-top: 100px; position:absolute; padding:20px; border:10px solid black; }
顯示結果爲:
注意到變化了嗎,當把外層div設置爲absolute時,外層div寬度由原來的100%變爲auto.
當把一個元素position屬性設置爲absolute或fixed的時候,會發生三件事:
當修改css樣式文件以下時:
#item1 { width:100px; height:100px; background-color:green; } #item2 { width:100px; height:100px; background-color:red; position:absolute; left:20px; top:20px; } #content { margin-left:100px; margin-top: 100px; position:absolute; padding:20px; border:10px solid black; }
顯示效果以下:
因而可知,若是parent設定了margin,border,padding等屬性,那麼這個定位點將忽略padding,將會從padding開始的地方(即只從padding的左上角開始)進行定位,這與咱們會想固然的覺得會以margin的左上端開始定位的想法是不一樣的。
fixed是特殊的absolute,即fixed老是以body爲定位對象的,按照瀏覽器的窗口進行定位。