首頁  >  文章  >  web前端  >  關於絕對定位(absolute)和浮動定位(float)的分析

關於絕對定位(absolute)和浮動定位(float)的分析

不言
不言原創
2018-06-22 14:21:452090瀏覽

這篇文章主要介紹了關於絕對定位(absolute)和浮動定位(float)的分析,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

絕對定位或浮動都能夠用來達到分欄效果。二者可以獨立使用,也可以結合在一起,相輔相成。

在CSS中,實作分欄佈局有兩種方法。第一種方法是使用四種CSS定位選項(absolute 、static、relative和fixed)中的絕對定位(absolute positioning),它可以將文件中的某個元素從其原本位置上移除,並重新定位在期望的任何地點之上。第二種則是使用CSS中的浮動(float)概念。

絕對定位或浮動都能夠用來實現分欄效果。二者可以獨立使用,也可以結合在一起,相輔相成。

1、絕對定位

絕對定位的優勢在於,我們可以絲毫不差地精確控制任何元素的位置—這裡面沒有什麼需要猜測或運氣的成分。由於應用了絕對定位的元素被不留痕跡地從常規文件流中完全移除,所以它也不會為其他元素帶來任何的影響。

那麼讓我們試試看絕對定位如何實現下面的佈局。

 

這是一個三欄的佈局,並且是居中顯示的。其中,A欄是主體內容欄,B欄和C欄都是側邊欄。首先,我們不可能直接用絕對定位將A、B、C三欄定位到居中的位置,因為每個人顯示器的分辨率是不同的,在1024X768分辨率的顯示器上定位的居中效果,在別的分辨率的顯示器上看到的效果肯定不會是居中顯示的,那麼,該如何解決這個問題呢?

幸好,在絕對定位模型中有個極為有用的特性,那就是:若某個絕對定位元素的容器也被定位過,那麼該元素指定的top和left值將不會基於文檔的根元素html(也就是瀏覽器視窗的左上角)計算,而是會基於其容器的左上角計算這個偏移量。換句話說,也就是:被定位過的容器將扮演其中所有元素絕對定位起始點的角色。

所以,利用這個特性,我們在A、B、C欄的外部加上一個容器D,如下圖:

##然後,我們讓容器D居中,並給它加上一個屬性:position:relative,這樣,再用絕對定位定位A、B、C的top和left值,A、B、C的位置就會基於容器D的左上角的位置來計算了,這樣就可以實現我們期望的三欄居中的效果了。

但是,我們常用的佈局並沒有這麼簡單,除了三欄之外,我們還需要一個頁頭和一個頁腳,如下圖:

#這時候,再用絕對定位佈局就行不通了,因為絕對定位的元素會從文檔流中完全移除,這時,頁腳會緊挨著頁頭,顯示在頁頭的下方。

如果我們一定要採用絕對定位的話,那麼必須預先知道這三欄中每一欄的高度,然後再根據其中最高的一欄定位頁腳。若是任一欄中的文字長度無法確定的話,除了使用JavaScript,我們也只能放棄絕對定位的念頭,轉而投入到浮動佈局的懷抱。

2、浮動

浮動的本意是要將插入到文章中的圖片向左或向右浮動,使圖片下方的文字自動環繞在它的周圍,使圖片的左邊或是右邊不會出現一大塊的留白。

浮動的語法雖然簡單,但卻不那麼容易掌握,以下讓我們舉例說明如何用浮動來進行佈局。同樣,我們要實現一個帶有頁腳的三欄佈局。如下圖:

 如何用浮動實現這樣的效果呢?其實很簡單:

1、設定E的寬度,讓E居中

2、設定A、B、C的寬度,將A、B、C分別向左浮動

#3、給頁腳設定clear屬性

需要說明的是,浮動佈局依然遵循常規文件流,所以與絕對定位相比,浮動定位時HTML來源文件中元素聲明的位置顯得格外重要。當然,解決這個問題的最簡單的方法就是在源文件中交換左欄和右欄的聲明次序,也有方法不用交換各欄的次序也可以實現同樣的佈局,但是,這就要用到一種比較晦澀的使用負邊距值的方法。一般情況下,人們十有八九會選擇交換源文件中左中兩欄的聲明次序。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關建議:

關於css實作右側固定寬度與左邊寬度的自適應方法

關於HTML中rel屬性的分析

以上是關於絕對定位(absolute)和浮動定位(float)的分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn