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