如果想得到一個(gè)真正跨瀏覽器、跨平臺(tái)的設(shè)計(jì)方案,還得用表格進(jìn)行布局。
不是所有表格都那么壞。大多數(shù)設(shè)計(jì)者需要使用網(wǎng)格進(jìn)行設(shè)計(jì),所以使用表格就很自然。我們也很喜歡它們的二元性:表格既可以定義布局,又可以應(yīng)付頁(yè)面中不可預(yù)知的因素。作為一個(gè)設(shè)計(jì)者,既要處理不確定性,又要在你的設(shè)計(jì)和用戶的靈活性(例如,用戶要使字體變大)之間取得平衡。不幸的是,表格同時(shí)也增加了顯示頁(yè)面的時(shí)間,有時(shí)這樣的時(shí)間很長(zhǎng)。
因?yàn)闉g覽器需要在填充表格的內(nèi)容之前完全理解表格的結(jié)構(gòu),在大部分(如果不是全部)表格的內(nèi)容下載之前,瀏覽器什么也不能渲染。當(dāng)表格變大時(shí),需要處理的信息將呈指數(shù)性增長(zhǎng)。在先前的計(jì)算機(jī)上,這些處理性工作很不容易,表格渲染需要大量時(shí)間幸運(yùn)的是,可以找到避免這些缺陷的方法。
快速表格的技巧處理表格使用表格時(shí)間長(zhǎng)了,你會(huì)發(fā)現(xiàn)大量小表格渲染起來(lái)比一個(gè)有很多行的大表格快。至少看起來(lái)是這樣-真象那么回事(記?。菏歉杏X到的速度,而不是實(shí)際速度)。
如果你在用一個(gè)九行的表格(每個(gè)單元有很多信息),可以把它分成三個(gè)各有三行的小表格。如果你的網(wǎng)頁(yè)很長(zhǎng),這種策略特別有益-在后面的表格下載時(shí)用戶可以看前面的表格。像我的站:www.puerzg.cn,就做過(guò)適當(dāng)?shù)倪@種策略!
使用Width屬性為使你的HTML盡量對(duì)瀏覽器友好,應(yīng)該對(duì)TABLE和TD標(biāo)記適當(dāng)?shù)厥褂肳idth屬性。這種屬性允許你定義整個(gè)表格的寬度,也可以定義單元格的寬度。如果事情并沒(méi)有好起來(lái),你應(yīng)該懷疑瀏覽器-是它的原因。所以只要檢查你是否算對(duì)了就行了- 如果你把一個(gè)單元格設(shè)為100個(gè)像素寬,可是卻把一個(gè)110個(gè)像素寬的圖像插入其中,結(jié)果是:表格暫時(shí)出現(xiàn),然后當(dāng)重繪自己以便能容納圖像時(shí)又消失了。不用說(shuō),瀏覽器的這種過(guò)濾作用同它的慢速一樣令人討厭。
把窗體放在表格里不幸的是,不同的瀏覽器和操作系統(tǒng)對(duì)窗體元素的處理方式不同。Mac上的下拉菜單比Windows中的要寬很多。Netscape 4處理可寫的文本框和處理文本一樣,所以如果增加瀏覽器的缺省字體大小,所有的文本框都會(huì)變大。Netscape 4中的可寫文本框比其它瀏覽器中的寬20%,而且受字體標(biāo)記的影響。
看看下面的表格:
現(xiàn)在假設(shè)用戶增加了缺省字體的大小。當(dāng)表格放大以容納變大了的文字時(shí),布局依然沒(méi)變。
不要相信所見即所得的編輯器
表格真令人痛苦,這就是為什么所見即所得的HTML編輯器流行起來(lái)的原因。但是,在這些編輯器使建表格變得容易的同時(shí),它們也產(chǎn)生了一些令人吃驚的低效率的代碼。特別是GoLive的CyberStudio使用了一種產(chǎn)生夢(mèng)魘般臃腫表格的布局系統(tǒng)(尤其當(dāng)你沒(méi)有認(rèn)真按用戶手冊(cè)操作時(shí))。
所見即所得編輯器的布局和預(yù)覽窗口在處理不必要的嵌套表格、沒(méi)有設(shè)置合適大小的表格的列或奇怪的、轉(zhuǎn)彎抹角的HTML代碼時(shí)感到力不從心。因此,如果你希望你的表格盡可能地苗條和高效,同時(shí)又舍不得放棄所見即所得的編輯器,那么只好最后花些時(shí)間清理你的代碼。一旦所有內(nèi)容看起來(lái)都象那么回事,用文本編輯器打開HTML代碼看看,你會(huì)發(fā)現(xiàn)你的表格漂亮而且干凈。
要不要嵌套?
永遠(yuǎn)不要嵌套表格
使網(wǎng)頁(yè)讀起來(lái)很慢的首犯是嵌套的表格:即把表格放在另一個(gè)表格的單元格里。因?yàn)闉g覽器必須從里到外進(jìn)行處理-在計(jì)算外層表格之前必須先估算內(nèi)層表格的大小-嵌套表格的表現(xiàn)真令人討厭。
所以盡量避免使用嵌套表格,即使意味著頁(yè)面布局會(huì)有一些小的變化。如果你不得不使用嵌套表格,至少應(yīng)保持被嵌套表格盡量簡(jiǎn)單,而且,不要用三層嵌套。我們是在建網(wǎng)站,不是做俄羅斯娃娃。
除非......
嵌套表格:最后的禁忌。不過(guò),簡(jiǎn)單表格之間的嵌套的代碼會(huì)是簡(jiǎn)單的幾行
下面的西洋跳棋盤不涉及嵌套表格,但是由于它的復(fù)雜性,下載起來(lái)很慢。
通過(guò)使用嵌套表格,可以使問(wèn)題簡(jiǎn)單。結(jié)果相同,但是下載時(shí)間會(huì)縮短。
使用表格的關(guān)鍵是找到安排它們的最有效的方法。有時(shí)嵌套表格就是答案,有時(shí)卻不是。
結(jié)構(gòu)越好,頁(yè)面越快
下面是一個(gè)典型網(wǎng)頁(yè)的例子:商標(biāo)在頂部,導(dǎo)航在左邊,內(nèi)容在其余部分。對(duì)于這樣的頁(yè),一般用一個(gè)大表格定義整個(gè)網(wǎng)格。在整個(gè)框架表格內(nèi)嵌套商標(biāo)、導(dǎo)航和內(nèi)容表格,使瀏覽器渲染起來(lái)很困難。
下面是相同的頁(yè)面結(jié)構(gòu),只是商標(biāo)、導(dǎo)航和內(nèi)容分別定義在獨(dú)立的表格內(nèi)。
通過(guò)使每個(gè)表格獨(dú)立和簡(jiǎn)潔,瀏覽器可以每讀完一個(gè)元素就渲染之。因此頁(yè)面的第一個(gè)元素最早出現(xiàn),用戶可以馬上利用頁(yè)面最頂端的信息。
在上面的第二個(gè)例子里,商標(biāo)表格最早出現(xiàn),然后是導(dǎo)航表格,然后是內(nèi)容表格。整個(gè)頁(yè)面下載很快,用戶馬上就有可以看到的東西。
和處理圖像一樣,使表格達(dá)到最佳效果需要試用不同的方案,直到找到令你和你的用戶都滿意的布局。你可能懷疑為了省幾秒鐘就要花費(fèi)這么多的精力是否值得,但是隨著對(duì)用戶的爭(zhēng)奪越來(lái)越激烈,這些努力還是值得的。
如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答??! 點(diǎn)擊進(jìn)入論壇