定位有三種:相對定位 絕對定位 固定定位
相對定位
position:relative;
認識相對定位
相對定位,就是微調元素位置的。讓元素相對自己原來的位置,進行位置調整。-
不脫標, 老家留坑 形影不離
相對定位不脫標, 真是位置是在老家 只不過影子出去了.可以到處飄
相對定位用途
相對定位有坑,所以一般不用于做"壓蓋"效果,頁面中效果極小,就兩個作用微調元素
做絕對定位的參考,子絕父相
相對定位的定位值
可以用left、right來描述盒子右、左的移動;
可以用top、bottom來描述盒子的下、上的移動。
↘:
position: relative;
top: 10px;
left: 40px;
↙:
position: relative;
right: 100px; → 往左邊移動
top: 100px;
↖:
position: relative;
right: 100px;
bottom: 100px; → 移動方向是向上。
↗:
position: relative;
top: -200px; → 負數就是相反的方向,如果是正,就是下邊,如果是負數就是上邊
right: -200px;
↗:
position: relative;
right: -300px;
bottom: 300px;
完全等價于:
position: relative;
left: 300px;
bottom: 300px;
如圖,有幾種相對定位的移動方法?
方法1:
position:relative;
top:100px;
left:200px;
方法2:
position:relative;
bottom:-100px;
right:-200px;
方法3:
position:relative;
top:100px;
right:-200px;
方法4:
position:relative;
bottom:-100px;
left:200px;
絕對定位
position:absolute;
絕對定位比相對定位更靈活
-
絕對定位脫標
絕對定位的盒子是脫離文檔流的,所以所有的標準文檔流的性質,絕對定位后就不遵守了.
絕對定位后,標簽就不在區分行內還是塊級元素了,不需要設置display:block;就可以設置寬高了.
span{
position: absolute;
top: 100px;
left: 100px;
width: 100px;
height: 100px;
background-color: pink;
}
-
參考點
top
絕對定位的參考點,如果用top描述,那么定位的參考點就是頁面的左上角,而不是瀏覽器的左上角
bottom
如果是用bottom描述,那么就是瀏覽器的首屏窗口尺寸,對應得頁面的左下角.
測試題
答案:用bottom描述時,參考點是瀏覽器首屏的窗口尺寸的頁面左下角
以盒子為參考點
一個絕對定位的元素,如果父輩元素中也出現了定位的元素,那么將以這個父輩元素為參考點
- 要聽最近的已經定位的祖先元素的,不一定是父親,可能是爺爺:
<div class="box1"> → 相對定位
<div class="box2"> → 沒有定位
<p></p> → 絕對定位,將以box1為參考,因為box2沒有定位,box1就是最近的父輩元素
</div>
</div>
<div class="box1"> → 相對定位
<div class="box2"> → 相對定位
<p></p> → 絕對定位,將以box2為參考,因為box2是自己最近的父輩元素
</div>
</div>
- 不一定是相對定位,任何定位,都可以作為參考點
<div> → 絕對定位
<p></p> → 絕對定位,將以div作為參考點。因為父親定位了。
</div>
子絕父絕、子絕父相、子絕父固,都是可以給兒子定位的。但是,工程上子絕、父絕,沒有一個盒子在標準流里面了,所以頁面就不穩固,沒有任何實戰用途。工程上,“子絕父相”有意義,父親沒有脫標,兒子脫標在父親的范圍里面移動。
<div class=”box1”> → 絕對定位
<div class=”box2”> → 相對定位
<div class=”box3”> → 沒有定位
<p></p> → 絕對定位,以box2為參考定位。
</div>
</div>
</div>
-
絕對定位的兒子,無視參考的那個盒子的padding。
下圖中,綠色部分是div的padding,藍色部分是div的內容區域。那么此時,div相對定位,p絕對定位。
p將無視父親的padding,在border內側為參考點,進行定位:
-
絕對定位的盒子居中
絕對定位后,就脫出標準流了,所有的標準流規則也不適用了,所以margin:0 auto;也就失效了
width: 600px;
height: 60px;
position: absolute;
left: 50%;
top: 0;
margin-left: -300px; → 寬度的一半
非常簡單,當做公式記憶下來。就是left:50%; margin-left:負的寬度的一半。
固定定位 (IE6不兼容)
position:fixed;
固定定位就是相對于瀏覽器窗口定位.頁面如何滾動,這個盒子的顯示位置不變.
position: fixed;
z-index: 1000;
right: 0px;
left: 0px;
z-index
z-index值表示誰壓著誰。數值大的壓蓋住數值小的。
只有定位了的元素,才能有z-index值。也就是說,不管相對定位、絕對定位、固定定位,都可以使用z-index值。而浮動的東西不能用。
z-index值沒有單位,就是一個正整數。默認的z-index值是0。
如果大家都沒有z-index值,或者z-index值一樣,那么誰寫在HTML后面,誰在上面能壓住別人。定位了的元素,永遠能夠壓住沒有定位的元素。
從父現象:父親慫了,兒子再牛逼也沒用。
沒有單位:
z-index: 988;