国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > CSS > 正文

絕對(duì)定位(absolute)和浮動(dòng)定位(float)分析

2024-07-11 08:27:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在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é)合在一起,相輔相成。

1、絕對(duì)定位

絕對(duì)定位的優(yōu)勢(shì)在于,我們可以絲毫不差地精確控制任何元素的位置—這里面沒(méi)有什么需要猜測(cè)或者運(yùn)氣的成分。由于應(yīng)用了絕對(duì)定位的元素被不留痕跡地從常規(guī)文檔流中完全移除,所以它也不會(huì)為其他元素帶來(lái)任何的影響。

那么讓我們?cè)囈辉囉媒^對(duì)定位如何實(shí)現(xiàn)下面的布局。

 

這是一個(gè)三欄的布局,并且是居中顯示的。其中,A欄是主體內(nèi)容欄,B欄和C欄都是側(cè)邊欄。首先,我們不可能直接用絕對(duì)定位將A、B、C三欄定位到居中的位置,因?yàn)槊總€(gè)人顯示器的分辨率是不同的,在1024X768分辨率的顯示器上定位的居中效果,在別的分辨率的顯示器上看到的效果肯定不會(huì)是居中顯示的,那么,該如何解決這個(gè)問(wè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,如下圖:

 

然后,我們讓容器D居中,并給它加上一個(gè)屬性:position:relative,這樣,再用絕對(duì)定位定位A、B、C的top和left值,A、B、C的位置就會(huì)基于容器D的左上角的位置來(lái)計(jì)算了,這樣就可以實(shí)現(xiàn)我們期望的三欄居中的效果了。

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

 

這時(shí)候,再用絕對(duì)定位布局就行不通了,因?yàn)榻^對(duì)定位的元素會(huì)從文檔流中完全移除,這時(shí),頁(yè)腳會(huì)緊挨著頁(yè)頭,顯示在頁(yè)頭的下方。

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 磴口县| 苍南县| 沅江市| 甘谷县| 云浮市| 孝昌县| 桂东县| 昌都县| 全椒县| 德保县| 天全县| 阳谷县| 赤壁市| 辽阳市| 台北市| 稻城县| 耒阳市| 容城县| 久治县| 沅陵县| 涿鹿县| 奉贤区| 隆安县| 扶沟县| 巴马| 巴林左旗| 霞浦县| 高青县| 来安县| 玛纳斯县| 呼伦贝尔市| 政和县| 章丘市| 吉林省| 宝清县| 勐海县| 呈贡县| 元氏县| 洛隆县| 水富县| 罗城|