感謝COMSHARP CMS的投遞
新聞來(lái)源:COMSHARP
作為一個(gè)身處 2008 年末的 Web 設(shè)計(jì)師,你是否好意思承認(rèn)自己的代碼中使用了 Table,如果是,你是一個(gè)有勇氣的人,Web 設(shè)計(jì)是個(gè)奇怪的行業(yè),你可以將自己的網(wǎng)站設(shè)計(jì)得像晚報(bào)的分類廣告,或者樓道里的開(kāi)鎖廣告,但千萬(wàn)別讓人知道你使用了 Table,在你的源代碼中發(fā)現(xiàn) Table 就像一個(gè)銷售被人掀起褲腳發(fā)現(xiàn)穿了白襪子一樣。
Table 是如此丑陋,臃腫,哪怕只顯示一段簡(jiǎn)單的內(nèi)容,你也需要 <table><tr><td> 這三個(gè)基本的標(biāo)簽,每個(gè)標(biāo)簽里面還要加上一堆亂七八糟的屬性,不像<div>,既簡(jiǎn)單,又整潔,又時(shí)尚,它和 CSS 珠聯(lián)璧合,琴瑟和諧,它們構(gòu)成最完美的 Box 模型,他們象現(xiàn)實(shí)中的箱子,你把東西放進(jìn)去,然后,很自由地對(duì)他們進(jìn)行排列,厭煩了一種布局,沒(méi)關(guān)系,簡(jiǎn)單地改動(dòng)一下 CSS 定義,一種全新的布局便誕生了;不象 Table,Table 像食堂里的餐具柜,一排排,一列列,土里土氣,油膩膩的,象我們的父輩,邋遢,什么都往家里拿,胡亂堆在角落里,如果 Div 是小資,Table 就是老三屆,他們不屬于這個(gè)時(shí)代。
也就是近幾年的事,至多不過(guò)三五年,W3C是一個(gè)人人都認(rèn)為重要但人人都不喜歡的組織,他們的官方網(wǎng)站十分丑陋,我敢說(shuō)平生沒(méi)見(jiàn)過(guò)這么丑陋的網(wǎng)站,但他們的網(wǎng)站是為數(shù)不多的可以通過(guò)全部W3C標(biāo)準(zhǔn)驗(yàn)證的網(wǎng)站,這意味著,他們的網(wǎng)站在語(yǔ)法上,在結(jié)構(gòu)上,在可訪問(wèn)性上是完美的,雖然依舊十分丑陋。不過(guò)這是笑談,W3C非常重要,否則微軟會(huì)把全體 Web 開(kāi)發(fā)工程師帶到萬(wàn)劫不復(fù)的境地,還好,Netscape 死后,涅磐出 Firefox,而 Opera 在 Firefox 橫空出世之后雖然沒(méi)得到任何好處,至少得到了精神上的支持,看到?jīng)],終于有大哥出來(lái)收拾你。喬布斯復(fù)出后,蘋果重返昔日的光芒,這時(shí)人們才知道世界上還有一個(gè)叫做 Safari 的瀏覽器,所有這一切加在一起,讓 W3C 真正有了存在的必要。
W3C 說(shuō),Table 可以用來(lái)容納文字,格式文字,圖片,鏈接,表單,以及其它 Table ... 但是,Table 不應(yīng)該單純用來(lái)做網(wǎng)頁(yè)布局(Tables should not be used purely as a means to layout document content),理由是,當(dāng) Web 被非可視化設(shè)備渲染的時(shí)候,Table 會(huì)出現(xiàn)問(wèn)題,他們指定是屏幕閱讀器以及盲文瀏覽器,另外,Table 在大型顯示設(shè)備上會(huì)強(qiáng)迫用戶左右滾動(dòng),因此,Web 設(shè)計(jì)者應(yīng)該使用 CSS 而不是 Table。參見(jiàn) W3C HTML 4.01 關(guān)于 Table 的定義。 W3C 說(shuō)這段話的時(shí)候,是1999年12月24日,那時(shí)盡管 CSS 早已誕生,但并沒(méi)有多少人使用,最初的 Web 像一個(gè)在線版的文檔,并沒(méi)有成為現(xiàn)在這樣的平臺(tái),不需要過(guò)多過(guò)多地考慮布局問(wèn)題,隨著互聯(lián)網(wǎng)第一次泡沫的形成,涌現(xiàn)出大量的門戶網(wǎng)站,門戶網(wǎng)站是 Table 布局的始作俑者,因?yàn)樗麄兊氖醉?yè)比一整份報(bào)紙的所有版面拼接在一起還復(fù)雜,Table 在這方面十分順手,結(jié)合 colspan 和 rolspan,你幾乎能夠?qū)崿F(xiàn)任何復(fù)雜的版面。
這種布局風(fēng)格在2000年代初,一直到中期仍然十分流行,尤其國(guó)內(nèi),在大為美的潛意識(shí)下,人們把所有能塞到一個(gè)頁(yè)面的東西都塞進(jìn)了首頁(yè),Table 就像一個(gè)舊時(shí)代的管家,把所有東西雖不能井井有序,但至少是一樣不少地編排起來(lái)。然而這樣的 Web 終于到了讓人厭惡的地步,隨著搜索,RSS 訂閱,以及以博客為代表的個(gè)性化 Web 的出現(xiàn),人們有更多渠道獲得信息,而不必去訪問(wèn)那幾個(gè)讓人幾乎要暈過(guò)去的門戶的首頁(yè),于是出現(xiàn)了一種清新的,輕量的 Web 風(fēng),使用更簡(jiǎn)單的布局,更明快的配色,大圖標(biāo),大 Banner,以及更容易閱讀的大字體,同時(shí),在這個(gè)時(shí)候,CSS 已經(jīng)非常成熟,而 Firefox, Opera, Safari 為代表的瀏覽器,在遵守 W3C 標(biāo)準(zhǔn)方面要遠(yuǎn)遠(yuǎn)好過(guò) IE,人們終于認(rèn)識(shí)到 CSS 的威力。因?yàn)?CSS 在布局上,其核心是一個(gè) Box 模型,人們必須為 CSS 找一個(gè)可以依附的容器對(duì)象。
Div 成為幸運(yùn)者一方面因?yàn)樗焐褪?Box 的最佳原型,在語(yǔ)義上,Div 代表頁(yè)面的一個(gè)區(qū)域,在外形上,它四四方方,更重要的是,它不像 <P> 或 <a> 那樣事先已經(jīng)被賦予特殊的語(yǔ)義(雖然它們也能用于 Box 模型);另一方面,則出于人們對(duì) Table 統(tǒng)治一個(gè)臃腫時(shí)代的憎惡,一個(gè)時(shí)代的結(jié)束,繼任者都會(huì)努力抹去舊時(shí)代的痕跡,那些舊時(shí)代的象征或代表的命運(yùn)多半如此,人們并不是簡(jiǎn)單地忘卻它們,而是斷然劃清界限。
Table 的一切不公平待遇就此開(kāi)始。為什么說(shuō)不公平,W3C 不建議 Table 布局的時(shí)候,只說(shuō)應(yīng)使用 CSS 代替,這是什么意思,Table 不支持 CSS 嗎?當(dāng)然支持,而且,由于 Table 作為老牌的 HTML 對(duì)象,它的地位曾如此重要,任何瀏覽器都對(duì) Table 提供了最完美的支持,包括 CSS 支持。當(dāng)人們擁抱 Div 的時(shí)候,似乎忘記了 Table 也是 Box,而且是一個(gè)擁有多個(gè)內(nèi)格的 Box,Table 作為一個(gè)整體,和 Div 在 Box 模型方面沒(méi)有任何區(qū)別,而它的內(nèi)格,除了 Margin 之外,仍然是一個(gè) Box,內(nèi)格不含 Margin 概念這是應(yīng)該理解的。Div 很優(yōu)秀這不必說(shuō),然而當(dāng)人們說(shuō) Div + CSS 的時(shí)候,似乎暗示著 Table 無(wú)法 CSS,這是天大的誤會(huì)。
Div 支持的所有 CSS 屬性,Table 全部支持,事實(shí)上,在 Div 大紅大紫之前,那些 Div 的早期采用者曾信心不足地表示,Table 能做到,Div 都能,而他們也為自己的話付出了代價(jià),企圖在 Div 中實(shí)現(xiàn)垂直居中的人明白我的意思,企圖在 IE6 中不經(jīng) CSS Hack 而實(shí)現(xiàn) 100% Div 布局的人更明白我的意思。100% Height 問(wèn)題,幾個(gè) Div 之間的寬度自適應(yīng)問(wèn)題,相信任何從事 Div + CSS 設(shè)計(jì)的人會(huì)遇到。Table 在這方面的優(yōu)勢(shì)并不是因?yàn)樗旧矶嗝磧?yōu)秀,而是因?yàn)樗吓疲瑳](méi)有瀏覽器敢忽視,也因?yàn)樗奶匦栽救绱?,人們發(fā)明表格,是因?yàn)橄M麛?shù)據(jù)顯示得整齊,就這么簡(jiǎn)單。然而,為什么 Table 后來(lái)背上那么多的惡名?Div 擁護(hù)者對(duì) Table 的責(zé)難不外乎以下幾條。
聯(lián)系客服