在CSS中,實(shí)現分欄布局有兩種方法。第一種方法是使用四種CSS定位選項中的絕對定位(absolute
positioning),它可以將文檔中的某個(gè)元素從其原本位置上移除,并重新定位在期望的任何地點(diǎn)之上。第二種則是使用CSS中的浮動(dòng)(float)概念。
絕對定位或浮動(dòng)都能夠用來(lái)實(shí)現分欄效果。二者可以獨立使用,也可以結合在一起,相輔相成。
1、絕對定位
絕對定位的優(yōu)勢在于,我們可以絲毫不差地精確控制任何元素的位置—這里面沒(méi)有什么需要猜測或者運氣的成分。由于應用了絕對定位的元素被不留痕跡地從常規文檔流中完全移除,所以它也不會(huì )為其他元素帶來(lái)任何的影響。
那么讓我們試一試用絕對定位如何實(shí)現下面的布局。
這是一個(gè)三欄的布局,并且是居中顯示的。其中,A欄是主體內容欄,B欄和C欄都是側邊欄。首先,我們不可能直接用絕對定位將A、B、C三欄定位到居中的位置,因為每個(gè)人顯示器的分辨率是不同的,在1024X768分辨率的顯示器上定位的居中效果,在別的分辨率的顯示器上看到的效果肯定不會(huì )是居中顯示的,那么,該如何解決這個(gè)問(wèn)題呢?
幸好,在絕對定位模型中有個(gè)極為有用的特性,那就是:若某個(gè)絕對定位元素的容器也被定位過(guò),那么該元素指定的top和left值將不會(huì )基于文檔的根元素html(也就是瀏覽器窗口的左上角)計算,而是會(huì )基于其容器的左上角計算這個(gè)偏移量。換句話(huà)說(shuō),也就是:被定位過(guò)的容器將扮演其中所有元素絕對定位起始點(diǎn)的角色。
所以,利用這個(gè)特性,我們給A、B、C欄的外部加上一個(gè)容器D,如下圖:
然后,我們讓容器D居中,并給它加上一個(gè)屬性:position:relative,這樣,再用絕對定位定位A、B、C的top和left值,A、B、C的位置就會(huì )基于容器D的左上角的位置來(lái)計算了,這樣就可以實(shí)現我們期望的三欄居中的效果了。
但是,我們常用的布局并沒(méi)有這么簡(jiǎn)單,除了三欄之外,我們還需要一個(gè)頁(yè)頭和一個(gè)頁(yè)腳,如下圖:
這時(shí)候,再用絕對定位布局就行不通了,因為絕對定位的元素會(huì )從文檔流中完全移除,這時(shí),頁(yè)腳會(huì )緊挨著(zhù)頁(yè)頭,顯示在頁(yè)頭的下方。
如果我們一定要采用絕對定位的話(huà),那么必須預先知道這三欄中每一欄的高度,然后再根據其中最高的一欄定位頁(yè)腳。若是任意一欄中的文本長(cháng)度無(wú)法確定的話(huà),除了使用JavaScript,我們也只能放棄絕對定位的念頭,轉而投入到浮動(dòng)布局的懷抱。
2、浮動(dòng)
浮動(dòng)的本意是要將插入到文章中的圖片向左或者向右浮動(dòng),使圖片下方的文字自動(dòng)環(huán)繞在它的周?chē)?,使圖片的左邊或者右邊不會(huì )出現一大塊的留白。
浮動(dòng)的語(yǔ)法雖然簡(jiǎn)單,但卻不那么容易掌握,下面讓我們舉例說(shuō)明如何用浮動(dòng)來(lái)進(jìn)行布局。同樣,我們要實(shí)現一個(gè)帶頁(yè)腳的三欄布局。如下圖:
如何用浮動(dòng)實(shí)現這樣的效果呢?其實(shí)很簡(jiǎn)單:
1、設定E的寬度,讓E居中
2、設定A、B、C的寬度,將A、B、C分別向左浮動(dòng)
3、給頁(yè)腳設置clear屬性
需要說(shuō)明的是,浮動(dòng)布局依然遵循常規文檔流,所以與絕對定位相比,浮動(dòng)定位時(shí)HTML源文件中元素聲明的位置顯得格外重要。 當然,解決這個(gè)問(wèn)題的最簡(jiǎn)單的方法就是在源文件中交換左欄和右欄的聲明次序,也有方法不用交換各欄的次序也可以實(shí)現同樣的布局,但是,這就要用到一種比較晦澀的使用負邊距值的方法。一般情況下,人們十有八九會(huì )選擇交換源文件中左中兩欄的聲明次序。
|
嘉興雷鳥(niǎo)是一家集企業(yè)軟件開(kāi)發(fā),WEB網(wǎng)站建設,移動(dòng)APP制作等綜合型的互聯(lián)網(wǎng)公司,為嘉興顧客提供一站式的企業(yè)軟件開(kāi)發(fā),安卓app開(kāi)發(fā),ios開(kāi)發(fā)服務(wù),同時(shí)為嘉興企業(yè)提供全面移動(dòng)互聯(lián)軟件技術(shù)解決方案,是嘉興知名的綜合型APP軟件外包開(kāi)發(fā)公司。根據前期調研方案和客戶(hù)實(shí)際需求,以專(zhuān)業(yè)獨到的設計理念、精益求精的技術(shù)精神、嚴格完善的品控系統,為嘉興每一位客戶(hù)提供專(zhuān)屬的移動(dòng)互聯(lián)軟件技術(shù)解決方案。經(jīng)過(guò)不斷積累,嘉興雷鳥(niǎo)陸續推出視頻直播APP、電商商城APP、P2P網(wǎng)貸APP、智能硬件APP開(kāi)發(fā)、移動(dòng)APP開(kāi)發(fā)、微信公眾平臺開(kāi)發(fā)、一元購APP、智慧社區服務(wù)APP、生活服務(wù)O2O系統APP等各類(lèi)APP產(chǎn)品,為嘉興各行企業(yè)向移動(dòng)互聯(lián)網(wǎng)轉型奠定了堅實(shí)基礎。在激烈的市場(chǎng)競爭中,嘉興雷鳥(niǎo)創(chuàng )造了嘉興軟件定制開(kāi)發(fā)行業(yè)的卓越口碑,是具有更高品質(zhì)的移動(dòng)互聯(lián)網(wǎng)軟件技術(shù)定制服務(wù)商。