採用XHTML和CSS設計可重用可換膚的WEB站點

技術小牛人發表於2017-11-16
< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd>
隨著XHTML的逐漸推廣流行,HTML 在許多場合已經顯得過時。World Wide Web Consortium (W3C) 於 2000 年  6 月 26 日釋出了 XHTML 的第一個版本作為推薦標準。XHTML 標準的目標是取代 html。按照 W3C 的說法,“XHTML 是  html 的繼承者”(::URL::http://www.w3.org/MarkUp/)。  


XHTML具有兩大目標: 


在文件結構和表示形式之間建立更明顯的分離。 

將 html 重新表示為 XML 的應用程式。 

使用XHTML標準的好處是:只需設計頁面一次,即可讓該頁以完全相同的方式在任何現代的瀏覽器中顯示和工作。例如,在按照標準生成以後,頁面在 Internet Explorer、Mozilla Firefox、Netscape Navigator、Opera、Camino 和  Safari)中以相同的方式顯示,而無需完成任何額外的工作。並且XHTML標準可以使 Web 站點更易於為智慧手機、殘疾人電腦等裝置訪問。 


由於XHTML標準要求在在文件結構和表示形式之間建立更明顯的分離。因此使用CSS樣式表是必不可少的。CSS在網頁中佔著極重要的地位,它的使用一直是熱門討論的話題。CSS是Cascading Style Sheet的簡寫,譯為“層疊樣式表單”。 在1997年W3C頒佈HTML4標準的同時也公佈了有關樣式表的第一個標準CSS1, 自CSS1的版本之後,又在1998年5月釋出了CSS2版本。 

CSS 的發明者的目的是除去表示性元素,即應該根據內容所表示的東西來標記內容,而樣式表應該用於美化內容。而這一點與XHTML分離文件結構和表示形式的目標是一致,(在 XHTML 2.0將除去b 、 i 和 img 標記(以及 big 、 small 和 tt ),甚至不贊成使用 br ,準備從將來的發行版中除去它。原因在於大多數標記都是表示性的。它們的唯一目的就是給予瀏覽器指令,規定有關其內容應該如何顯示,但卻完全未提供有關其內容是什麼的資訊。) 因此它們成了最好的合作伙伴。更多關於XHTML2.0的資料,請參見:::URL::http://www-128.ibm.com/developerworks/cn/xml/x-wa-xhtml/index.html  

CSS 過去經常被用來定義字型的屬性,而現在新標準中我們將用它來控制整個頁面的顯示。然而,我們必須需要做一些不同於以往的處理來適應這種新的變化,如:使用 div來佈局而不是表格,使用結構化、語義化的標記等等。由於採用新的處理方式,我們現在可以輕鬆地設計出可重用的CSS(同一個樣式檔案多個WEB站點中使用)以及可換膚的WEB站點(一個站點使用多種不同風格的樣式)。 


示例請見四川省建設廳資訊門戶,介面切換在右上方,如圖1所示。由於時間原因,並未通過XHTML和CSS校驗,但原理是一樣的。 

圖1:介面樣式切換 


1、重新設計站點的HTML 

首先我們要去掉網頁中有關外觀的標籤。在以前的程式碼中,我們常用一個表格用來在頁面的內容中建立一個有邊框的區塊,我們還使用〈b〉來加粗文字。用<font color=red>來改變字型顏色等等。用<br>標籤來建立段落等。 


而要做出能適應XHTML標準和能隨意換膚的網站,我們須要避免在頁面中使用有關外觀的標籤。使文件結構和表示形式分離的一個最大的好處就是它使文件在沒有 CSS時,仍然可以使用和訪問。表現(就是文件看上去的樣子)在一個支援性好的瀏覽器中也將呈現的不一樣,但是它的內容將永遠不變,大多數情況,對於訪問網站的人來說,內容實際上比表現的方式更加重要。這就是為什麼給那些支援性不好的瀏覽器傳送一個沒有樣式的頁面,要比把他們排斥在外要好的原因。 


現在比較流行的做法是使用DIV、SPAN等標籤來佈局整個頁面,而TABLE,UL,PRE,CODE等標籤來顯示資料,用UL是用來顯示無序的列表資訊,而OL顯示有序的列表資訊。這將比用TABLE來顯示一個列表更有語義上的意義,同時UL和OL在瀏覽器中比TABLE標籤更快有下載速度,並且相對於TABLE,CSS對UL和OL的外觀控制更加靈活。當然對於複雜的資料,比如報表,用TABLE來顯示仍然是不二的選擇。 


2、建立基本的通用樣式

由於所有的XHTML檔案都是由各種各樣的HTML標籤和標籤內的文字組成,而一些基本的標籤在每個XHTML檔案都存在的,如:body、table、 td、div、h1–h6、ul、li、input等等,如果我們定義好了這些標籤的CSS樣式,如:字型,字號,行距,背景色,背景圖等等,我們就有了一個基本的樣式風格,就如同在Word或PowerPoint中的主題,每個主題就是一套風格樣式。 因此,我們可以根據基本的HTML標籤定義出一個通用的樣式來,例如建立一個siteComm.css檔案,定義如下: 


 

BODY 



    background: url(images/bg_page.jpg); 

    font: 10pt verdana,arial,; 

    margin-top: 0px; 

    margin-left: 0px; 

    margin-right: 0px; 

    margin-bottom: 0px; 



H1, H2, H3, H4, H5, H6 



    border-bottom: solid 1px #ccc; 

    margin: 1em 0; 



TD 



    font: 10pt; 



A:link 



    color: #057AE0; 

    text-decoration: none; 



A:visited 



    color: #057AE0; 

    text-decoration: none; 



A:hover 



    color: #009900; 



A:active 



    color: #009900; 




這樣的一個樣式檔案,可以適用於任何一個網頁,只要新增引用我們都可以立刻看見效果。 


由於樣式表的繼承規則是外部的標籤樣式會保留下來繼承給這個標籤所包含的其他標籤。事實上,所有在標籤中巢狀的標籤都會繼承外層標籤指定的屬性值,有時會把很多層標籤的樣式疊加在一起,例如在body標籤中定義了字型大小,那麼div、p等標籤也會繼承一樣的字型大小,如果在P標籤中又定義了字型顏色,那麼 P標籤中的文字既具有body標籤的字型大小又有P標籤的字型顏色。需要注意的是,table標籤不會繼承body的字型大小設定,所以在上面的樣式表中,我們單獨來定義td的樣式。 


3、定義好頁面的結構佈局

很多時候,我們在製作網頁時總是從視覺出發,先用Photoshop或者Fireworks畫出來、思考頁面的配色,做一些很炫的效果,很精美的圖片,再切割成小圖。然後通過編輯HTML將所有設計變成頁面。 


然而,有視覺的缺陷的人,不能理解這些顏色或者效果。PDA、行動電話和螢幕閱讀機上也無法解析這些效果。 


因此外觀並不是最重要的。一個結構良好的XHTML可以通過CSS的不同定義,顯示成任何外觀,顯示在任何支援XHTML的網路裝置上。 


通過分析我們可以發現,對於大多數WEB網站來說,頁面都是由一些類似的內容區塊所組成,如: 


站點標題區 

站點導航(主選單,次及選單) 

功能區(例如搜尋框、使用者登陸區) 

內容區(文章正文或者文章、產品列表) 

頁尾(版權和有關法律宣告) 

然後我們用DIV標籤來將這些區塊包含起來,類似這樣:


<div class=”pageHeader”>站點標題 

</div> 

<div class=”pageNav”>站點導航 

</div> 

<div class=”catalogNav”>欄目導航 

</div> 

<div class=”pageContent”>文章正文或列表等等 

</div> 

<div class=”pageSearch”>查詢 

</div> 

<div class=”pageBottom”>頁尾 

</div> 

通過CSS的定義,我們可以將這些DIV標籤包含的區塊放在頁面上任何位置,再指定這些塊的顏色、字型、邊框、背景以及對齊屬性等等。如:我們再建立siteLayout.css檔案,定義如下:


.pageHeader 

( 

    padding: 10px; 

    border: 1px solid #666; 

    height: 100px; 

    height: 70px; 

) 

.pageNav 

( 

    padding: 10px; 

    border: 1px solid #666; 

    height: 100px; 

    height: 30px; 

) 

.catalogNav 

( 

    float: left; 

    top: 130px; 

    padding: 10px; 

    border: 1px solid #666; 

    width: 20%; 

) 

.pageSearch 

( 

    float: left; 

    top: 130px; 

    padding: 10px; 

    border: 1px solid #666; 

    width: 20%; 

) 

.pageContent 

( 

    float: left; 

    padding: 10px; 

    border: 1px solid #666; 

    height: 400px; 

    width: 60%; 

) 

.pageBottom 

( 

    clear: both; 

    padding: 10px; 

    border: 1px solid #666; 

    height: 100px; 

    height: 70px; 

) 

如此,我們定義了一個三列的頁面佈局:頂部自適應頁面寬度。中間三列自適應頁面。底部自適應頁面寬度,當然您也可以將頁面定義為中間只有兩列等等,您只需要調整layout.css檔案即可,這樣您可以靈活的修改頁面的佈局,讓頁面外觀發生根本的變化,而不必動到HTML原始檔,這一點對於伺服器端生成程式碼的程式尤為重要。 更多關於CSS佈局的資料,請參見:::URL::http://www.w3cn.org/article/layout/2004/55.html  


4、定義站點獨有的樣式 

經過以上兩步之後,我們已經有了一個大概的頁面主題外觀,接下來我們要設計站點的細節,比如,對站點導航條我們想使用與普通超連結不一樣的樣式,如:藍色、加粗、字型更大、再加上有立體效果的背景圖:


. pageNav a:link, . pageNav a:hover, . pageNav a:visted (Color:#36c;  

font-weight:bold; font-size:120%; background: url(images/bg_siteMenu.jpg) #36c;  



 對於欄目導航,我們想給每個欄目連線加上背景色,並且有滑鼠滑過和移出的效果。 欄目導航區的html程式碼為: 


<div class=”catalogNav”> 

        <ul> 

            <li> 

                <A href=”1″>欄目1</A> 

            <li> 

                <A href=”2″>欄目2</A> 

            <li> 

                <A href=”3″>欄目3</A> 

            <li> 

                <A href=”4″>欄目4</A> 

            <li> 

                <A href=”5″>欄目5</A> 

            <li> 

                <A href=”6″>欄目6</A> 

            </li> 

        </ul> 

    </div> 

欄目導航區對應的Css程式碼為: 


.catalogNav ul 



    margin-left: -30px; 

    list-style: none; 



.catalogNav li 



    float: left; 

    background: #CCC; 

    line-height: 30px; 

    border: solid 1px #black; 



.catalogNav a 



    width: 100%; 

    text-align: center; 

    height: 30px; 



.catalogNav a:link 



    color: #666; 

    background: url(arrow_off.gif) #CCC no-repeat 5px 12px; 

    text-decoration: none; 



.catalogNav a:visited 



    color: #666; 

    text-decoration: underline; 



.catalogNav a:hover 



    color: #FFF; 

    font-weight: bold; 

    text-decoration: none; 

    background: url(arrow_on.gif) #F00 no-repeat 5px 12px; 



接下來我們還需要定義其他的站點獨有的樣式,如欄目標題、文章列表、文章正文、時間、註釋、提示、錯誤等等各種樣式,而且這些樣式多以類和id來作為選擇符。這些樣式都是針對某個站點的,不適用於其他的站點,然後我們將這些樣式儲存為siteStyle.css檔案。 


這樣我們就有了3個CSS檔案。 SiteComm.css:任何站點都可以使用的樣式檔案,定義了常用的html標籤樣式。  SiteLayout.css:站點的佈局檔案,能適用於大多數的網站結構,具體細節需要調整。 siteStyle.css:站點獨有的樣式檔案,能顯示出本站點獨特的風格和適應於站點的內容。 


然後我們採用外部呼叫法:將這些樣式表與頁面關聯起來。 


<LINK rev=”stylesheet” media=”all” href=”css/SiteComm.css” type=”text/css” rel=”stylesheet”> 

<LINK rev=”stylesheet” media=”all” href=”css/SiteLayout.css” type=”text/css” rel=”stylesheet”> 

<LINK rev=”stylesheet” media=”all” href=”css/siteStyle.css” type=”text/css” rel=”stylesheet”> 

在符合XHTML標準的設計中,我們使用外部呼叫法,好處不言而喻,HTML文件會變得非常的小,CSS檔案被存在瀏覽器的快取中,僅僅需要下載一次即可,並且你只需要修改一個檔案就可以改變整個網站的樣式。 


並且這樣我們才能通過客戶端指令碼,或者伺服器端程式碼方便地改變樣式表的連線地址,而快捷地實現換膚功能。 


5、根據使用者設定換膚

網站樣式切換在網上已有很多現成的javascript換膚程式碼,一般使用cookie來儲存使用者設定,在請求頁面時,改變頁面的CSS檔案連線即可。 


而伺服器端的換膚做法是根據使用者請求,動態地生成CSS檔案連線,使用者設定一般儲存在資料庫或者cookie中。 


由於我們使用了3個不同功能CSS樣式檔案來顯示網站,所以我們可以設計出更加靈活的換膚方案和組合,如只切換主題而保留佈局,和切換佈局和主題,以及各種細節等等。 


使用3個CSS樣式檔案額外的好處是,每當我們設計一個新的系統,它的樣式風格特性幾乎都可以大部分應用到以前的系統上(因為我們採用大致相同的頁面結構模型,雖然顯示千差萬別,但主要的框架是一樣的),這樣我們就可以積累出相當數量和相當風豐富的介面樣式庫來。 


6、通過校驗

整個過程的最後一個步驟就是對XHTMLCSS程式碼進行驗證。有很多種的工具都可以幫你對二者進行驗證。 


例如Dreamweaver MX即可檢查我的樣本程式碼的可訪問性。你可以通過在檔案選單中選擇Check Page然後選擇 Check Accessibility來實現。任何錯誤或是警告都會顯示出來,還包括出現位置的行號以及對問題簡要的解釋。你可以在 Dreamweaver MX的Reference工具中找到更多關於這些錯誤和警告的內容。 


而Microsoft ASP.NET 2.0 具有很多有用的功能,也能幫助我們設計和生成符合 XHTML 和可訪問性標準的 Web 站點。 使用 Web 標準生成 ASP.NET 2.0 Web 站點 ::URL::http://www.microsoft.com/china/msdn/library/webservices/asp.net/ASPNETusStan.mspx  


此外,World Wide Web Consortium (W3C)提供了超過30個的可訪問性評估工具的連結。W3C還提供了針對HTML和CSS的基於Web的免費驗證器。 


因此如果想要改善網站友好度,可用性,可訪問性等,可將新標準視為一個機會,而不是一個障礙。要了解更多關於新標準和可訪問性的內容,你可以去看一看 World Wide Web Consortium中的Web Accessibility Initiative (WAI)。
本文轉自 netcorner 部落格園部落格,原文連結:http://www.cnblogs.com/netcorner/archive/2007/01/03/2912448.html  ,如需轉載請自行聯絡原作者


相關文章