詳解定位與定位應用

2022-08-04 23:27:18 字數 2993 閱讀 8599

定位一直是web標準應用中的難點,如果理不清楚定位那麼可能應實現的效果實現不了,實現了的效果可能會走樣。如果理清了定位的原理,那定位會讓網頁實現的更加完美。

定位的定義:

在css中關於定位的內容是:

position:relative | absolute | static | fixed

static(靜態)沒有特別的設定,遵循基本的定位規定,不能通過z-index進行層次分級。

relative(相對定位)物件不可層疊、不脫離文件流,參考自身靜態位置通過 top,bottom,left,right 定位,並且可以通過z-index進行層次分級。

absolute(絕對定位)脫離文件流,通過 top,bottom,left,right 定位。選取其最近乙個最有定位設定的父級物件進行絕對定位,如果物件的父級沒有設定定位屬性,absolute元素將以body座標原點進行定位,可以通過z-index進行層次分級。

fixed(固定定位)這裡所固定的參照對像是可視視窗而並非是body或是父級元素。可通過z-index進行層次分級。

css中定位的層疊分級:z-index: auto | namber;

auto遵從其父物件的定位

namber無單位的整數值。可為負數

定位的原理:

1.可以位移的元素 (相對定位)

在本文流中,任何乙個元素都被文字流所限制了自身的位置,但是通過css我們依然使得這些元素可以改變自己的位置,我們可以通過float來讓元素浮動,也可以通過margin來讓元素產生位置移動。但事實上那並非是真實的位移,因為,那只是通過加大margin值來實現的障眼法。而真正意義上的位移是通過top,right,bottom,left(下稱trbl,trbl可以折分使用。)針對乙個相對定位的元素所產生的。我們看下面的圖:

我們看圖中是乙個相對定位的元素

#first

而下方是一塊預設定位的黑色區塊

#second

我們看到這個處在文字流的區塊被上面的相對定位擋住了一部分,這說明:「當元素被設定相對定位或是絕對定位後,將自動產生層疊,他們的層疊級別自然的高於文字流」。除非設定其z-index值為負值。並且我們發現當相對定位元素進行位移後,表現內容已經脫離了文字流,只是在本文流中還為原來的相對對定位留下了原有的總寬與總高(內容的高度或是寬度加上 margin\border\padding的數值)。這說明在相對定位中,雖然表現區脫離了原來的文字流,但是在文字流中還還有此相對定位的老窩。這點要特別注意,因為在實際應用中如果相對定位的位移數值過大,那麼原有的區域就會形成一塊空白。

並且我們注意,定位元素的座標點是在margin值的左上邊緣點,即圖中的b點。那麼所有的位移的計算將以這個點為基礎進行元素的推動。

2.可以在任意乙個位置的元素(絕對定位)

如上所述:相對定位只可以在文字流中進行位置的上下左右的移動,同樣存在一定的侷限性,雖然他的表現區脫離了文字流,但是在文字流卻依然為其保留了一席之地,這就好比乙個打工的人他到了外地,但是在老家依然有乙個專屬於他的位置,這個位置不隨他的移動而改變。但是這樣很明顯就會空出一塊空白來,如果希望文字流拋棄這個部分就需要用到絕對定位。絕對定位不光脫離了文字流,而且在文字流中也不會給這個絕對定位元素留下專屬空位。這就好比是乙個工廠裡的職位,如果有乙個工人走了自然會要有別的工人來填充這個位置。而移動出去的部分自然也就成為了自由體。絕對定位將可以通過trbl來設定元素,使之處在任何乙個位置。在父層position屬性為預設值時,trbl的座標原點以body的座標原點為起始。看下圖:

上圖可知,文字流中的內容會頂替絕對定位無素的位置,一點都不會客氣。而絕對定位元素自然的層疊於文字流之上。而在單一的絕對定位中,定位元素將會跑到網頁的左上角,因為那裡是他們的被絕對定位後的座標原點。

3.被關聯的絕對定位

上面說的是單一的絕對定位,而在實際的應用中我們常常會需要用到一種特別的形式。即希望定位元素要有絕對定位的特性,但是又希望絕對定位的座標原點可以固定在網頁中的某乙個點,當這個點被移動時絕對位定元素能保證相對於這個原座標的相對位置。也就是說需要這個絕對定位要跟著網頁移動,而並且是因定在網頁的某乙個固定位置。通常當網頁是居中形式的時候這種效果就會顯得特別的重要。要實現這種效果基本方式就是為這個絕對定位的父級設定為相對定位或是絕對定位。那麼絕對定位的座標就會以父級為座標起始點。

雖然是如此,但是這個座標原點卻並不是父級的座標原點,這是乙個很奇怪的座標位置。我們看一下模型圖示:

我們看到,這個圖中父級為黑灰色區塊,子級為青色區塊。父級是相對定位,子級是絕對定位。子級設定了頂部位移50個畫素,左傾位移50個畫素。那麼我們看,子級的座標原點並不是從父級的座標原點位移50個畫素,而是從父級塊的padding左上邊緣點為座標起始點(即a 點)。而父級這裡如果要產生位置移動,或是瀏覽器視窗大小有所變動都不會影響到這個絕對定位元素與父級的相對定位元素之間的位置關係。這個子級也不用調整數值。

這是一種很特別並且也是非常實用的應用方式。如果你之前對於定位的控制並不自如的話,相信看完對這裡對定位的解釋一定可以把定位使用得隨心所欲。

4.總在視線裡的元素 (固定定位)

position:fixed; 他的含義就是:固定定位。這個固定與絕對定位很像,唯一不同的是絕對定位是被固定在網頁中的某乙個位置,而固定定位則是固定在瀏覽器的視框位置。

詳解定位與定位應用

定位一直是web標準應用中的難點,如果理不清楚定位那麼可能應實現的效果實現不了,實現了的效果可能會走樣。如果理清了定位的原理,那定位會讓網頁實現的更加完美。定位的定義 在css中關於定位的內容是 position relative absolute static fixed static 沒有特別的...

詳解css 定位與定位應用

原文 定位的定義 在css中關於定位的內容是 position relative absolute static fixed static 沒有特別的設定,遵循基本的定位規定,不能通過z index進行層次分級。relative 不脫離文件流,參考自身靜態位置通過 top,bottom,left,r...

詳解網頁設計中的定位與定位應用

定位一直是web標準應用中的難點,如果理不清楚定位那麼可能應實現的 效果實現不了,實現了的效果可能會走樣。如果理清了定位的原理,那定位會讓網頁實現的更加完美。定位的定義 在css 中關於定位的內容是 position relative absolute static fixed static 沒有特...