在CSS中,實(shí)現(xiàn)分欄布局有兩種方法。第一種方法是使用四種CSS定位選項(xiàng)(absolute 、static、relative和fixed)中的絕對(duì)定位(absolute positioning),它可以將文檔中的某個(gè)元素從其原本位置上移除,并重新定位在期望的任何地點(diǎn)之上。第二種則是使用CSS中的浮動(dòng)(float)概念。
絕對(duì)定位或浮動(dòng)都能夠用來(lái)實(shí)現(xiàn)分欄效果。二者可以獨(dú)立使用,也可以結(jié)合在一起,相輔相成。
絕對(duì)定位的優(yōu)勢(shì)在于,我們可以絲毫不差地精確控制任何元素的位置—這里面沒(méi)有什么需要猜測(cè)或者運(yùn)氣的成分。由于應(yīng)用了絕對(duì)定位的元素被不留痕跡地從常規(guī)文檔流中完全移除,所以它也不會(huì)為其他元素帶來(lái)任何的影響。
那么讓我們?cè)囈辉囉媒^對(duì)定位如何實(shí)現(xiàn)下面的布局。

幸好,在絕對(duì)定位模型中有個(gè)極為有用的特性,那就是:若某個(gè)絕對(duì)定位元素的容器也被定位過(guò),那么該元素指定的top和left值將不會(huì)基于文檔的根元素html(也就是瀏覽器窗口的左上角)計(jì)算,而是會(huì)基于其容器的左上角計(jì)算這個(gè)偏移量。換句話說(shuō),也就是:被定位過(guò)的容器將扮演其中所有元素絕對(duì)定位起始點(diǎn)的角色。
所以,利用這個(gè)特性,我們給A、B、C欄的外部加上一個(gè)容器D,如下圖:

但是,我們常用的布局并沒(méi)有這么簡(jiǎn)單,除了三欄之外,我們還需要一個(gè)頁(yè)頭和一個(gè)頁(yè)腳,如下圖:

如果我們一定要采用絕對(duì)定位的話,那么必須預(yù)先知道這三欄中每一欄的高度,然后再根據(jù)其中最高的一欄定位頁(yè)腳。若是任意一欄中的文本長(zhǎng)度無(wú)法確定的話,除了使用JavaScript,我們也只能放棄絕對(duì)定位的念頭,轉(zhuǎn)而投入到浮動(dòng)布局的懷抱。
新聞熱點(diǎn)
疑難解答
圖片精選