天天看點

CSS學習筆記:定位屬性position

目錄

一、定位屬性簡介

二、各屬性值的具體功能

1. relative

2. absolute

3. fixed

三、三種定位屬性的效果總結

參考資料:https://www.bilibili.com/video/BV18J411S7tZ?p=4

position屬性是用于指定一個元素的定位方法類型的屬性,它的取值有:static(預設類型)、relative、absolute、fixed。當position屬性的值不為<code>static</code>(即不為預設)時,我們可以添加:<code>top</code>、<code>bottom</code>、<code>left</code>和<code>right</code>屬性對目前元素進行具體的定位,并且可以使用<code>z-index</code>來設定層級的上下關系。

首先先搭建出測試架構:

對應的css:

目前的效果為:

CSS學習筆記:定位屬性position

此時我們将<code>#box2</code>(綠色div)的<code>position</code>值改為relative,并為其設定<code>top</code>和<code>left</code>屬性:

此時的效果為:

CSS學習筆記:定位屬性position

可以發現,當定位屬性值為relative時,元素發生偏移的參考點為該元素自身。此外雖然元素移動到了新的位置,但是元素仍然會占有原有的位置,這也是為什麼藍色div沒有排到上面。

我們的測試架構仍與上面相同,初始的效果如下:

CSS學習筆記:定位屬性position

此時為<code>#box2</code>開啟絕對定位(<code>position: absolute</code>):

效果如下:

CSS學習筆記:定位屬性position

可以發現藍色div不見了,此時檢查元素:

CSS學習筆記:定位屬性position

可以發現原來藍色方塊還在,隻是放置到了綠色方塊的下面。這是因為當元素啟用絕對定位是,該元素就和浮動類似,不會占用原有的空間了,是以後面藍色的方塊就會排列在了紅色方塊的下面。

此時我們再設定對應的偏移:

CSS學習筆記:定位屬性position

可以發現此時綠色方塊偏移的參照點為浏覽器的(0,0)點,也可以了解為body元素的最左上角。

但absolute定位并不是什麼情況下參照點都為浏覽器的(0,0)點的,先編寫以下場景:

添加css:

目前效果:

CSS學習筆記:定位屬性position

此時為son添加absolute定位,并且設定一定的偏移量:

CSS學習筆記:定位屬性position

顯然,它目前的參照點還是浏覽器頁面的(0,0)點。

此時為<code>#father</code>元素也添加一個定位(除了<code>static</code>的定位都可以):

CSS學習筆記:定位屬性position

此時可以發現<code>#son</code>元素的參考點變成<code>#father</code>元素了。

是以,當使用absolute定位時,元素的參考點為:該元素向外層尋找最近的有添加定位的父級元素:

找到了則參考點為該父級元素的左上角

否則參考點設定為body元素的左上角(即浏覽器頁面的(0,0)點)。

當設定了fixed後元素将固定在視窗的一個位置,即相對整個視窗的位置不再發生變化。

具體例子:

測試效果:

CSS學習筆記:定位屬性position

此時無論如何拖動頁面,這個側邊條依然會保持在視窗的左邊不動,是以使用這個定位可以制作懸停效果。

定位屬性值

效果

relative

元素發生偏移的參考點為該元素自身,雖然元素發生了移動,但是元素仍然會占有原有的實體位置

absolute

元素不會占用原有的實體空間,且偏移參考點為最近的有添加定位的父級元素,如果找不到則為body元素(即浏覽器(0,0)點)

fixed

元素将固定在視窗的一個位置,即相對整個視窗的位置不再發生變化

tips:隻有添加了定位的元素中,top、bottom、left、right和z-index這些定位屬性才會生效。