CSS分欄布局的辦法:必定定位和起浮 |
發布時間:2024-07-16 文章來源:本站 瀏覽次數:1006 |
在CSS中,完成分欄布局有兩種辦法。第一種辦法是運用四種CSS定位選項中的必定定位(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源文件中元素聲明的方位顯得分外重要。 當然,處理這個問題的簡略的辦法就是在源文件中交換左欄和右欄的聲明次第,也有辦法不必交換各欄的次第也能夠完成相同的布局,可是,這就要用到一種比較不流暢的運用負邊距值的辦法。一般情況下,人們十有八九會選擇交換源文件中左中兩欄的聲明次第。 |