文檔流中的元素的位置由元素在 (X)HTML 中的位置決定,這就是最原始的普通流,前面講到的浮動CSS學習筆記08 浮動能夠改變元素在文檔流中的位置,除了這個咱們還能夠經過使用CSS的position 屬性,來從新決定元素在文檔流中的位置。css
static就是默認的佈局方式,這裏不作介紹。html
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS相對定位</title> 6 7 <style type="text/css"> 8 div {height: 100px; width: 100px; border: 1px solid #000; background-color: yellow;} 9 </style> 10 </head> 11 <body> 12 <div class="box1">box1</div> 13 <div class="box2">box2</div> 14 <div class="box3">box3</div> 15 </body> 16 </html>
這時候box1與box2按照static的佈局方式在頁面上進行定位,如今對box2進行相對定位瀏覽器
結果以下,box2的位置進行了偏移(這個偏移是相對於box2原先的位置進行偏移的),並無影響到box1與box3的位置佈局
注意,在使用相對定位時,不管是否進行移動,元素仍然佔據原來的空間。所以,移動元素會致使它覆蓋其它框。學習
絕對定位使元素的位置與文檔流無關,所以不佔據空間。這一點與相對定位不一樣,相對定位實際上被看做普通流定位模型的一部分,由於元素的位置相對於它在普通流中的位置。spa
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS絕對定位</title> 6 7 <style type="text/css"> 8 .parent {height: 200px; width: 200px; background-color: yellow;} 9 .child {height: 100px; width: 100px; background-color: red; top: 0px; right: 0px; position: absolute;} 10 </style> 11 </head> 12 <body> 13 <div class="parent"> 14 parent 15 <div class="child"> 16 child 17 </div> 18 </div> 19 </body> 20 </html>
如今給parent也添加一個定位屬性code
效果以下,能夠看到child的位置發生了變化htm
從上面的現象能夠總結出一點:絕對定位的元素的位置相對於最近的已定位祖先元素,若是元素沒有已定位的祖先元素,那麼它的位置相對於最初的包含塊(這個例子中指body元素與parent)。blog
要使用絕對定位時,必需要有2個條件
一、必須給父元素增長定位屬性,通常建議使用position:relative
二、給子元素加絕對定位position:absolute,同時要加方向屬性(指left、right、top、bottom屬性)文檔
與absolute定位類型相似,但它的相對移動的座標是視圖(屏幕內的網頁窗口)自己。因爲視圖自己是固定的,它不會隨瀏覽器窗口的滾動條滾動而變化,除非你在屏幕中移動瀏覽器窗口的屏幕位置,或改變瀏覽器窗口的顯示大小,所以固定定位的元素會始終位於瀏覽器窗口內視圖的某個位置,不會受文檔流動影響。
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS固定定位</title> 6 <style type="text/css"> 7 .back-top {height: 40px; width: 40px; background-color: blue; color: #fff; position: fixed; bottom: 10px;right: 10px;} 8 </style> 9 </head> 10 <body> 11 <div class="back-top">回到頂部</div> 12 <p>段落1</p> 13 <p>段落2</p> 14 <p>段落3</p> 15 ... 16 <p>段落49</p> 17 <p>段落50</p> 18 </body> 19 </html>
效果以下,回到頂部這個div始終在同一個位置,博客頁面上的也是使用的固定定位。
絕對定位根據父元素爲基準點進行定位,它會脫離文檔流,不佔用原來位置空間相對定位根據自身爲基準點進行定位,離開原位置,可是仍是會佔用原來位置空間固定定位根據瀏覽器窗口爲基準點進行定位,它始終在一個位置,不會移動