过期域名预定抢注

 找回密碼
 免费注册

怎麼改善現有網站為xhtml+CSS結構

  [複製鏈接]
發表於 2006-8-10 20:08:48 | 顯示全部樓層 |閱讀模式
我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。學習使用XHTML+CSS的方法需要一個過程,使現有網站符合網站標準也不可能一步到位。最好的方法是循序漸進,分階段來逐步達到完全符合網站標準的目標。如果你是新手,或者對代碼不是很熟悉,也可以採用遵循標準的編輯玩具,例如Dreamweaver MX 2004,它是目前支持CSS標準最完善的玩具。/ T' \' Q  d7 n( u3 a

2 U- C( ^1 _+ o0 q1.初級改善( u7 \5 F0 s7 G* `8 C) y
為頁面添加正確的DOCTYPE
9 O# S5 Q! x" x+ }0 t3 O' Z很多設計師和開發者都不知道什麼是DOCTYPE,DOCTYPE有什麼用。DOCTYPE是document type的簡寫。主要用來說明你用的XHTML或者HTML是什麼版本。瀏覽器根據你DOCTYPE定義的DTD(文檔類型定義)來解釋頁面代碼。所以,如果你不注意設置了錯誤的DOCTYPE,結果會讓你大吃一驚。XHTML1.0提供了三種DOCTYPE可選擇:5 C1 C, S1 U8 O. L8 L& d: j2 z
( e+ |  T7 A7 E* y
(1)過渡型(Transitional )9 Y4 e# i  ?- l" `0 F4 f

/ x2 {2 P" w- \% U<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- I1 l! A2 r0 f(2)嚴格型(Strict )! a* Z$ R5 _% W9 ]* ~0 g
: ^4 V, t) `4 _& q4 J) w" t
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 5 z2 r# M3 O. r( J5 Q5 \5 M
(3)框架型(Frameset )
6 f* q* e! X. a  G/ \+ U. L7 @  B- N, ]( Z
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
! d" C8 G5 A1 |/ N對於我們初級改善來說,只要選用過渡型的聲明就可以了。它依然可以兼容你的表格佈局、表現標識等,不至於讓你覺得變化太大,難以掌握。
' h: a+ o# d1 s1 j* U
$ M: D& u( X; A9 T# t+ f' t! ^Tip:你懶得輸入上面過渡型代碼的話,可以訪問http://www.macromedia.com/網站的首頁,然後查看源代碼,把head區同樣的代碼拷貝粘貼就可以了。
- `# D! ]1 Z+ s7 ~; |2 [1 \+ J
' d  T' i/ p9 ?+ X2 m/ C. H設定一個名字空間(Namespace)
  o# m% ~* ?) q直接在DOCTYPE聲明後面添加如下代碼:& v/ s: f8 C* z5 L6 c
! |8 t6 V& u: N! E0 |& }
<html XMLns="http://www.w3.org/1999/xhtml" > # i% i# B8 C: }' [. [+ ~% G2 `" o  r9 x
一個namespace是收集元素類型和屬性名字的一個詳細的DTD,namespace聲明允許你通過一個在線地址指向來識別你的namespace。只要照樣輸入代碼就可以。
: n( V- p8 F2 o; Y% \0 |5 }/ D" \# z5 ~
聲明你的編碼語言
+ x9 K: C0 T8 Y( H0 y為了被瀏覽器正確解釋和通過標識校驗,所有的XHTML文檔都必須聲明它們所使用的編碼語言。代碼如下:4 E- D8 d  E. Y! M

8 W/ k& A/ C2 u7 W( k<meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> 3 D& b+ E0 f8 C, T8 [( [; Z7 {' V
這裡聲明的編碼語言是簡體中文GB2312,你如果需要製作繁體內容,可以定義為BIG5。+ U8 r( K; v' Y2 K1 z, X

1 t( |0 P! o- M. s用小寫字母書寫所有的標籤 4 |7 o& b5 l- ^. X" f! Q+ p
XML對大小寫是敏感的,所以,XHTML也是大小寫有區別的。所有的XHTML元素和屬性的名字都必須使用小寫。否則你的文檔將被W3C校驗認為是無效的。例如下面的代碼是不正確的:
( P4 C9 u# ?+ F$ Z; x8 y
" Q8 ^+ J1 c) W+ r5 H4 X<TITLE>公司簡介</TITLE>
* J7 `5 x1 W6 {" F1 [+ N, z& a正確的寫法是:
9 T- C" D& A/ ^/ B7 W- P* [
8 \( m( m+ ~, g: p9 t* [<title>公司簡介</title> 同樣的,<P>改成<p>,<B>改成<b>等等。這步轉換很簡單。
2 ~/ l. v+ ^+ m  Z9 ~7 J為圖片添加 alt 屬性 " e8 m# t5 s6 b  ?. f7 h/ x  I
為所有圖片添加alt屬性。alt屬性指定了當圖片不能顯示的時候就顯示供替換文本,這樣做對正常用戶可有可無,但對純文本瀏覽器和使用屏幕閱讀機的用戶來說是至關重要的。只有添加了alt屬性,代碼才會被W3C正確性校驗通過。注意的是我們要添加有意義的alt屬性,像下面這樣的寫法毫無意義:
9 z9 x" ?3 i$ K. e1 _$ C- J% b  k9 L9 z* X  C/ l& L
<img src="logo_unc_120x30.gif" alt="logo_unc_120x30.gif">
; C" R+ Y  ~+ i. e" q# e: N正確的寫法:2 ^8 I" j& B. f' v! j. e
5 I5 `! t, T6 `4 k: s
<img src="logo_unc_120x30.gif" alt="UNC公司標誌,點擊返回首頁"> : ?% X  N7 ^+ ?  F6 Z
給所有屬性值加引號 . H$ F; q* x9 H0 g2 n1 Q
在HTML中,你可以不需要給屬性值加引號,但是在XHTML中,它們必須被加引號。
( W# y) l: Y8 e6 \2 r
: t- _9 c5 n" `. D. X: v5 s+ i例:height="100",而不能是height=100。
, _; X. y2 \- I; w: P2 Y! J8 u% E9 a1 ]& Q- c, ^. H. Y6 [8 J8 [6 u
關閉所有的標籤
" `9 e4 [: j/ g4 F1 z9 o在XHTML中,每一個打開的標籤都必須關閉。就像這樣:
4 G! f( a3 C( _, D
7 ^$ R5 E: J. R; Q+ R& l<p>每一個打開的標籤都必須關閉。</p> <b>HTML可以接受不關閉的標,XHTML就不可以。</b>   {% B$ u' M7 g- S' u
這個規則可以避免HTML的混亂和麻煩。舉例來說:如果你不關閉圖像標籤,在一些瀏覽器中就可能出現CSS顯示問題。用這種方法能確保頁面和你設計的一樣顯示。需要說明的是:空標籤也要關閉,在標籤尾部使用一個正斜槓"/"來關閉它們自己。例如:
( c3 @3 I. A6 T: w, M7 T; O- p% d1 I. R7 R: f: q+ h
<br /> <img src="webstandards.gif" /> * o8 J0 I, Q9 C5 B/ j
經過上述七個規則處理後,頁面就基本符合XHTML1.0的要求。但我們還需要校驗一下是否真的符合標準了。我們可以利用W3C提供免費校驗服務(http://validator.w3.org/)。發現錯誤後逐個修改。在後面的資源列表中我們也提供了其他校驗服務和對校驗進行指導的網址,可以作為W3C校驗的補充。當最後通過了XHTML驗證,恭喜你已經向網站標準邁出了一大步。不是想像中的那麼難吧!1 Y( A$ q" P* G3 Z& v" w: T) d
5 G/ X" ^2 A8 P2 u
2.中級改善
2 Q8 V5 `4 ~+ U9 m0 `! E, F接下來我們的改善主要在結構和表現相分離上,這一步不像第一步那麼容易實現,我們需要觀念上的轉變,以及對CSS2技術的學習和運用。但學習任何新知識都需要花點時間的,不是嗎?訣竅在於邊做邊學。假如你一直採用表格佈局,根本沒用過 CSS,也不必急於跟表格佈局說再見,你可以先用樣式表代替 font 標籤。隨著你學到的越多,你能做的就越多。好,一起來看看我們需要做哪些事:
( }* m% y0 x! Q7 U, ]1 z6 I
: i% `# M! s# v1 k1 K+ l* h! A8 [4 }用CSS定義元素外觀
& y: U0 E) ]$ Y9 }; C# `我們在寫標識時已經養成習慣,當希望字體大點就用<h1>,希望在前面加個點符號就用<li>。我們總是想<h1>的意思是大的,<li>的意思是圓點,<b>的意思是「加粗文本」。而實際上, <h1>能變成你想要的任何樣子,通過CSS,<h1>能變成小的字體,<p>文本能夠變成巨大的、粗體的,<li>能夠變成一張圖片等等。我們不能強迫用結構元素實現表現效果,我們應該使用CSS來確定那些元素的外觀。例如,我們可以使原來默認的6級標題可以看起來大小一樣:
5 a: a$ b& K2 s% R5 _  v6 E; X3 M7 l( G: c6 w
h1, h2, h3, h4, h5, h6{ font-family: 細明體, serif; font-size: 12px; }
) B+ @/ ]; ~" R' G' D+ T( S3 W/ q用結構化元素代替無意義的垃圾 4 n9 {4 P* P& d; n: w) H" e
許多人可能從來都不知道HTML和XHTML元素設計本意是用來表達結構的。我們很多人已經習慣用元素來控制表現,而不是結構。例如,一段列表內容可能會使用下面這樣的標識:
% w, t5 n6 c8 J
' h2 ^3 D: Z) l  {: D* E. W' l句子一<br /> 句子二<br /> 句子三<br /> 1 `8 b- F9 s5 M6 u8 I
如果我們採用一個無序列表代替會更好:
0 p2 @. m0 d4 A3 n. R; C' k; B5 t
0 K8 D1 r! o3 F% {* M' p<ul> <li>句子一</li> <li>句子二</li> <li>句子三</li> </ul>
* o* \3 ^. p8 |, q% P你或許會說「但是<li>顯示的是一個圓點,我不想用圓點」。事實上,CSS沒有設定元素看起來是什麼樣子,你完全可以用CSS關掉圓點。# o2 c$ M" U& a1 t/ q1 a6 j  N
' z& N$ V2 j* `" B
給每個表格和表單加上id
+ _% l7 r+ Z7 z5 g. m- u給表格或表單賦予一個唯一的、結構的標記,例如
4 f! \" k) u! ^4 U7 ]2 L3 a2 z; I
<table id="menu"> * ~4 X9 u8 I& Z' `
接下來,在書寫樣式表的時候,你就可以創建一個「menu」的選擇器,並且關聯一個CSS規則,用來告訴表格單元、文本標籤和所有其他元素怎麼去顯示。這樣,不需要對每個<td>標籤附帶一些多餘的、佔用帶寬的表現層的高、寬、對齊和背景顏色等等屬性。只需要一個附著的標記(標記「menu」的id標記),你就可以在一個分離的樣式表內為乾淨的、緊湊的代碼標記進行特別的表現層處理。
: ~0 A+ Z+ w: e) |( o% |9 j4 s1 J/ c, Q: w2 q2 X
中級改善我們這裡先列主要的三點,但其中包含的內容和知識點非常多,需要我們逐步學習和掌握,直到最後實現完全採用CSS而不才用任何表格實現佈局。
 樓主| 發表於 2006-8-10 20:10:19 | 顯示全部樓層
怎麼改善現有網站為xhtml+CSS結構——我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。1 _- n& |" D( W* H

/ ]6 b2 P$ [' C) F' i7 v3 m & X' O4 I2 d, c& B; ]2 u! b8 ~
3 f% e- S* e2 s: b4 q
9 {4 X' [# G6 }. S4 [

3 H# n8 u) G" [0 m% ^/ ]' L # u) z8 p- ~3 w+ x7 \: P# S

1 R; X& B! Z1 o( S7 S% \CSS本身沒有直接提供變換HTML鏈接下劃線的功能,但只要運用一些技巧,我們還是可以讓單調的網頁鏈接下劃線變得豐富多彩。 & ]! U5 `& Y3 F; I. T

8 A) Y2 K! J; V  一、基本原理
" W. }( L9 a2 S# U  首先,自定義HTML鏈接下劃線的第一步是創建一個圖形,在水平方向重複放置這個圖形即形成下劃線效果。如果要顯示出下劃線背後的網頁背景,可以使用透明的.gif圖形。7 G; }+ j8 z: x6 R
  其次,如果下劃線圖形的高度較大,則必須適當增加文本的高度,使得一行文本的底部與下一行文本的頂部之間有較大的空間,例如p { line-height: 1.5; }。
& G. y. @! o1 w# k- y, j# a% S( F/ i5 j3 L
自定義鏈接下劃線示例
3 o$ ]+ R  X) }2 B! g  第三,為顯示出自定義的下劃線,必須隱藏默認的下劃線,即a { text-decoration: none; }。* N5 E& _) e/ t$ |
  第四,為鏈接元素設置下劃線圖形,構造出自定義的下劃線。假設下劃線圖形是underline.gif,則設置下劃線圖形的CSS代碼為a { background-image: url(underline.gif); }。+ o, s2 O6 e& I6 M+ y
  第五,我們要讓下劃線圖形在水平方向反覆出現,但不能在垂直方向重複出現,否則它將被隱藏到文本的背後。要求下劃線只在水平方向重複出現的代碼為:a { background-repeat: repeat-x; }。0 `0 b0 a6 F. g1 [$ g5 \, q
  第六,為保證圖形出現在鏈接文字的下方(不管字體的大小),用background-position屬性將圖形放在鏈接元素的底部。對於箭頭之類的下劃線圖形,可能還要考慮圖形在水平方向的對齊方向。假設要將下劃線圖形放在右下角,CSS代碼為:a { background-position: 100% 100%; }。
6 z: o3 H. j( s9 S# `  第七,為了在鏈接文本的下方給自定義圖形留出空間,必須加入適當的空白。下劃線圖形相對於鏈接文字的具體位置與文字的大小有關,但一般而言,可以先讓底部空白等於下劃線圖形的高度,必要時再作調整。例如:a { padding-bottom: 4px; }。
/ N3 I0 y7 O' Y+ o" Y7 a  第八,由於下劃線圖形放在鏈接元素的底部,必須保證鏈接不折行(如允許鏈接跨越多個行,則只有下面一行的鏈接文本下面會有自定義的下劃線)。用CSS的white-space屬性可以防止鏈接文字折行,即a { white-space: nowrap; }。
4 d3 A+ x6 @  W  M0 B  綜上所述,為鏈接元素定義CSS樣式屬性的完整例子如:
7 {( Z' M$ F1 P- }0 o  a {2 _. {  i2 \2 ~; q% Q; Y
   text-decoration: none;
- X. n: [6 q$ E9 Q8 V- }   background: url(underline.gif) repeat-x 100% 100%;
0 g+ `0 U4 i( \6 o) E6 p" V   padding-bottom: 4px;4 g" ^) }9 V! R8 ~5 }/ c  z. N
   white-space: nowrap;
( K$ J$ o4 X, |9 Q- b: Y( n3 P7 s  } $ t) k' ~6 }  Z

4 a" ?5 M) F+ D, _- |  如果要讓自定義下劃線只在鼠標停留時出現,只要把原來直接設置在鏈接元素上的CSS background屬性改到:hover ,例如:
2 J! D, N, W% {8 z, C2 U$ ~  a {: `; d/ a& [7 [1 s2 R: I! R
   text-decoration: none;( v' A7 D8 }7 J) V( c. u0 C
   padding-bottom: 4px;
% A9 a: A) Y  \. x  V" t4 N4 v/ \; @   white-space: nowrap;$ j6 z9 y2 ]- \5 Y5 X$ m' @( d
  }
4 x+ I& v( K+ N; i! n" a+ ?  a:hover {
( C1 s' `3 v( b& S) r: W   background: url(underline.gif) repeat-x 100% 100%;5 {4 g# l( l  ~
  }" O8 w+ n5 R2 ]7 W" z0 b

5 Z) x9 C1 l4 F2 p# w  二、實例欣賞   a+ O2 o, n# o# @. G# N% N* r  l
  假設有兩個下劃線圖形diagonal.gif(波紋線)、flower.gif(花朵)前者的高、寬是3、9,後者的高、寬是11、15。下面是一個設置兩種下劃線的完整實例:/ I# z0 t2 n( i& o3 B
' e$ W- @  ?/ a4 J7 ~% |$ f) I
自定義鏈接下劃線舉例; O' j& X3 G/ I0 [
  網頁源代碼如下:
' m4 V& f) j  G3 y0 ~  註:diagonal.gif 和 flower.gif已經先拷貝到網頁所在的同一目錄下。8 k. p( _# d. k
  <html>
/ U( F! n% w% O3 |( D  <head>
0 B/ m* a+ r8 Y3 Z3 z7 y3 g  <title>ex</title>6 q& P+ z+ ~7 H- j) G
  <style type="text/css">
1 w' P9 d/ q' H& U9 ^  a#example1a {0 ]+ o! l3 D& [$ n
    text-decoration: none;
8 w: ?& f% T  z+ l( e' |8 l    background: url(diagonal.gif) repeat-x 100% 100%;5 _2 n, D- Q+ O3 Z$ k
    white-space: nowrap;
6 Q7 ]; F0 e8 {- q! E    padding-bottom: 2px;
0 t' [! M/ g' [2 y. `7 H+ V    }
; r8 G% [; u6 c+ Z! R  a#example1b {- `- l& d0 ]6 s) O9 s+ D
    text-decoration: none;
+ T( \7 k9 j: ?# ^! J  @    white-space: nowrap;
- P' @4 V) \0 S3 N    padding-bottom: 2px;# x* u* k. A7 U1 w
    }
0 x" f4 ^' }; t0 u  a#example1b:hover {
6 u5 A" g! }4 H! R- O    background: url(diagonal.gif) repeat-x 100% 100%;& a7 C, Y, K7 N0 `
    }
& Q3 u6 B6 M) \. |; q! F  \$ L  a#example2a {
! m- y, z3 K- c9 o5 z. d    text-decoration: none;
  `2 f$ Y0 o/ u! X1 o1 P    background: url(flower.gif) repeat-x 100% 100%;
1 m1 d* a8 o* u" I8 A& `% c    white-space: nowrap;
- V' a3 |7 A) t  i9 o3 I! u) d    padding-bottom: 10px;
: H1 R0 G3 Z/ h! _0 h) |, ?    }+ C/ b- a; f( b0 B, z8 K$ J
  a#example2b {
( K; ^! o" U' B    text-decoration: none;
1 c+ d9 J( K  W# }: ?" i1 ~  P! K    white-space: nowrap;
* o( F8 |1 p; E  ]" i( W" _$ v    padding-bottom: 10px;
8 [+ V1 o4 ]; U/ v- O    }& F/ a$ Q& s) x+ @6 v, ^  q: l3 U
  a#example2b:hover {1 k! u+ P6 D8 M" V5 @! `
    background: url(flower.gif) repeat-x 100% 100%;" Q4 p& B0 x; s
    }
/ J5 |% ^0 I# G  }1 r  -->
) ^" q! H' X. {/ z: D/ b, J( c3 `! }  </style>9 N! H$ G6 R, X4 y. k
  </head>* D* _" r! M, m' G" k2 f
  <body>
1 W& {0 X; X) [/ l% i  <p>實例:</p>
" X, ?& S$ J+ M1 X8 Y  ^" U+ O  <p> <a href="#" id="example1a">波紋線靜態下劃線</a>,: A2 Y" J. ~- q0 R6 {6 g
  <a href="#" id="example1b">鼠標停留時出現的波紋線</a>。</p>
- R" M* ?- c0 \7 t6 g  <p> <a href="#" id="example2a">花朵靜態下劃線</a>,
% @) G. x( s* J1 a; O! c9 x  <a href="#" id="example2b">鼠標停留時出現的花朵下劃線</a>。</p>
4 u1 Y! M6 t" N  x# i- T  </body># M) b, v7 k5 k, \0 e
  </html>
回復 给力 爆菊

使用道具 舉報

發表於 2006-8-10 20:25:39 | 顯示全部樓層
再多點,繼續啊。最近正用GOLIVE做div方面的東東。s
回復 给力 爆菊

使用道具 舉報

發表於 2006-9-18 15:09:37 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復 给力 爆菊

使用道具 舉報

發表於 2011-9-8 11:38:35 | 顯示全部樓層
太複雜了,學習一下,支持支持
回復 给力 爆菊

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基

GMT+8, 2026-6-16 10:21

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表