前端CSS - 相對定位,絕對定位,固定定位
1.1 相對定位 position:relative
-
相對定位,就是微調元素位置的.讓元素相對
自己原來的位置,進行位置的微調.
-
也就是說,如果一個盒子想進行位置調整,那么就要使用相對定位了
position:relative; → 必須先聲明,自己要相對定位了,
left:100px; → 然后進行調整。
top:150px; → 然后進行調整。
1.2 相對定位的特性 - 不脫標,老家留坑,形影分離
相對定位不脫標,真實位置是在老家,只不過影子出去了,可以到處飄.
1.3 相對定位的用途
- 相對定位有坑,所以一般不用於做"壓蓋"效果.頁面中,效果極小.就兩個作用:
- 微調元素
- 做絕對定位的參考,
子絕父相
(絕對定位中詳細講)
1.4 相對定位的定位值
- 可以用left,right來描述盒子右,左的移動
- 可以用top,bottom來描述盒子的下,上的移動.
position: relative;
right: 100px; → 往左邊移動
top: 100px;
position: relative;
right: 100px;
bottom: 100px; → 移動方向是向上。
2.1 絕對定位
- 絕對定位脫標
- 絕對定位的盒子,還脫離標准文檔流的.所以,所有的標准文檔流的性質,絕對定位之后都不遵守了.
- 絕對定位之后,標簽就不區分所謂的行內元素,塊級元素了,不需要
display:block;
就可以設置寬高了
span{
position: absolute;
top: 100px;
left: 100px;
width: 100px;
height: 100px;
background-color: pink;
}
2.2 參考點
-
絕對定位的參考點,如果用top描述,那么定位參考點就是頁面的左下角,而不是瀏覽器的左上角:
-
如果用bottom描述,那么就是瀏覽器首屏窗口尺寸,對應的頁面的左下角:
-
面試題:
-
答案:用bottom的定位的時候,參考的事瀏覽器首屏大小對應的頁面左下角.
2.3 以盒子為參考點 - 子絕父相
-
一個絕對定位的元素,如果父輩元素中出現了也定位了的元素,那么將以父輩這個元素,為參考點.
-
子絕父絕,子絕父相,子絕父固,都是可以給兒子定位的.但是,工程上,子絕,父絕,沒有一個盒子在標准文檔流中,所以頁面就不穩固,沒有任何實戰用途.
工程上,"子絕父相"有意義,父親沒有脫標,兒子脫標在父親的范圍里面移動.
<div class=”box1”> → 絕對定位
<div class=”box2”> → 相對定位
<div class=”box3”> → 沒有定位
<p></p> → 絕對定位,以box2為參考定位。
</div>
</div>
</div>
- 絕對定位的兒子,無視參考的那個盒子的padding.下圖中,綠色部分是div的padding,藍色部分是div的內容區域。那么此時,div相對定位,p絕對定位。
p將無視父親的padding,在border內側為參考點,進行定位:
2.4 絕對定位的盒子居中
絕對定位之后,所有標准流的規則,都不適用了.所以margin:0 auto;失效.
width: 600px;
height: 60px;
position: absolute;
left: 50%;
top: 0;
margin-left: -300px; → 寬度的一半
非常簡單,當做公式記一下來.就是left:50%;margin-left:負的寬度的一半.
3. 固定定位 IE6不兼容
- 固定定位,就是相對瀏覽器窗口定位.頁面如何滾動,這個盒子顯示的位置不變.
固定定位脫標!