我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。學習使用XHTML+CSS的方法需要一個過程,使現有網站符合網站標準也不可能一步到位。最好的方法是循序漸進,分階段來逐步達到完全符合網站標準的目標。如果你是新手,或者對代碼不是很熟悉,也可以採用遵循標準的編輯玩具,例如Dreamweaver MX 2004,它是目前支持CSS標準最完善的玩具。
, J; M5 t8 i7 o. [
9 p5 k; S! B5 s: J0 J1.初級改善
. T8 a& I5 ? S$ R為頁面添加正確的DOCTYPE 1 m% t* `- \: E
很多設計師和開發者都不知道什麼是DOCTYPE,DOCTYPE有什麼用。DOCTYPE是document type的簡寫。主要用來說明你用的XHTML或者HTML是什麼版本。瀏覽器根據你DOCTYPE定義的DTD(文檔類型定義)來解釋頁面代碼。所以,如果你不注意設置了錯誤的DOCTYPE,結果會讓你大吃一驚。XHTML1.0提供了三種DOCTYPE可選擇:
' {" D' y- {8 t6 g% I$ V" d2 x# e; q z% V z8 ~
(1)過渡型(Transitional )
0 A$ g$ Y/ V7 e& f4 B
" y4 r% G1 U/ [) W. U<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
, ^# N0 P2 I: ]2 x Q0 a' J- {(2)嚴格型(Strict )8 A; Y+ K+ ^% y5 g3 y
/ }( u- X9 p: c, }8 P& S* l- T
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
) ?! n8 P: [$ @+ d- _' X(3)框架型(Frameset ); a$ o! Q! f5 V3 d5 L1 T4 `* d
* S/ x# z7 A( W8 F' Y
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
: M- A8 w) _! d2 V/ s對於我們初級改善來說,只要選用過渡型的聲明就可以了。它依然可以兼容你的表格佈局、表現標識等,不至於讓你覺得變化太大,難以掌握。
4 ?* c/ F; `& V! m, h0 P; r8 @ R4 S' ?0 h& x( S
Tip:你懶得輸入上面過渡型代碼的話,可以訪問http://www.macromedia.com/網站的首頁,然後查看源代碼,把head區同樣的代碼拷貝粘貼就可以了。& {. u3 }4 c8 t- p" v7 ]* j" Y
/ Z/ F8 a8 C- f0 p( l, R
設定一個名字空間(Namespace) 1 F( u$ y% g8 P! O
直接在DOCTYPE聲明後面添加如下代碼:
# V$ ]9 R7 S- d, i$ b- ~" B4 c$ S! H6 H, ^
<html XMLns="http://www.w3.org/1999/xhtml" > . a) z. p1 G: G, A4 a+ ~8 ]# }
一個namespace是收集元素類型和屬性名字的一個詳細的DTD,namespace聲明允許你通過一個在線地址指向來識別你的namespace。只要照樣輸入代碼就可以。
+ z/ R8 D" ~3 |! b$ ?& L9 D. M U7 c. e }% A
聲明你的編碼語言
/ `$ j' b0 A0 p" w6 W' S為了被瀏覽器正確解釋和通過標識校驗,所有的XHTML文檔都必須聲明它們所使用的編碼語言。代碼如下:
! l: W& ~, c4 T( J1 h9 D5 H
+ X" q) C3 y0 T& q4 _<meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> 5 y5 J! d! s8 a
這裡聲明的編碼語言是簡體中文GB2312,你如果需要製作繁體內容,可以定義為BIG5。" r& P5 N9 j( a% h% H
- |, X) F) {1 O3 ~3 ^用小寫字母書寫所有的標籤
7 J$ c* w) C, O a6 y& q5 o6 gXML對大小寫是敏感的,所以,XHTML也是大小寫有區別的。所有的XHTML元素和屬性的名字都必須使用小寫。否則你的文檔將被W3C校驗認為是無效的。例如下面的代碼是不正確的:
`+ i- c* U0 H' i6 {/ s, o$ X
8 t% W6 V" b! {$ M- C<TITLE>公司簡介</TITLE> 8 c; K2 o; K; \4 i
正確的寫法是:
' J6 }0 [. y8 j- `2 s2 l3 B' c
/ F! M0 Q' U0 X8 S$ t4 J- S<title>公司簡介</title> 同樣的,<P>改成<p>,<B>改成<b>等等。這步轉換很簡單。
- u3 {4 l* j; x3 Y為圖片添加 alt 屬性
: j1 L5 M7 a% [' T為所有圖片添加alt屬性。alt屬性指定了當圖片不能顯示的時候就顯示供替換文本,這樣做對正常用戶可有可無,但對純文本瀏覽器和使用屏幕閱讀機的用戶來說是至關重要的。只有添加了alt屬性,代碼才會被W3C正確性校驗通過。注意的是我們要添加有意義的alt屬性,像下面這樣的寫法毫無意義:
! h6 E S& _: M4 Z! ]7 Q
1 k j# C+ }, f2 j a<img src="logo_unc_120x30.gif" alt="logo_unc_120x30.gif"> 1 q& l# n2 C! _4 S4 W
正確的寫法:5 Q+ q: ~9 N4 ?7 w# Z1 P
$ @$ R. _2 V4 A9 X2 V
<img src="logo_unc_120x30.gif" alt="UNC公司標誌,點擊返回首頁"> ' k ]" ~. r! U' {
給所有屬性值加引號
: h/ G2 G8 [# Y; k在HTML中,你可以不需要給屬性值加引號,但是在XHTML中,它們必須被加引號。
0 \7 N3 g( Q3 O8 H0 i: T$ v& ]0 N2 y6 ~/ u( L/ w' Z( A# Z& x/ `
例:height="100",而不能是height=100。
# f8 f3 P; Q( x. M: y3 H! w8 ] \
關閉所有的標籤
& T/ w. D: E H) z4 P& t* w8 R在XHTML中,每一個打開的標籤都必須關閉。就像這樣:" p5 H1 L9 M; a) X7 s3 N
/ H/ m# w; R. e4 f1 o! d Q1 I
<p>每一個打開的標籤都必須關閉。</p> <b>HTML可以接受不關閉的標,XHTML就不可以。</b> 8 @# i" {) `! r+ j
這個規則可以避免HTML的混亂和麻煩。舉例來說:如果你不關閉圖像標籤,在一些瀏覽器中就可能出現CSS顯示問題。用這種方法能確保頁面和你設計的一樣顯示。需要說明的是:空標籤也要關閉,在標籤尾部使用一個正斜槓"/"來關閉它們自己。例如:) x9 d+ z0 r* W( T
* j# P' H. J$ Z- a<br /> <img src="webstandards.gif" /> 3 B2 f- U' Y9 i# {+ L" X" r* @
經過上述七個規則處理後,頁面就基本符合XHTML1.0的要求。但我們還需要校驗一下是否真的符合標準了。我們可以利用W3C提供免費校驗服務(http://validator.w3.org/)。發現錯誤後逐個修改。在後面的資源列表中我們也提供了其他校驗服務和對校驗進行指導的網址,可以作為W3C校驗的補充。當最後通過了XHTML驗證,恭喜你已經向網站標準邁出了一大步。不是想像中的那麼難吧!
8 A7 t! o- ?* H( W$ Q* P" {, w
# q) \' f7 H. P5 Q2 B! W2.中級改善' e8 g/ i/ N5 ~; L
接下來我們的改善主要在結構和表現相分離上,這一步不像第一步那麼容易實現,我們需要觀念上的轉變,以及對CSS2技術的學習和運用。但學習任何新知識都需要花點時間的,不是嗎?訣竅在於邊做邊學。假如你一直採用表格佈局,根本沒用過 CSS,也不必急於跟表格佈局說再見,你可以先用樣式表代替 font 標籤。隨著你學到的越多,你能做的就越多。好,一起來看看我們需要做哪些事:
3 R$ t6 d' i( v9 ^. t7 [( q- p6 z+ O, @5 P# D4 ~ t
用CSS定義元素外觀 * c# _$ p/ `6 C* O6 y
我們在寫標識時已經養成習慣,當希望字體大點就用<h1>,希望在前面加個點符號就用<li>。我們總是想<h1>的意思是大的,<li>的意思是圓點,<b>的意思是「加粗文本」。而實際上, <h1>能變成你想要的任何樣子,通過CSS,<h1>能變成小的字體,<p>文本能夠變成巨大的、粗體的,<li>能夠變成一張圖片等等。我們不能強迫用結構元素實現表現效果,我們應該使用CSS來確定那些元素的外觀。例如,我們可以使原來默認的6級標題可以看起來大小一樣:9 U: P9 @) _5 z
* A7 U f. `) w
h1, h2, h3, h4, h5, h6{ font-family: 細明體, serif; font-size: 12px; } % T- q. c) A& _) s
用結構化元素代替無意義的垃圾 ) V8 A4 }0 b% E" C. k* K5 ^7 u
許多人可能從來都不知道HTML和XHTML元素設計本意是用來表達結構的。我們很多人已經習慣用元素來控制表現,而不是結構。例如,一段列表內容可能會使用下面這樣的標識:& j6 |4 s c( ?
+ j, `* O% Q7 y3 p* O
句子一<br /> 句子二<br /> 句子三<br /> " A% x9 g D1 y0 q
如果我們採用一個無序列表代替會更好:9 Z/ S% E y8 [
, f. S8 ?9 l$ ` x. o% O+ H
<ul> <li>句子一</li> <li>句子二</li> <li>句子三</li> </ul>
0 K1 k( I" t9 f你或許會說「但是<li>顯示的是一個圓點,我不想用圓點」。事實上,CSS沒有設定元素看起來是什麼樣子,你完全可以用CSS關掉圓點。- e( J% c7 o% f
. }% w% M/ {, H/ V# u9 a0 A( `
給每個表格和表單加上id
; a( i% P0 `( Y' k" e給表格或表單賦予一個唯一的、結構的標記,例如. ^0 |7 u' d( {* U3 k( o$ o. n
1 m/ I. e$ P6 z9 ^5 f<table id="menu">
, `! i4 P" x0 ?0 W0 v M接下來,在書寫樣式表的時候,你就可以創建一個「menu」的選擇器,並且關聯一個CSS規則,用來告訴表格單元、文本標籤和所有其他元素怎麼去顯示。這樣,不需要對每個<td>標籤附帶一些多餘的、佔用帶寬的表現層的高、寬、對齊和背景顏色等等屬性。只需要一個附著的標記(標記「menu」的id標記),你就可以在一個分離的樣式表內為乾淨的、緊湊的代碼標記進行特別的表現層處理。
; f, o+ q% q$ ?! B& `4 q" `9 a
7 f `) W* k3 I7 D3 M4 S$ R中級改善我們這裡先列主要的三點,但其中包含的內容和知識點非常多,需要我們逐步學習和掌握,直到最後實現完全採用CSS而不才用任何表格實現佈局。 |
|