本文觀點:遵循國際網站標準(Web Standards)進行網站設計和改善。
閱讀對象:網站設計人員、web應用開發人員
關鍵字:Web Standards、XML、XHML、CSS、DOM、DOCTYPE、Accessibility
前言
網絡上的變革每天都在發生,當我們覺得網站設計技術已經非常簡單和熟悉的時候。國外網站設計標準化的概念早已悄悄的形成和迅速"蔓延",自2000年起,大部分新發行的瀏覽器版本都開始支持網站標準。主流的網頁編輯工具也開始全面支持網站標準,甚至一些軟件幾乎完全由XML文件組成,例如Dreamweaver MX。一些著名的大型商業網站開始采用網站標準來重新構建(例如體育資訊www.espn.com),另外一些則拒絕非標準瀏覽器瀏覽它們的網站(例如連線雜志www.wired.com)。眾多的設計網站(例如:www.k10k.net) 和個人網站更是標準推廣的先行者,紛紛轉向采用XHTML+CSS來建立。2004年2月4日XML1.1推薦標準正式發布,標志著網站設計的標準時代已經到來。
國外網站標準的聲勢洶涌,但國內業界顯得有些后知后覺或者毫無興趣,讓我們來看看國內三大門戶網站首頁對網站標準的遵循情況:校驗項目 校驗目標網站 校驗結果
代碼校驗(XHTML)?
(校驗地址:http://validator.w3.org/、
(http://www.htmlhelp.com/tools/validator/ ) www.sina.com.cn 失敗,混雜的HTML,未達到XHTML1。黃色警報:字符集錯誤。(定義了GB2312,但頁內使用了非GB2312字符)。非標準代碼43處。?
www.163.com 失敗,混雜的HTML,未達到XHTML1。紅色警報:未定義DOCTYPE。非標準代碼41處。?
www.sohu.com 失敗,混雜的HTML,未達到XHTML1。黃色警報:字符集錯誤。非標準代碼38處。
CSS2校驗 (校驗地址:http://jigsaw.w3.org/css-validator/validator-uri.html ) www.sina.com.cn 25處錯誤。
www.163.com 1處警告,10處錯誤。
www.sohu.com 1處警告,15處錯誤。
校驗結果顯示所有門戶網站都沒有符合網站標準,甚至連HTML4.0標準都沒有遵循。舉例來說:標簽,早在1998年4月HTML4.0標準中就已經被W3C列為"不建議使用(deprecated)"標簽。但我們的三大門戶網站首頁上都有不少類似的代碼。這里的簡單列表,目的不是批評這些網站做得不好(事實上大部分的大型商業站點都通不過W3C嚴格的正確性校驗),有很多的原因造成這種狀況,例如采用老的信息發布系統,網頁設計人員的技術和意識不夠等等。我們只是想說明一點:連比較規范的上市公司的網站都沒有意識到遵循標準,其他規模教小的商業網站就更不用說,國內對網站標準沒有足夠的重視。
讓我們趕緊跟上新時代的步伐,一起來了解一下網站標準吧。
一.為什么要建立網站標準
我們大部分人都有深刻體驗,每當主流瀏覽器版本的升級,我們剛建立的網站就可能變得過時,我們就需要升級或者重新建造一遍網站。例如1996-1999年典型的"瀏覽器大戰",為了兼容Netscape和IE,網站不得不為這兩種瀏覽器寫不同的代碼。同樣的,每當新的網絡技術和交互設備的出現,我們也需要制作一個新版本來支持這種新技術或新設備,例如支持手機上網的WAP技術。類似的問題舉不勝舉:網站代碼臃腫、繁雜浪費了我們大量的帶寬;針對某種瀏覽器的DHTML特效,屏蔽了部分潛在的客戶;不易用的代碼,殘障人士無法瀏覽網站等等。這是一種惡性循環,是一種巨大的浪費。
如何解決這些問題呢?有識之士早已開始思考,需要建立一種普遍認同的標準來結束這種無序和混亂。商業公司(Netscape、Microsoft等)也終于認識到統一標準的好處,因此在W3C(W3C.org)的組織下,網站標準開始被建立(1998年2月10日發布XML1.0為標志),并在網站標準組織(webstandards.org)的督促下推廣執行。
簡單說,網站標準的目的就是:
提供最多利益給最多的網站用戶?
確保任何網站文擋都能夠長期有效?
簡化代碼、降低建設成本?
讓網站更容易使用,能適應更多不同用戶和更多網路設備?
當瀏覽器版本更新,或者出現新的網絡交互設備時,確保所有應用能夠繼續正確執行。?
對于網站設計和開發人員來說,遵循網站標準就是使用標準;對于你的網站用戶來說,網站標準就是最佳體驗。
訪問量排名世界第4,中國第1的新浪網站,也遭遇非標準DHTML的問題。在最新發布的Netscape7和Mozila1.6瀏覽器中,新浪首頁的漂浮廣告全部失效,層疊擠在頁面左下角。也許那些廣告主認為損失這些潛在的用戶無所謂。(截圖日期2004年5月19日)
?
二.什么是網站標準
網站標準不是某一個標準,而是一系列標準的集合。網頁主要由三部分組成:結構(Structure)、表現(Presentation)和行為(Behavior)。對應的標準也分三方面:結構化標準語言主要包括XHTML和XML,表現標準語言主要包括CSS,行為標準主要包括對象模型(如W3C DOM)、ECMAScript等。這些標準大部分由W3C起草和發布,也有一些是其他標準組織制訂的標準,比如ECMA(European Computer Manufacturers Association)的ECMAScript標準。我們來簡單了解一下這些標準:
1.結構標準語言
(1)XML?
XML是The Extensible Markup Language(可擴展標識語言)的簡寫。目前推薦遵循的是W3C于2000年10月6日發布的XML1.0,參考(www.w3.org/TR/2000/REC-XML-20001006)。和HTML一樣,XML同樣來源于SGML,但XML是一種能定義其他語言的語。XML最初設計的目的是彌補HTML的不足,以強大的擴展性滿足網絡信息發布的需要,后來逐漸用于網絡數據的轉換和描述。關于XML的好處和技術規范細節這里就不多說了,網上有很多資料,也有很多書籍可以參考。
(2)XHTML?
XHTML是The Extensible HyperText Markup Language可擴展標識語言的縮寫。目前推薦遵循的是W3C于2000年1月26日推薦XML1.0(參考http://www.w3.org/TR/xhtml1)。XML雖然數據轉換能力強大,完全可以替代HTML,但面對成千上萬已有的站點,直接采用XML還為時過早。因此,我們在HTML4.0的基礎上,用XML的規則對其進行擴展,得到了XHTML。簡單的說,建立XHTML的目的就是實現HTML向XML的過渡。
2. 表現標準語言
CSS是Cascading Style Sheets層疊樣式表的縮寫。目前推薦遵循的是W3C于1998年5月12日推薦CSS2(參考http://www.w3.org/TR/CSS2/)。W3C創建CSS標準的目的是以CSS取代HTML表格式布局、幀和其他表現的語言。純CSS布局與結構式XHTML相結合能幫助設計師分離外觀與結構,使站點的訪問及維護更加容易。
3.行為標準
(1)DOM
DOM是Document Object Model文檔對象模型的縮寫。根據W3C DOM規范(http://www.w3.org/DOM/),DOM是一種與瀏覽器,平臺,語言的接口,使得你可以訪問頁面其他的標準組件。簡單理解,DOM解決了Netscaped的Javascript和Microsoft的Jscript之間的沖突,給予web設計師和開發者一個標準的方法,讓他們來訪問他們站點中的數據、腳本和表現層對像。
(2) ECMAScript
ECMAScript是ECMA(European Computer Manufacturers Association)制定的標準腳本語言(JAVAScript)。目前推薦遵循的是ECMAScript 262(http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM)。
三.遵循標準的網站與傳統網站的區別
傳統網站只是印刷媒體的延伸,設計目標是保證在4-6個主流瀏覽器版本中看起來一致。通常的特征是:
以表格為基礎的布局。?
內容與表現方式混雜在一起。典型的例子是標簽。?
垃圾代碼(非標準代碼)。?
不易用的代碼。?
語義不正確的代碼。比如不解釋的話,你根本不明白這是字體加粗的意思。?
而采用網站標準建立的網站是一個能夠接受各種用戶和各種設備的廣泛的交流溝通工具。一般特征是:
語義正確的標識。即使用能夠表達含義的標簽。保證代碼可以在文本瀏覽器、PDAs、搜索引擎中被正確理解。?
正確有效的代碼。通過W3C代碼校驗(http://validator.w3.org/)的就是正確代碼。?
對人、機都易用的代碼。能夠接受廣泛的用戶和設備的訪問,?
用CSS分離表現層和內容。使代碼更簡潔、下載速度更快,批量修改和定制表現形式更容易。?
四.采用網站標準的好處和缺點
1.好處
對網站瀏覽者的好處:
文件下載與頁面顯示速度更快;?
內容能被更多的用戶所訪問(包括失明、視弱、色盲等殘障人士);?
內容能被更廣泛的設備所訪問(包括屏幕閱讀機、手持設備、搜索機器人、打印機、電冰箱等等)?
用戶能夠通過樣式選擇定制自己的表現界面?
所有頁面都能提供適于打印的版本?
對網站所有者的好處:
更少的代碼和組件,容易維護?
帶寬要求降低(代碼更簡潔),成本降低。舉個例子:當 ESPN.com 使用 CSS改版后,每天節約超過兩兆字節(terabytes)的帶寬。?
更容易被搜尋引擎搜索到?
改版方便,不需要變動頁面內容?
提供打印版本而不需要復制內容?
提高網站易用性。在美國,有嚴格的法律條款(Section 508)來約束政府網站必須達到一定的易用性,其他國家也有類似的要求。?
2.缺點
需要花費更多時間來學習標準?
依然需要注意瀏覽器的兼容問題?
用 CSS 來實現某些表現反而比表格更為麻煩?
五.怎么改善現有網站
我們大部分的設計師依舊在采用傳統的表格布局、表現與結構混雜在一起的方式來建立網站。學習使用XHTML+CSS的方法需要一個過程,使現有網站符合網站標準也不可能一步到位。最好的方法是循序漸進,分階段來逐步達到完全符合網站標準的目標。如果你是新手,或者對代碼不是很熟悉,也可以采用遵循標準的編輯工具,例如Dreamweaver MX 2004,它是目前支持CSS標準最完善的工具。
1.初級改善
為頁面添加正確的DOCTYPE?
很多設計師和開發者都不知道什么是DOCTYPE,DOCTYPE有什么用。DOCTYPE是document type的簡寫。主要用來說明你用的XHTML或者HTML是什么版本。瀏覽器根據你DOCTYPE定義的DTD(文檔類型定義)來解釋頁面代碼。所以,如果你不注意設置了錯誤的DOCTYPE,結果會讓你大吃一驚。XHTML1.0提供了三種DOCTYPE可選擇:
(1)過渡型(Transitional )
?
(2)嚴格型(Strict )
?
(3)框架型(Frameset )
?
對于我們初級改善來說,只要選用過渡型的聲明就可以了。它依然可以兼容你的表格布局、表現標識等,不至于讓你覺得變化太大,難以掌握。
Tip:你懶得輸入上面過渡型代碼的話,可以訪問http://www.macromedia.com/網站的首頁,然后查看源代碼,把head區同樣的代碼拷貝粘貼就可以了。
設定一個名字空間(Namespace)?
直接在DOCTYPE聲明后面添加如下代碼:
?
一個namespace是收集元素類型和屬性名字的一個詳細的DTD,namespace聲明允許你通過一個在線地址指向來識別你的namespace。只要照樣輸入代碼就可以。
聲明你的編碼語言?
為了被瀏覽器正確解釋和通過標識校驗,所有的XHTML文檔都必須聲明它們所使用的編碼語言。代碼如下:
?
這里聲明的編碼語言是簡體中文GB2312,你如果需要制作繁體內容,可以定義為BIG5。
用小寫字母書寫所有的標簽?
XML對大小寫是敏感的,所以,XHTML也是大小寫有區別的。所有的XHTML元素和屬性的名字都必須使用小寫。否則你的文檔將被W3C校驗認為是無效的。例如下面的代碼是不正確的:
公司簡介?
正確的寫法是:
公司簡介 同樣的,
改成
,改成等等。這步轉換很簡單。?
為圖片添加 alt 屬性?
為所有圖片添加alt屬性。alt屬性指定了當圖片不能顯示的時候就顯示供替換文本,這樣做對正常用戶可有可無,但對純文本瀏覽器和使用屏幕閱讀機的用戶來說是至關重要的。只有添加了alt屬性,代碼才會被W3C正確性校驗通過。注意的是我們要添加有意義的alt屬性,象下面這樣的寫法毫無意義:
?
正確的寫法:
?
給所有屬性值加引號?
在HTML中,你可以不需要給屬性值加引號,但是在XHTML中,它們必須被加引號。
例:height="100",而不能是height=100。
關閉所有的標簽?
在XHTML中,每一個打開的標簽都必須關閉。就象這樣:
每一個打開的標簽都必須關閉。
HTML可以接受不關閉的標,XHTML就不可以。?
這個規則可以避免HTML的混亂和麻煩。舉例來說:如果你不關閉圖像標簽,在一些瀏覽器中就可能出現CSS顯示問題。用這種方法能確保頁面和你設計的一樣顯示。需要說明的是:空標簽也要關閉,在標簽尾部使用一個正斜杠"/"來關閉它們自己。例如:
?
經過上述七個規則處理后,頁面就基本符合XHTML1.0的要求。但我們還需要校驗一下是否真的符合標準了。我們可以利用W3C提供免費校驗服務(http://validator.w3.org/)。發現錯誤后逐個修改。在后面的資源列表中我們也提供了其他校驗服務和對校驗進行指導的網址,可以作為W3C校驗的補充。當最后通過了XHTML驗證,恭喜你已經向網站標準邁出了一大步。不是想象中的那么難吧!
2.中級改善
接下來我們的改善主要在結構和表現相分離上,這一步不象第一步那么容易實現,我們需要觀念上的轉變,以及對CSS2技術的學習和運用。但學習任何新知識都需要花點時間的,不是嗎?訣竅在于邊做邊學。假如你一直采用表格布局,根本沒用過 CSS,也不必急于跟表格布局說再見,你可以先用樣式表代替 font 標簽。隨著你學到的越多,你能做的就越多。好,一起來看看我們需要做哪些事:
用CSS定義元素外觀?
我們在寫標識時已經養成習慣,當希望字體大點就用
,希望在前面加個點符號就用
。我們總是想的意思是大的,
的意思是圓點,的意思是“加粗文本”。而實際上, 能變成你想要的任何樣子,通過CSS,能變成小的字體,
文本能夠變成巨大的、粗體的,
能夠變成一張圖片等等。我們不能強迫用結構元素實現表現效果,我們應該使用CSS來確定那些元素的外觀。例如,我們可以使原來默認的6級標題可以看起來大小一樣:
h1, h2, h3, h4, h5, h6{ font-family: 宋體, serif; font-size: 12px; }?
用結構化元素代替無意義的垃圾?
許多人可能從來都不知道HTML和XHTML元素設計本意是用來表達結構的。我們很多人已經習慣用元素來控制表現,而不是結構。例如,一段列表內容可能會使用下面這樣的標識:
句子一
句子二
句子三
?
如果我們采用一個無序列表代替會更好:
你或許會說“但是
顯示的是一個圓點,我不想用圓點”。事實上,CSS沒有設定元素看起來是什么樣子,你完全可以用CSS關掉圓點。
給每個表格和表單加上id?
給表格或表單賦予一個唯一的、結構的標記,例如