1. 程式人生 > 實用技巧 >CSS定位position

CSS定位position

position屬性

position是css的一個定位屬性,通過指定元素的定位方式,來設定元素的位置


position屬性值

static position屬性預設值,不為元素設定定位方式,元素會按照文件流中位置正常顯示。也可用來取消之前設定的定位。
absolute 絕對定位,完全脫離文件流,以包含塊為參照物進行定位(設定top,bottom,left,right屬性確定元素位置)
relative 相對定位,不脫離文件流,以自身原位置為參照物進行定位(設定top,bottom,left,right屬性確定元素位置)
fixed 固定定位,完全脫離文件流,以瀏覽器視窗為參照物進行固定定位(設定top,bottom,left,right屬性確定元素位置)
stycky 粘性定位,元素隨著視窗的滾動 到達指定位置的時候 ,會表現為固定定位的模式。

position各屬性值用法

  • static

預設值,不為元素設定定位。很少使用,如果想要取消一個元素之前的定位設定,可以為該元素設定position屬性設定為static

  • relative(相對定位)

以自身位置為參照物進行定位,元素不脫離文件流,不影響其他元素的佈局位置

<div class="box">
    <h3>相對定位</p>
    <p>我有一隻小豬豬!我有一隻小豬豬!我有一隻小豬豬</p>
</div>
*{margin: 0;padding: 0;}
.box{margin: 50px;width: 500px;height: 300px;border: 2px solid red;font-size: 30px;}
h3{
	width: 200px;
	height: 50px;
	background: yellow;
}
p{
	width: 200px;
	height: 200px;
	background: green;
}

一個div內含一個h3和p標籤

(1)為h3設定position:relative;

h3{
    width: 200px;
    height: 50px;
    background: yellow;
    position: relative;
}

(2)再為h3新增 top:100px; left:100px;

h3{
    width: 200px;height: 50px;background: yellow;
    position: relative;
    top: 100px;
    left: 100px;
}

  • absolute(絕對定位)

以設定position:absolute/relative/fixed的父級元素為參照物,若父級元素都未定位,則會以body為參照物進行定位(設定top,bottom,left,right屬性確定元素位置)

絕對定位的元素會完全脫離文件流,元素在普通流中不再佔據位置

(1)為h3設定position:absolute;

p標籤上浮且被設定了position:absolute;的h3 遮蓋,說明 h3已經脫離了普通文件流

(2)給h3新增 top:10px; left:10px;

設定top,bottom,left,right屬性後的h3 並不是相對於box定位的 而是相對於body進行定位

這裡涉及一個定位的使用小技巧:position:relative;position:absolute;聯合使用。為想要進行絕對定位的元素的父級元素設定position:relative;既不會影響改變父級元素的位置,又可以使其變成該元素的參照物。

.box{
	margin: 50px;width: 500px;height: 300px;border: 2px solid red;font-size: 30px;
	position: relative;
}
h3{
	width: 200px;height: 50px;background: yellow;
	position: absolute;
	top: 10px;
	left: 10px; 
}

  • fixed(固定定位)

完全脫離文件流,以瀏覽器視窗為參照物進行固定定位(設定top,bottom,left,right屬性確定元素位置)

例如在瀏覽網頁時的那些小廣告,無論你怎麼滾動頁面它都會保持在網頁視窗的固定位置不變。

  • sticky (粘性定位)

元素隨著視窗的滾動 到達指定位置的時候 ,會表現為固定定位的模式。可以理解為元素在到達指定位置前position屬性值為position:relative滾動到指定位置後會變為position:fixed,回到原位置後又會變回position:relative

注意:1、sticky 效果的實現依賴於使用者的滾動

2、必須要設定top,bottom,left,right其中之一才能實現粘性定位效果,否則元素位置不會變化


z-index:

設定定位元素的層疊順序

z-index:number;

number :數值不同,比大小(數越大,層級越高,越優先顯示)

數值相同,比位置(書寫位置靠後的,顯示在上層)