定位也是Css中一個非常強大的屬性。定位主要是用來移動盒子,將其移動到我們想要的位置。
定位分為兩部分
1、邊偏移 left | right |top |bottom:偏移大小;(邊偏移一般制定上就不指定下,指定左就不指定右)
2、定位模式 position :static| relative |absolute | fixed
(1)position :static預設值,使用static時 邊偏移不起效果。常用於取消定位。
(2)position :relative 相對定位,相對於其原文件流的位置進行定位 可以通過邊偏移移動位置,但是原來位置繼續佔有 每次移動以自己的左上角為基點進行移動
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> /* */ .son1 { width: 100px; height: 100px; background-color: red; } .son2 { width: 100px; height: 100px; background-color: pink; position: relative; left: 90px; top: 50px; } .son3 { width: 100px; height: 100px; background-color: red; } </style> </head> <body> <div class="fa"> <div class="son1"> </div> <div class="son2"> </div> <div class="son3"> </div> </div> </body> </html>
顯示結果為:
(3)position :absolute 絕對定位,相對於上一個已經定位的父元素進行定位 脫離標準流,與浮動類似完全不佔位置
a、如果父親沒有定位,則以瀏覽器為準對齊,原位置不保留
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> /* */ .fa { width: 400px; height: 400px; background-color: aqua; margin: 0 auto; } .son1 { width: 100px; height: 100px; background-color: red; } .son2 { width: 100px; height: 100px; background-color: pink; position: absolute; left: 90px; top: 50px; } .son3 { width: 100px; height: 100px; background-color: red; } </style> </head> <body> <div class="fa"> <div class="son1"> </div> <div class="son2"> </div> <div class="son3"> </div> </div> </body> </html>
b、父親有定位,則以最近的父親元素為基準點對齊 (父親可以是absolute也可以是relative) 一半來說子元素絕對定位,父元素相對定位即“子絕父相”
在上例中給.fa 樣式增加 一個相對定位 即position: relative; 截個圖變為:
c、絕對定位 想要水平垂直居中,則先設定left50% 再設定自身寬度的一半 margin-left:-50px
.son2 { width: 100px; height: 100px; background-color: pink; position: absolute; left: 50%; top: 50%; margin: -50px 0 0 -50px; }
將a中.son的樣式改為如上所示程式碼,可以將.son2 改為水平居中,垂直居中,結果圖如下
(4)position :fixed 固定定位 相對於瀏覽器視窗進行定位,與父元素沒有任何關係 。不佔位置,不隨滾動條滾動, 固定定位一定要寫寬和高(除非有內容撐開盒子) 。
其他注意點:
1、在定位中,會產生層疊關係,設定層疊顯示順序使用z-index:1;數字越大優先順序越高(只對定位元素(靜態定位除外)產生效果)
如下例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * { margin: 0; padding: 0; } div { width: 200px; height: 200px; margin: 0; } div:first-child { background-color: aqua; z-index: 3; } div:nth-child(2) { background-color: red; position: absolute; left: 10px; top: 10px; z-index: 2; } div:last-child { background-color: pink; position: absolute; left: 20px; top: 20px; z-index: 1; } </style> </head> <body> <div></div> <div></div> <div></div> </body>
在有定位元素中設定z-index 數值高的 顯示在最上面。
2、絕對定位和固定定位會將元素轉換為行內塊元素,因此設定絕對定位和固定定位後就不需要在轉換模式了