文: Andy Budd / 譯: Jjgod Jiang
譯自 An Objective Look at Table Based vs. CSS Based Design
我和作者的觀點差不多.標准好,但是未必實用.
以下是ZT文章:
經年以來,許多優秀的文章都在贊美著基於 CSS 設計的優越, 哀歎著基於表格設計的沒落。但卻很少有人換個角度想想,或許是因為你得在了解並運用了基於 CSS 的設計之後才可以批評它, 而一旦了解了之後,你又不願意回頭去用原先的老式設計方法了。
為了彌補一下這種不平衡,也因為在這場游戲中扮演一個大反派挺酷的,我決定寫篇文章,說說為何在某些情況下,傳統的表格設計方式就算不比基於CSS 的――或者說基於標准的――設計方式好,也不比它們差。
表格出現以前,Web 本是個相當乏味的地方,正是使用表格排版,才打開了可視化的頁面設計的新局面。表格對於 Web 和 Web 設計領域普及的貢獻到底有多大或許有爭議,但一旦離開表格,我們這些網頁設計師們必會失去工作,卻是毋庸置疑的。
近年來基於表格的設計確實被妖魔化了,Web 純化論者會告訴你,表格對排版毫無意義,因而你絕不能用到它。然而歷史證明,許多技術一開始是為了實現某個目標設計的,卻在別的領域發現了更大的用場而大展身手。 就像 Web 本身,一開始不也只是為了共享研究數據嘛,現在在娛樂和商業方面的應用卻與信息與教育方面的並駕齊驅了。
Web 設計師們多年以來都在使用表格排版頁面,這是絕大部分設計師都已掌握的能力。如此地使用表格能保證你獲得預想的效果,通過一些簡單的 hack,比如間隔 gif, 我們幾乎一定能保證我們的站點在最廣泛的 Web 浏覽器上看起來都一樣,從最低版本的 Netscape 4到Safari 這樣的現代浏覽器。
盡管先驅者們早已宣傳了好久 Web 標准, 大部分的網站還是使用表格和不兼容標准的代碼開發的,因此用戶代理就不得不在很長一段時間內支持基於表格的排版方式。 這對於 Web 標准的賣點來說,是個致命的打擊:標准沒有標准應有的地位。不大可能會出現下面這種情況,某個主要的浏覽器廠商 (唔,還是說 Microsoft) 突然發布了一個大部分網站都顯示不了的浏覽器。
所以網頁設計者們總感覺不到開始使用基於 CSS 排版和支持標准的代碼的那種危機感和必要性。
正是因為它的門檻低才如此成功的: HTML 是個簡單易學的語言,浏覽器又能容忍許多標記混亂的文檔。 這使在 Web 上發布內容變得難以置信地容易。即便你 12 歲的侄子也能用 Microsoft Office 中附帶的 Frontpage 搗鼓出一個簡單的網站來。
基於表格的設計比之基於 CSS 的,當然 CSS 的語法很簡單,正常人都會同意:你沒必要是火箭科學家才能學會 CSS。盡管如此,其中有些概念還是過於微妙了,不易領會。比如表面上看,Box 模型很簡單,但我偶爾還是會在邊界折疊 (margin collapsing) 上滑一跤, 浮動(float) 和清除 (clear) 這樣的概念也不好理解,較難運用。 以我的經驗而言,從了解 CSS 的基本概念到能自如地用 CSS 開發站點,大約需要走過一條為期 6-12 月的學習曲線。
然後是浏覽器支不支持的問題。一旦你正式開始干活,就會慢慢了解哪個浏覽器支持什麼、不支持什麼,和一些常見的浏覽器 bug。可惜bug 太多了, 就算“專家”們也難以估量自己花在修整 bug 上的時間。對新手來說就更讓人洩氣了,因為他們不知道是因為自己誤解了CSS 呢,還是某些晦澀的浏覽器 bug?也許這就是為何同樣的問題一再出現在 CSS-Discuss 等郵件列表上的原因吧。
如果浏覽器廠商們終能步調一致, 用 CSS 開發站點將會容易得多。但我還是覺得――大部分人也會同意――CSS 開發的門檻比基於表格的還是太高了。換個說法, 我覺得這也說明了為何基於 CSS 的設計在Web 專家們之間如此流行。這讓他們把自己和那些業余的“Front-page 牛仔”們區分開來,讓他們找回當年 Web 只屬於自己這個小群體時的感覺。 大概這正式因此,那麼多人都把 Web 標准看作不可觸及的“象牙塔”, 那麼多 Web 標准的鼓吹者卻以狂熱的態度,帶著優越感去看待網頁設計。
我確信我們大家都曾發現,自己為了實現用表格做起來是小菜一碟的功能寫了相當復雜的 CSS。比如處理表單 (form) 的外觀,形狀再復雜怪異的表單也能用表格輕松搞定。 你是可以用 CSS 的浮動元素實現類似的結果,但就麻煩多了。 如果你是個 CSS guru,這種麻煩也是快樂的事。可毫無疑問,如果你只是個普通人,還有個會掐住你的喉嚨問你怎麼做個小表單也花了這麼久的老板,事情就不那麼好玩了。
如果你有足夠的知識,又有足夠的耐心,習慣於用表格做的大部分事情還是都能用 CSS 實現的。 雖說花的時間長點吧,還是有個限度的(或者被打擊得放棄了嘗試)。關鍵是確實有些無論你怎麼努力,還是無法實現的東西,其中一項便是頁腳欄 (page footer)。我常常見到來自灰心失望的 CSS 作者的貼子, 他們試圖創建那種可以粘在窗口底端的頁腳欄,使即便那個窗口沒伸展到整個屏幕也能保證效果。如果用到了表格,要做出這種效果簡單得很, 可單獨用 CSS 來做就是另一回事了。 為什麼還有 Web 開發者們不願意用 CSS?就是因為一旦不用表格,簡單的事情反而變復雜了。
有很多理由讓你丟掉表格、去適應基於 CSS 的排版, 可在推動 Web標准的洪流中,許多人誇大了收益。 大的站點改用 CSS 排版確實能節省不少帶寬。可對大部分的其他站點來說,受益小得庶幾可以忽略不計。
大家都希望頁面載入得更快, 而標准鼓吹者們也說 CSS 能幫你做到這一點。大多數站點的“設計”都是均勻分布在整個站點上的,但基於 CSS 的“設計”是放在一個到更多的文件中的。 這些文件會很快變得很復雜、很大,即便一個小站點也是如此。我最近設計的一個站點用了 4 個樣式表,加起來有 12k 之大 (雖說包括了空白和注釋)。使用 CSS其實是在先集中地載入然後再浏覽,而不是把要載入的數據平均分布到整個站點各處。也就是說,相比用表格排版,首頁需要花更長的時間來下載。只不過如果樣式表已經下載了,它們會被緩存起來而不需要重新下載。可畢竟一個站點的首頁是你最不希望載入得那麼慢的一頁呀。
即便有時網頁設計者們覺得把符合 Web 標准搭售給客戶是有必要的,但令人遺憾的事實是,大多數的客戶對站點的代碼好壞並不在意。我們一般用的是胡蘿卜加大棒的方式,胡蘿卜是諸如對搜索引擎的友好度之類,而大棒才是網頁的親和力 (accessibility)。
確然,搜索引擎是比較喜歡語義化標記的頁面,而且大家也都認為搜索引擎喜歡短小的代碼,通過 CSS 和 Web 標准來建構站點可以大大增進對搜索引擎友好的站點的開發。然而沒有銀彈。許多基於表格的站點照樣獲得了很高的搜索引擎排名。 用 CSS 開發的站點照樣也可能只獲得一個很糟糕的排名。高排名的關鍵是內容和來自別處的鏈接,而不是用表格還是用 CSS 來排版。
另外關於利用客戶對“親和力”這個詞的敬畏來搭售 Web 標准特別是 CSS 設計, 其實基於表格的設計沒有什麼天生的親和力缺陷,表格只要線性化了,就有意義,內容也就具有親和力了。現時的讀屏器技術已經不錯,而且大部分的讀屏器都能很好的支持基於表格的站點。當然你的站點的語法最好被認證通過 AA 親和力等級,即便對更嚴格的 AAA 等級,不用表格設計也不過是個建議罷了,並非必備。
另一個經常提到的受益是可以讓客戶獨立於設計提供商。在人人都依照標准開發的世界裡,客戶要換個開發伙伴是很容易的事情,新的開發人員可以很快明白站點的組織結構,而不需趟過先前某人的標記泥淖。但這得要大量的設計提供商都精通 Web 標准才行。 不幸的是,現在的情況並非如此。 雖然經驗豐富的 CSS 開發者在增多,但這還是個相對比較專業的領域,因此,大公司要鎖定在這種開發方式上還是比較有風險的――缺少熟練的開發者。我個人的經驗是如果一個組織要用 CSS 開發站點, 得長期保持至少一個經驗豐富的設計師才夠用。 所以現在轉向 Web 標准不是降低了客戶對開發者的依賴,而是增加了。
毫無疑問地,Web 標准和基於 CSS 的設計是未來之路。 可在我們奔向它們、鼓吹新技術的過程中,也會懷疑自己鼓吹的東西是否太誇張了。比較現實地做點東西卻往往達不到我們的期望。而教條地推行這些很可能疏遠了我們最應該贏得的伙伴。
基於表格的設計還會存在好長一段時間。要吸引開發者,我們可以用實例來教人上手,並降低門檻。更別弄出新的門檻來了。我們得誠實地正視利益和代價。 開發 CSS 站點可能比較困難、耗時,而在某些情況下用表格來排版比 CSS 有意義得多。