直播中
最近人人問(wèn)道,問(wèn)我網(wǎng)站設(shè)計(jì)和網(wǎng)頁(yè)設(shè)計(jì)有什么原則和規(guī)范嗎?我現(xiàn)在給大家總結(jié)一下。希望大家交流一下哦。
前言
網(wǎng)絡(luò)上的變革每天都在發(fā)生,當(dāng)我們覺(jué)得網(wǎng)站設(shè)計(jì)技術(shù)已經(jīng)非常簡(jiǎn)單和熟悉的時(shí)候。國(guó)外網(wǎng)站設(shè)計(jì)標(biāo)準(zhǔn)化的概念早已悄悄的形成和迅速“蔓延”,自2000年起,大部分新發(fā)行的瀏覽器版本都開(kāi)始支持網(wǎng)站標(biāo)準(zhǔn)。主流的網(wǎng)頁(yè)編輯工具也開(kāi)始全面支持網(wǎng)站標(biāo)準(zhǔn),甚至一些軟件幾乎完全由XML文件組成,例如Dreamweaver MX。一些著名的大型商業(yè)網(wǎng)站開(kāi)始采用網(wǎng)站標(biāo)準(zhǔn)來(lái)重新構(gòu)建(例如體育資訊http://www.espn.com/),另外一些則拒絕非標(biāo)準(zhǔn)瀏覽器瀏覽它們的網(wǎng)站(例如連線雜志http://www.espn.com/)。眾多的設(shè)計(jì)網(wǎng)站(例如:http://www.k10k.net/) 和個(gè)人網(wǎng)站更是標(biāo)準(zhǔn)推廣的先行者,紛紛轉(zhuǎn)向采用XHTML+CSS來(lái)建立。2004年2月4日XML1.1推薦標(biāo)準(zhǔn)正式發(fā)布,標(biāo)志著網(wǎng)站設(shè)計(jì)的標(biāo)準(zhǔn)時(shí)代已經(jīng)到來(lái)。
一.為什么要建立網(wǎng)站標(biāo)準(zhǔn)
我們大部分人都有深刻體驗(yàn),每當(dāng)主流瀏覽器版本的升級(jí),我們剛建立的網(wǎng)站就可能變得過(guò)時(shí),我們就需要升級(jí)或者重新建造一遍網(wǎng)站。例如1996-1999年典型的“瀏覽器大戰(zhàn)”,為了兼容Netscape和IE,網(wǎng)站不得不為這兩種瀏覽器寫(xiě)不同的代碼。同樣的,每當(dāng)新的網(wǎng)絡(luò)技術(shù)和交互設(shè)備的出現(xiàn),我們也需要制作一個(gè)新版本來(lái)支持這種新技術(shù)或新設(shè)備,例如支持手機(jī)上網(wǎng)的WAP技術(shù)。類(lèi)似的問(wèn)題舉不勝舉:網(wǎng)站代碼臃腫、繁雜浪費(fèi)了我們大量的帶寬;針對(duì)某種瀏覽器的DHTML特效,屏蔽了部分潛在的客戶;不易用的代碼,殘障人士無(wú)法瀏覽網(wǎng)站等等。這是一種惡性循環(huán),是一種巨大的浪費(fèi)。
如何解決這些問(wèn)題呢?有識(shí)之士早已開(kāi)始思考,需要建立一種普遍認(rèn)同的標(biāo)準(zhǔn)來(lái)結(jié)束這種無(wú)序和混亂。商業(yè)公司(Netscape、Microsoft等)也終于認(rèn)識(shí)到統(tǒng)一標(biāo)準(zhǔn)的好處,因此在W3C(W3C.org)的組織下,網(wǎng)站標(biāo)準(zhǔn)開(kāi)始被建立(1998年2月10日發(fā)布XML1.0為標(biāo)志),并在網(wǎng)站標(biāo)準(zhǔn)組織(webstandards.org)的督促下推廣執(zhí)行。
簡(jiǎn)單說(shuō),網(wǎng)站標(biāo)準(zhǔn)的目的就是:
提供最多利益給最多的網(wǎng)站用戶
確保任何網(wǎng)站文擋都能夠長(zhǎng)期有效
簡(jiǎn)化代碼、降低建設(shè)成本
讓網(wǎng)站更容易使用,能適應(yīng)更多不同用戶和更多網(wǎng)路設(shè)備
當(dāng)瀏覽器版本更新,或者出現(xiàn)新的網(wǎng)絡(luò)交互設(shè)備時(shí),確保所有應(yīng)用能夠繼續(xù)正確執(zhí)行。
對(duì)于網(wǎng)站設(shè)計(jì)和開(kāi)發(fā)人員來(lái)說(shuō),遵循網(wǎng)站標(biāo)準(zhǔn)就是使用標(biāo)準(zhǔn);對(duì)于你的網(wǎng)站用戶來(lái)說(shuō),網(wǎng)站標(biāo)準(zhǔn)就是最佳體驗(yàn)。
訪問(wèn)量排名世界第4,中國(guó)第1的新浪網(wǎng)站,也遭遇非標(biāo)準(zhǔn)DHTML的問(wèn)題。在最新發(fā)布的Netscape7和Mozila1.6瀏覽器中,新浪首頁(yè)的漂浮廣告全部失效,層疊擠在頁(yè)面左下角。也許那些廣告主認(rèn)為損失這些潛在的用戶無(wú)所謂。(截圖日期2004年4月12日)
二.什么是網(wǎng)站標(biāo)準(zhǔn)
網(wǎng)站標(biāo)準(zhǔn)不是某一個(gè)標(biāo)準(zhǔn),而是一系列標(biāo)準(zhǔn)的集合。網(wǎng)頁(yè)主要由三部分組成:結(jié)構(gòu)(Structure)、表現(xiàn)(Presentation)和行為(Behavior)。對(duì)應(yīng)的標(biāo)準(zhǔn)也分三方面:結(jié)構(gòu)化標(biāo)準(zhǔn)語(yǔ)言主要包括XHTML和XML,表現(xiàn)標(biāo)準(zhǔn)語(yǔ)言主要包括CSS,行為標(biāo)準(zhǔn)主要包括對(duì)象模型(如W3C DOM)、ECMAScript等。這些標(biāo)準(zhǔn)大部分由W3C起草和發(fā)布,也有一些是其他標(biāo)準(zhǔn)組織制訂的標(biāo)準(zhǔn),比如ECMA(European Computer Manufacturers Association)的ECMAScript標(biāo)準(zhǔn)。我們來(lái)簡(jiǎn)單了解一下這些標(biāo)準(zhǔn):
1.結(jié)構(gòu)標(biāo)準(zhǔn)語(yǔ)言
(1)XML
XML是The Extensible Markup Language(可擴(kuò)展標(biāo)識(shí)語(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最初設(shè)計(jì)的目的是彌補(bǔ)HTML的不足,以強(qiáng)大的擴(kuò)展性滿足網(wǎng)絡(luò)信息發(fā)布的需要,后來(lái)逐漸用于網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)換和描述。關(guān)于XML的好處和技術(shù)規(guī)范細(xì)節(jié)這里就不多說(shuō)了,網(wǎng)上有很多資料,也有很多書(shū)籍可以參考。
?。?)XHTML
XHTML是The Extensible HyperText Markup Language可擴(kuò)展標(biāo)識(shí)語(yǔ)言的縮寫(xiě)。目前推薦遵循的是W3C于2000年1月26日推薦XML1.0(參考http://www.w3.org/TR/xhtml1)。XML雖然數(shù)據(jù)轉(zhuǎn)換能力強(qiáng)大,完全可以替代HTML,但面對(duì)成千上萬(wàn)已有的站點(diǎn),直接采用XML還為時(shí)過(guò)早。因此,我們?cè)贖TML4.0的基礎(chǔ)上,用XML的規(guī)則對(duì)其進(jìn)行擴(kuò)展,得到了XHTML。簡(jiǎn)單的說(shuō),建立XHTML的目的就是實(shí)現(xiàn)HTML向XML的過(guò)渡。
2. 表現(xiàn)標(biāo)準(zhǔn)語(yǔ)言
CSS是Cascading Style Sheets層疊樣式表的縮寫(xiě)。目前推薦遵循的是W3C于1998年5月12日推薦CSS2(參考http://www.w3.org/TR/CSS2/)。W3C創(chuàng)建CSS標(biāo)準(zhǔn)的目的是以CSS取代HTML表格式布局、幀和其他表現(xiàn)的語(yǔ)言。純CSS布局與結(jié)構(gòu)式XHTML相結(jié)合能幫助設(shè)計(jì)師分離外觀與結(jié)構(gòu),使站點(diǎn)的訪問(wèn)及維護(hù)更加容易。
3.行為標(biāo)準(zhǔn)
(1)DOM
DOM是Document Object Model文檔對(duì)象模型的縮寫(xiě)。根據(jù)W3C DOM規(guī)范(http://www.w3.org/DOM/),DOM是一種與瀏覽器,平臺(tái),語(yǔ)言的接口,使得你可以訪問(wèn)頁(yè)面其他的標(biāo)準(zhǔn)組件。簡(jiǎn)單理解,DOM解決了Netscaped的&#106avascript和Microsoft的Jscript之間的沖突,給予web設(shè)計(jì)師和開(kāi)發(fā)者一個(gè)標(biāo)準(zhǔn)的方法,讓他們來(lái)訪問(wèn)他們站點(diǎn)中的數(shù)據(jù)、腳本和表現(xiàn)層對(duì)像。
(2) ECMAScript
ECMAScript是ECMA(European Computer Manufacturers Association)制定的標(biāo)準(zhǔn)腳本語(yǔ)言(&#106avascript)。目前推薦遵循的是ECMAScript 262(http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM)。
三.遵循標(biāo)準(zhǔn)的網(wǎng)站與傳統(tǒng)網(wǎng)站的區(qū)別
傳統(tǒng)網(wǎng)站只是印刷媒體的延伸,設(shè)計(jì)目標(biāo)是保證在4-6個(gè)主流瀏覽器版本中看起來(lái)一致。 通常的特征是:
以表格為基礎(chǔ)的布局。
內(nèi)容與表現(xiàn)方式混雜在一起。典型的例子是<font>標(biāo)簽。
垃圾代碼(非標(biāo)準(zhǔn)代碼)。
不易用的代碼。
語(yǔ)義不正確的代碼。比如<b>不解釋的話,你根本不明白這是字體加粗的意思。
而采用網(wǎng)站標(biāo)準(zhǔn)建立的網(wǎng)站是一個(gè)能夠接受各種用戶和各種設(shè)備的廣泛的交流溝通工具。一般特征是:
語(yǔ)義正確的標(biāo)識(shí)。即使用能夠表達(dá)含義的標(biāo)簽。保證代碼可以在文本瀏覽器、PDAs、搜索引擎中被正確理解。
正確有效的代碼。通過(guò)W3C代碼校驗(yàn)(http://validator.w3.org/)的就是正確代碼。
對(duì)人、機(jī)都易用的代碼。能夠接受廣泛的用戶和設(shè)備的訪問(wèn),用CSS分離表現(xiàn)層和內(nèi)容。使代碼更簡(jiǎn)潔、下載速度更快,批量修改和定制表現(xiàn)形式更容易。
四.采用網(wǎng)站標(biāo)準(zhǔn)的好處和缺點(diǎn)
1.好處
對(duì)網(wǎng)站瀏覽者的好處:
文件下載與頁(yè)面顯示速度更快;
內(nèi)容能被更多的用戶所訪問(wèn)(包括失明、視弱、色盲等殘障人士);
內(nèi)容能被更廣泛的設(shè)備所訪問(wèn)(包括屏幕閱讀機(jī)、手持設(shè)備、搜索機(jī)器人、打印機(jī)、電冰箱等等)
用戶能夠通過(guò)樣式選擇定制自己的表現(xiàn)界面
所有頁(yè)面都能提供適于打印的版本
對(duì)網(wǎng)站所有者的好處:
更少的代碼和組件,容易維護(hù)
帶寬要求降低(代碼更簡(jiǎn)潔),成本降低。舉個(gè)例子:當(dāng) ESPN.com 使用 CSS改版后,每天節(jié)約超過(guò)兩兆字節(jié)(terabytes)的帶寬。
更容易被搜尋引擎搜索到
改版方便,不需要變動(dòng)頁(yè)面內(nèi)容
提供打印版本而不需要復(fù)制內(nèi)容
提高網(wǎng)站易用性。在美國(guó),有嚴(yán)格的法律條款(Section 508)來(lái)約束政府網(wǎng)站必須達(dá)到一定的易用性,其他國(guó)家也有類(lèi)似的要求。
2.缺點(diǎn)
需要花費(fèi)更多時(shí)間來(lái)學(xué)習(xí)標(biāo)準(zhǔn)
依然需要注意瀏覽器的兼容問(wèn)題
用 CSS 來(lái)實(shí)現(xiàn)某些表現(xiàn)反而比表格更為麻煩
五.怎么改善現(xiàn)有網(wǎng)站
我們大部分的設(shè)計(jì)師依舊在采用傳統(tǒng)的表格布局、表現(xiàn)與結(jié)構(gòu)混雜在一起的方式來(lái)建立網(wǎng)站。學(xué)習(xí)使用XHTML+CSS的方法需要一個(gè)過(guò)程,使現(xiàn)有網(wǎng)站符合網(wǎng)站標(biāo)準(zhǔn)也不可能一步到位。最好的方法是循序漸進(jìn),分階段來(lái)逐步達(dá)到完全符合網(wǎng)站標(biāo)準(zhǔn)的目標(biāo)。如果你是新手,或者對(duì)代碼不是很熟悉,也可以采用遵循標(biāo)準(zhǔn)的編輯工具,例如Dreamweaver MX 2004,它是目前支持CSS標(biāo)準(zhǔn)最完善的工具。
1.初級(jí)改善
為頁(yè)面添加正確的DOCTYPE
很多設(shè)計(jì)師和開(kāi)發(fā)者都不知道什么是DOCTYPE,DOCTYPE有什么用。DOCTYPE是document type的簡(jiǎn)寫(xiě)。主要用來(lái)說(shuō)明你用的XHTML或者HTML是什么版本。瀏覽器根據(jù)你DOCTYPE定義的DTD(文檔類(lèi)型定義)來(lái)解釋頁(yè)面代碼。所以,如果你不注意設(shè)置了錯(cuò)誤的DOCTYPE,結(jié)果會(huì)讓你大吃一驚。XHTML1.0提供了三種DOCTYPE可選擇:
過(guò)渡型(Transitional )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
" 嚴(yán)格型(Strict )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
" 框架型(Frameset )
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
" 對(duì)于我們初級(jí)改善來(lái)說(shuō),只要選用過(guò)渡型的聲明就可以了。它依然可以兼容你的表格布局、表現(xiàn)標(biāo)識(shí)等,不至于讓你覺(jué)得變化太大,難以掌握。
Tip:你懶得輸入上面過(guò)渡型代碼的話,可以訪問(wèn)http://www.macromedia.com/網(wǎng)站的首頁(yè),然后查看源代碼,把head區(qū)同樣的代碼拷貝粘貼就可以了。
設(shè)定一個(gè)名字空間(Namespace)
直接在DOCTYPE聲明后面添加如下代碼:
<html XMLns=" 一個(gè)namespace是收集元素類(lèi)型和屬性名字的一個(gè)詳細(xì)的DTD,namespace聲明允許你通過(guò)一個(gè)在線地址指向來(lái)識(shí)別你的namespace。只要照樣輸入代碼就可以。
聲明你的編碼語(yǔ)言
為了被瀏覽器正確解釋和通過(guò)標(biāo)識(shí)校驗(yàn),所有的XHTML文檔都必須聲明它們所使用的編碼語(yǔ)言。代碼如下:
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
這里聲明的編碼語(yǔ)言是簡(jiǎn)體中文GB2312,你如果需要制作繁體內(nèi)容,可以定義為BIG5。
用小寫(xiě)字母書(shū)寫(xiě)所有的標(biāo)簽
XML對(duì)大小寫(xiě)是敏感的,所以,XHTML也是大小寫(xiě)有區(qū)別的。所有的XHTML元素和屬性的名字都必須使用小寫(xiě)。否則你的文檔將被W3C校驗(yàn)認(rèn)為是無(wú)效的。例如下面的代碼是 不正確的:
<TITLE>公司簡(jiǎn)介</TITLE>
正確的寫(xiě)法是:
<title>公司簡(jiǎn)介</title>
同樣的,<P>改成<p>,<B>改成<b>等等。這步轉(zhuǎn)換很簡(jiǎn)單。
為圖片添加 alt 屬性
為所有圖片添加alt屬性。alt屬性指定了當(dāng)圖片不能顯示的時(shí)候就顯示供替換文本,這樣做對(duì)正常用戶可有可無(wú),但對(duì)純文本瀏覽器和使用屏幕閱讀機(jī)的用戶來(lái)說(shuō)是至關(guān)重要的。只有添加了alt屬性,代碼才會(huì)被W3C正確性校驗(yàn)通過(guò)。注意的是我們要添加有意義的alt屬性,象下面這樣的寫(xiě)法毫無(wú)意義:
<img src=”logo_unc_120x30.gif” alt=” logo_unc_120x30.gif”>
正確的寫(xiě)法:
<img src=”logo_unc_120x30.gif” alt=”UNC公司標(biāo)志,點(diǎn)擊返回首頁(yè)”>
給所有屬性值加引號(hào)
在HTML中,你可以不需要給屬性值加引號(hào),但是在XHTML中,它們必須被加引號(hào)。
例:height=”100”,而不能是height=100。
關(guān)閉所有的標(biāo)簽
在XHTML中,每一個(gè)打開(kāi)的標(biāo)簽都必須關(guān)閉。就象這樣:
<p>每一個(gè)打開(kāi)的標(biāo)簽都必須關(guān)閉。</p>
<b>HTML可以接受不關(guān)閉的標(biāo),XHTML就不可以。</b>
這個(gè)規(guī)則可以避免HTML的混亂和麻煩。舉例來(lái)說(shuō):如果你不關(guān)閉圖像標(biāo)簽,在一些瀏覽器中就可能出現(xiàn)CSS顯示問(wèn)題。用這種方法能確保頁(yè)面和你設(shè)計(jì)的一樣顯示。需要說(shuō)明的是:空標(biāo)簽也要關(guān)閉,在標(biāo)簽尾部使用一個(gè)正斜杠“/”來(lái)關(guān)閉它們自己。例如:
<br />
<img src="webstandards.gif" />
2.中級(jí)改善
接下來(lái)我們的改善主要在結(jié)構(gòu)和表現(xiàn)相分離上,這一步不象第一步那么容易實(shí)現(xiàn),我們需要觀念上的轉(zhuǎn)變,以及對(duì)CSS2技術(shù)的學(xué)習(xí)和運(yùn)用。但學(xué)習(xí)任何新知識(shí)都需要花點(diǎn)時(shí)間的,不是嗎?訣竅在于邊做邊學(xué)。假如你一直采用表格布局,根本沒(méi)用過(guò) CSS,也不必急于跟表格布局說(shuō)再見(jiàn),你可以先用樣式表代替 font 標(biāo)簽。隨著你學(xué)到的越多,你能做的就越多。好,一起來(lái)看看我們需要做哪些事:
用CSS定義元素外觀
我們?cè)趯?xiě)標(biāo)識(shí)時(shí)已經(jīng)養(yǎng)成習(xí)慣,當(dāng)希望字體大點(diǎn)就用<h1>,希望在前面加個(gè)點(diǎn)符號(hào)就用<li>。我們總是想<h1>的意思是大的,<li>的意思是圓點(diǎn),<b>的意思是“加粗文本”。而實(shí)際上, <h1>能變成你想要的任何樣子,通過(guò)CSS,<h1>能變成小的字體,<p>文本能夠變成巨大的、粗體的,<li>能夠變成一張圖片等等。我們不能強(qiáng)迫用結(jié)構(gòu)元素實(shí)現(xiàn)表現(xiàn)效果,我們應(yīng)該使用CSS來(lái)確定那些元素的外觀。例如,我們可以使原來(lái)默認(rèn)的6級(jí)標(biāo)題可以看起來(lái)大小一樣:
h1, h2, h3, h4, h5, h6{
font-family: 宋體, serif;
font-size: 12px;
}
用結(jié)構(gòu)化元素代替無(wú)意義的垃圾
許多人可能從來(lái)都不知道HTML和XHTML元素設(shè)計(jì)本意是用來(lái)表達(dá)結(jié)構(gòu)的。我們很多人已經(jīng)習(xí)慣用元素來(lái)控制表現(xiàn),而不是結(jié)構(gòu)。例如,一段列表內(nèi)容可能會(huì)使用下面這樣的標(biāo)識(shí):南寧網(wǎng)站建設(shè)<br />
南寧網(wǎng)站制作<br />
南寧網(wǎng)頁(yè)設(shè)計(jì)<br />
如果我們采用一個(gè)無(wú)序列表代替會(huì)更好:
<ul>
<li>南寧網(wǎng)站建設(shè)</li>
<li>南寧網(wǎng)站制作</li>
<li>南寧網(wǎng)頁(yè)設(shè)計(jì)</li>
</ul>
你或許會(huì)說(shuō)“但是<li>顯示的是一個(gè)圓點(diǎn),我不想用圓點(diǎn)”。事實(shí)上,CSS沒(méi)有設(shè)定元素看起來(lái)是什么樣子,你完全可以用CSS關(guān)掉圓點(diǎn)。
給每個(gè)表格和表單加上id
給表格或表單賦予一個(gè)唯一的、結(jié)構(gòu)的標(biāo)記,例如<table id="menu">接下來(lái),在書(shū)寫(xiě)樣式表的時(shí)候,你就可以創(chuàng)建一個(gè)“menu”的選擇器,并且關(guān)聯(lián)一個(gè)CSS規(guī)則,用來(lái)告訴表格單元、文本標(biāo)簽和所有其他元素怎么去顯示。這樣,不需要對(duì)每個(gè)<td>標(biāo)簽附帶一些多余的、占用帶寬的表現(xiàn)層的高、寬、對(duì)齊和背景顏色等等屬性。只需要一個(gè)附著的標(biāo)記(標(biāo)記“menu”的id標(biāo)記),你就可以在一個(gè)分離的樣式表內(nèi)為干凈的、緊湊的代碼標(biāo)記進(jìn)行特別的表現(xiàn)層處理。
中級(jí)改善我們這里先列主要的三點(diǎn),但其中包含的內(nèi)容和知識(shí)點(diǎn)非常多,需要我們逐步學(xué)習(xí)和掌握,直到最后實(shí)現(xiàn)完全采用CSS而不才用任何表格實(shí)現(xiàn)布局。限于本文是引導(dǎo)推廣之意,不展開(kāi)詳述。
最后我們特別需要補(bǔ)充介紹的是網(wǎng)站的易用性(Accessibility)和交互設(shè)計(jì)改善,易用性與網(wǎng)站標(biāo)準(zhǔn)有著標(biāo)準(zhǔn)聯(lián)系緊密,和網(wǎng)站標(biāo)準(zhǔn)一樣,都是為了使我們的網(wǎng)站接受更多的用戶訪問(wèn)。1990年W3C建立了Web Accessibility Initiative(WAI),給網(wǎng)站建造者提供實(shí)現(xiàn)可訪問(wèn)性的方法和策略(http://www.w3.org/WAI/GL/)。提高易用性和研究交互設(shè)計(jì)(推薦VB之父Alan Cooper的About Face2.0一書(shū))的策略能提高你的開(kāi)發(fā)技術(shù),開(kāi)闊視野。提高你作為專(zhuān)業(yè)網(wǎng)頁(yè)設(shè)計(jì)師的價(jià)值,使你更具競(jìng)爭(zhēng)力。這正是每個(gè)網(wǎng)站所有者和每個(gè)設(shè)計(jì)師或開(kāi)發(fā)者要努力達(dá)到的目標(biāo)。