本文觀(guān)點(diǎn):遵循國際網(wǎng)站標準(Web Standards)進(jìn)行網(wǎng)站設計和改善。
閱讀對象:網(wǎng)站設計人員、web應用開(kāi)發(fā)人員
關(guān)鍵字:Web Standards、XML、XHML、CSS、DOM、DOCTYPE、Accessibility
網(wǎng)絡(luò )上的變革每天都在發(fā)生,當我們覺(jué)得網(wǎng)站設計技術(shù)已經(jīng)非常簡(jiǎn)單和熟悉的時(shí)候。國外網(wǎng)站設計標準化的概念早已悄悄的形成和迅速"蔓延",自2000年起,大部分新發(fā)行的瀏覽器版本都開(kāi)始支持網(wǎng)站標準。主流的網(wǎng)頁(yè)編輯工具也開(kāi)始全面支持網(wǎng)站標準,甚至一些軟件幾乎完全由XML文件組成,例如Dreamweaver MX。一些著(zhù)名的大型商業(yè)網(wǎng)站開(kāi)始采用網(wǎng)站標準來(lái)重新構建(例如體育資訊www.espn.com),另外一些則拒絕非標準瀏覽器瀏覽它們的網(wǎng)站(例如連線(xiàn)雜志www.wired.com)。眾多的設計網(wǎng)站(例如:www.k10k.net) 和個(gè)人網(wǎng)站更是標準推廣的先行者,紛紛轉向采用XHTML+CSS來(lái)建立。2004年2月4日XML1.1推薦標準正式發(fā)布,標志著(zhù)網(wǎng)站設計的標準時(shí)代已經(jīng)到來(lái)。
國外網(wǎng)站標準的聲勢洶涌,但國內業(yè)界顯得有些后知后覺(jué)或者毫無(wú)興趣,讓我們來(lái)看看國內三大門(mén)戶(hù)網(wǎng)站首頁(yè)對網(wǎng)站標準的遵循情況:
| 校驗項目 | 校驗目標網(wǎng)站 | 校驗結果 |
| 代碼校驗(XHTML) (校驗地址:http://validator.w3.org/、 | www.sina.com.cn | 失敗,混雜的HTML,未達到XHTML1。黃色警報:字符集錯誤。(定義了GB2312,但頁(yè)內使用了非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處錯誤。 |
校驗結果顯示所有門(mén)戶(hù)網(wǎng)站都沒(méi)有符合網(wǎng)站標準,甚至連HTML4.0標準都沒(méi)有遵循。舉例來(lái)說(shuō):<FONT>標簽,早在1998年4月HTML4.0標準中就已經(jīng)被W3C列為"不建議使用(deprecated)"標簽。但我們的三大門(mén)戶(hù)網(wǎng)站首頁(yè)上都有不少類(lèi)似<font color=red>的代碼。這里的簡(jiǎn)單列表,目的不是批評這些網(wǎng)站做得不好(事實(shí)上大部分的大型商業(yè)站點(diǎn)都通不過(guò)W3C嚴格的正確性校驗),有很多的原因造成這種狀況,例如采用老的信息發(fā)布系統,網(wǎng)頁(yè)設計人員的技術(shù)和意識不夠等等。我們只是想說(shuō)明一點(diǎn):連比較規范的上市公司的網(wǎng)站都沒(méi)有意識到遵循標準,其他規模教小的商業(yè)網(wǎng)站就更不用說(shuō),國內對網(wǎng)站標準沒(méi)有足夠的重視。
讓我們趕緊跟上新時(shí)代的步伐,一起來(lái)了解一下網(wǎng)站標準吧。
我們大部分人都有深刻體驗,每當主流瀏覽器版本的升級,我們剛建立的網(wǎng)站就可能變得過(guò)時(shí),我們就需要升級或者重新建造一遍網(wǎng)站。例如1996-1999年典型的"瀏覽器大戰",為了兼容Netscape和IE,網(wǎng)站不得不為這兩種瀏覽器寫(xiě)不同的代碼。同樣的,每當新的網(wǎng)絡(luò )技術(shù)和交互設備的出現,我們也需要制作一個(gè)新版本來(lái)支持這種新技術(shù)或新設備,例如支持手機上網(wǎng)的WAP技術(shù)。類(lèi)似的問(wèn)題舉不勝舉:網(wǎng)站代碼臃腫、繁雜浪費了我們大量的帶寬;針對某種瀏覽器的DHTML特效,屏蔽了部分潛在的客戶(hù);不易用的代碼,殘障人士無(wú)法瀏覽網(wǎng)站等等。這是一種惡性循環(huán),是一種巨大的浪費。
如何解決這些問(wèn)題呢?有識之士早已開(kāi)始思考,需要建立一種普遍認同的標準來(lái)結束這種無(wú)序和混亂。商業(yè)公司(Netscape、Microsoft等)也終于認識到統一標準的好處,因此在W3C(W3C.org)的組織下,網(wǎng)站標準開(kāi)始被建立(1998年2月10日發(fā)布XML1.0為標志),并在網(wǎng)站標準組織(webstandards.org)的督促下推廣執行。
簡(jiǎn)單說(shuō),網(wǎng)站標準的目的就是:
對于網(wǎng)站設計和開(kāi)發(fā)人員來(lái)說(shuō),遵循網(wǎng)站標準就是使用標準;對于你的網(wǎng)站用戶(hù)來(lái)說(shuō),網(wǎng)站標準就是最佳體驗。
訪(fǎng)問(wèn)量排名世界第4,中國第1的新浪網(wǎng)站,也遭遇非標準DHTML的問(wèn)題。在最新發(fā)布的Netscape7和Mozila1.6瀏覽器中,新浪首頁(yè)的漂浮廣告全部失效,層疊擠在頁(yè)面左下角。也許那些廣告主認為損失這些潛在的用戶(hù)無(wú)所謂。(截圖日期2004年5月19日)

網(wǎng)站標準不是某一個(gè)標準,而是一系列標準的集合。網(wǎng)頁(yè)主要由三部分組成:結構(Structure)、表現(Presentation)和行為(Behavior)。對應的標準也分三方面:結構化標準語(yǔ)言主要包括XHTML和XML,表現標準語(yǔ)言主要包括CSS,行為標準主要包括對象模型(如W3C DOM)、ECMAScript等。這些標準大部分由W3C起草和發(fā)布,也有一些是其他標準組織制訂的標準,比如ECMA(European Computer Manufacturers Association)的ECMAScript標準。我們來(lái)簡(jiǎn)單了解一下這些標準:
(1)XML
XML是The Extensible Markup Language(可擴展標識語(yǔ)言)的簡(jiǎn)寫(xiě)。目前推薦遵循的是W3C于2000年10月6日發(fā)布的XML1.0,參考(www.w3.org/TR/2000/REC-XML-20001006)。和HTML一樣,XML同樣來(lái)源于SGML,但XML是一種能定義其他語(yǔ)言的語(yǔ)。XML最初設計的目的是彌補HTML的不足,以強大的擴展性滿(mǎn)足網(wǎng)絡(luò )信息發(fā)布的需要,后來(lái)逐漸用于網(wǎng)絡(luò )數據的轉換和描述。關(guān)于XML的好處和技術(shù)規范細節這里就不多說(shuō)了,網(wǎng)上有很多資料,也有很多書(shū)籍可以參考。
(2)XHTML
XHTML是The Extensible HyperText Markup Language可擴展標識語(yǔ)言的縮寫(xiě)。目前推薦遵循的是W3C于2000年1月26日推薦XML1.0(參考http://www.w3.org/TR/xhtml1)。XML雖然數據轉換能力強大,完全可以替代HTML,但面對成千上萬(wàn)已有的站點(diǎn),直接采用XML還為時(shí)過(guò)早。因此,我們在HTML4.0的基礎上,用XML的規則對其進(jìn)行擴展,得到了XHTML。簡(jiǎn)單的說(shuō),建立XHTML的目的就是實(shí)現HTML向XML的過(guò)渡。
CSS是Cascading Style Sheets層疊樣式表的縮寫(xiě)。目前推薦遵循的是W3C于1998年5月12日推薦CSS2(參考http://www.w3.org/TR/CSS2/)。W3C創(chuàng )建CSS標準的目的是以CSS取代HTML表格式布局、幀和其他表現的語(yǔ)言。純CSS布局與結構式XHTML相結合能幫助設計師分離外觀(guān)與結構,使站點(diǎn)的訪(fǎng)問(wèn)及維護更加容易。
(1)DOM
DOM是Document Object Model文檔對象模型的縮寫(xiě)。根據W3C DOM規范(http://www.w3.org/DOM/),DOM是一種與瀏覽器,平臺,語(yǔ)言的接口,使得你可以訪(fǎng)問(wèn)頁(yè)面其他的標準組件。簡(jiǎn)單理解,DOM解決了Netscaped的Javascript和Microsoft的Jscript之間的沖突,給予web設計師和開(kāi)發(fā)者一個(gè)標準的方法,讓他們來(lái)訪(fǎng)問(wèn)他們站點(diǎn)中的數據、腳本和表現層對像。
(2) ECMAScript
ECMAScript是ECMA(European Computer Manufacturers Association)制定的標準腳本語(yǔ)言(JAVAScript)。目前推薦遵循的是ECMAScript 262(http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM)。
傳統網(wǎng)站只是印刷媒體的延伸,設計目標是保證在4-6個(gè)主流瀏覽器版本中看起來(lái)一致。通常的特征是:
而采用網(wǎng)站標準建立的網(wǎng)站是一個(gè)能夠接受各種用戶(hù)和各種設備的廣泛的交流溝通工具。一般特征是:
對網(wǎng)站瀏覽者的好處:
對網(wǎng)站所有者的好處:
我們大部分的設計師依舊在采用傳統的表格布局、表現與結構混雜在一起的方式來(lái)建立網(wǎng)站。學(xué)習使用XHTML+CSS的方法需要一個(gè)過(guò)程,使現有網(wǎng)站符合網(wǎng)站標準也不可能一步到位。最好的方法是循序漸進(jìn),分階段來(lái)逐步達到完全符合網(wǎng)站標準的目標。如果你是新手,或者對代碼不是很熟悉,也可以采用遵循標準的編輯工具,例如Dreamweaver MX 2004,它是目前支持CSS標準最完善的工具。
很多設計師和開(kāi)發(fā)者都不知道什么是DOCTYPE,DOCTYPE有什么用。DOCTYPE是document type的簡(jiǎn)寫(xiě)。主要用來(lái)說(shuō)明你用的XHTML或者HTML是什么版本。瀏覽器根據你DOCTYPE定義的DTD(文檔類(lèi)型定義)來(lái)解釋頁(yè)面代碼。所以,如果你不注意設置了錯誤的DOCTYPE,結果會(huì )讓你大吃一驚。XHTML1.0提供了三種DOCTYPE可選擇:
(1)過(guò)渡型(Transitional )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">(2)嚴格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">(3)框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">對于我們初級改善來(lái)說(shuō),只要選用過(guò)渡型的聲明就可以了。它依然可以兼容你的表格布局、表現標識等,不至于讓你覺(jué)得變化太大,難以掌握。
Tip:你懶得輸入上面過(guò)渡型代碼的話(huà),可以訪(fǎng)問(wèn)http://www.macromedia.com/網(wǎng)站的首頁(yè),然后查看源代碼,把head區同樣的代碼拷貝粘貼就可以了。
直接在DOCTYPE聲明后面添加如下代碼:
<html XMLns="http://www.w3.org/1999/xhtml" >一個(gè)namespace是收集元素類(lèi)型和屬性名字的一個(gè)詳細的DTD,namespace聲明允許你通過(guò)一個(gè)在線(xiàn)地址指向來(lái)識別你的namespace。只要照樣輸入代碼就可以。
為了被瀏覽器正確解釋和通過(guò)標識校驗,所有的XHTML文檔都必須聲明它們所使用的編碼語(yǔ)言。代碼如下:
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />這里聲明的編碼語(yǔ)言是簡(jiǎn)體中文GB2312,你如果需要制作繁體內容,可以定義為BIG5。
XML對大小寫(xiě)是敏感的,所以,XHTML也是大小寫(xiě)有區別的。所有的XHTML元素和屬性的名字都必須使用小寫(xiě)。否則你的文檔將被W3C校驗認為是無(wú)效的。例如下面的代碼是不正確的:
<TITLE>公司簡(jiǎn)介</TITLE>正確的寫(xiě)法是:
<title>公司簡(jiǎn)介</title> 同樣的,<P>改成<p>,<B>改成<b>等等。這步轉換很簡(jiǎn)單。為所有圖片添加alt屬性。alt屬性指定了當圖片不能顯示的時(shí)候就顯示供替換文本,這樣做對正常用戶(hù)可有可無(wú),但對純文本瀏覽器和使用屏幕閱讀機的用戶(hù)來(lái)說(shuō)是至關(guān)重要的。只有添加了alt屬性,代碼才會(huì )被W3C正確性校驗通過(guò)。注意的是我們要添加有意義的alt屬性,象下面這樣的寫(xiě)法毫無(wú)意義:
<img src="logo_unc_120x30.gif" alt="logo_unc_120x30.gif">正確的寫(xiě)法:
<img src="logo_unc_120x30.gif" alt="UNC公司標志,點(diǎn)擊返回首頁(yè)">在HTML中,你可以不需要給屬性值加引號,但是在XHTML中,它們必須被加引號。
例:height="100",而不能是height=100。
在XHTML中,每一個(gè)打開(kāi)的標簽都必須關(guān)閉。就象這樣:
<p>每一個(gè)打開(kāi)的標簽都必須關(guān)閉。</p> <b>HTML可以接受不關(guān)閉的標,XHTML就不可以。</b>這個(gè)規則可以避免HTML的混亂和麻煩。舉例來(lái)說(shuō):如果你不關(guān)閉圖像標簽,在一些瀏覽器中就可能出現CSS顯示問(wèn)題。用這種方法能確保頁(yè)面和你設計的一樣顯示。需要說(shuō)明的是:空標簽也要關(guān)閉,在標簽尾部使用一個(gè)正斜杠"/"來(lái)關(guān)閉它們自己。例如:
<br /> <img src="webstandards.gif" />經(jīng)過(guò)上述七個(gè)規則處理后,頁(yè)面就基本符合XHTML1.0的要求。但我們還需要校驗一下是否真的符合標準了。我們可以利用W3C提供免費校驗服務(wù)(http://validator.w3.org/)。發(fā)現錯誤后逐個(gè)修改。在后面的資源列表中我們也提供了其他校驗服務(wù)和對校驗進(jìn)行指導的網(wǎng)址,可以作為W3C校驗的補充。當最后通過(guò)了XHTML驗證,恭喜你已經(jīng)向網(wǎng)站標準邁出了一大步。不是想象中的那么難吧!
接下來(lái)我們的改善主要在結構和表現相分離上,這一步不象第一步那么容易實(shí)現,我們需要觀(guān)念上的轉變,以及對CSS2技術(shù)的學(xué)習和運用。但學(xué)習任何新知識都需要花點(diǎn)時(shí)間的,不是嗎?訣竅在于邊做邊學(xué)。假如你一直采用表格布局,根本沒(méi)用過(guò) CSS,也不必急于跟表格布局說(shuō)再見(jiàn),你可以先用樣式表代替 font 標簽。隨著(zhù)你學(xué)到的越多,你能做的就越多。好,一起來(lái)看看我們需要做哪些事:
我們在寫(xiě)標識時(shí)已經(jīng)養成習慣,當希望字體大點(diǎn)就用<h1>,希望在前面加個(gè)點(diǎn)符號就用<li>。我們總是想<h1>的意思是大的,<li>的意思是圓點(diǎn),<b>的意思是“加粗文本”。而實(shí)際上, <h1>能變成你想要的任何樣子,通過(guò)CSS,<h1>能變成小的字體,<p>文本能夠變成巨大的、粗體的,<li>能夠變成一張圖片等等。我們不能強迫用結構元素實(shí)現表現效果,我們應該使用CSS來(lái)確定那些元素的外觀(guān)。例如,我們可以使原來(lái)默認的6級標題可以看起來(lái)大小一樣:
h1, h2, h3, h4, h5, h6{ font-family: 宋體, serif; font-size: 12px; }許多人可能從來(lái)都不知道HTML和XHTML元素設計本意是用來(lái)表達結構的。我們很多人已經(jīng)習慣用元素來(lái)控制表現,而不是結構。例如,一段列表內容可能會(huì )使用下面這樣的標識:
句子一<br /> 句子二<br /> 句子三<br />如果我們采用一個(gè)無(wú)序列表代替會(huì )更好:
<ul> <li>句子一</li> <li>句子二</li> <li>句子三</li> </ul>你或許會(huì )說(shuō)“但是<li>顯示的是一個(gè)圓點(diǎn),我不想用圓點(diǎn)”。事實(shí)上,CSS沒(méi)有設定元素看起來(lái)是什么樣子,你完全可以用CSS關(guān)掉圓點(diǎn)。
給表格或表單賦予一個(gè)唯一的、結構的標記,例如
<table id="menu">接下來(lái),在書(shū)寫(xiě)樣式表的時(shí)候,你就可以創(chuàng )建一個(gè)“menu”的選擇器,并且關(guān)聯(lián)一個(gè)CSS規則,用來(lái)告訴表格單元、文本標簽和所有其他元素怎么去顯示。這樣,不需要對每個(gè)%lt;td>標簽附帶一些多余的、占用帶寬的表現層的高、寬、對齊和背景顏色等等屬性。只需要一個(gè)附著(zhù)的標記(標記“menu”的id標記),你就可以在一個(gè)分離的樣式表內為干凈的、緊湊的代碼標記進(jìn)行特別的表現層處理。
中級改善我們這里先列主要的三點(diǎn),但其中包含的內容和知識點(diǎn)非常多,需要我們逐步學(xué)習和掌握,直到最后實(shí)現完全采用CSS而不才用任何表格實(shí)現布局。限于本文是引導推廣之意,不展開(kāi)詳述。
最后我們特別需要補充介紹的是網(wǎng)站的易用性(Accessibility)和交互設計改善,易用性與網(wǎng)站標準有著(zhù)標準聯(lián)系緊密,和網(wǎng)站標準一樣,都是為了使我們的網(wǎng)站接受更多的用戶(hù)訪(fǎng)問(wèn)。1990年W3C建立了Web Accessibility Initiative(WAI),給網(wǎng)站建造者提供實(shí)現可訪(fǎng)問(wèn)性的方法和策略(http://www.w3.org/WAI/GL/)。提高易用性和研究交互設計(推薦VB之父Alan Cooper的About Face2.0一書(shū))的策略能提高你的開(kāi)發(fā)技術(shù),開(kāi)闊視野。提高你作為專(zhuān)業(yè)網(wǎng)頁(yè)設計師的價(jià)值,使你更具競爭力。這正是每個(gè)網(wǎng)站所有者和每個(gè)設計師或開(kāi)發(fā)者要努力達到的目標。
聯(lián)系客服