怎麼改善現有網站為xhtml+CSS結構——我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。' a3 b/ m1 o1 p1 \) a9 o! V
& }6 O- ?2 t6 P, h7 c% ~! E$ ^ W
0 R# l! V* i! C/ Y1 [8 N5 C 2 J* h9 D/ J! |/ ~8 \$ Z: @1 g
% V* c$ n, j: |5 x4 f
) X# N5 b1 F5 G5 z2 W' } # \) V& y6 a. I5 C1 P* C
. m* N$ ]' h7 ^6 d
CSS本身沒有直接提供變換HTML鏈接下劃線的功能,但只要運用一些技巧,我們還是可以讓單調的網頁鏈接下劃線變得豐富多彩。
: G& Z5 K& `% E' t) U$ _- F' z" y8 H# n+ Q. \% D1 v. X; P
一、基本原理 6 t7 w: N$ i) x- }+ A
首先,自定義HTML鏈接下劃線的第一步是創建一個圖形,在水平方向重複放置這個圖形即形成下劃線效果。如果要顯示出下劃線背後的網頁背景,可以使用透明的.gif圖形。3 h0 C [7 c! y) }' v/ e& w$ x" l' g
其次,如果下劃線圖形的高度較大,則必須適當增加文本的高度,使得一行文本的底部與下一行文本的頂部之間有較大的空間,例如p { line-height: 1.5; }。
0 r: @) d# ?9 _" @ c: g3 f) y) n( y0 o, ?, ^; M2 J
自定義鏈接下劃線示例
, w0 z3 g8 e5 s- r 第三,為顯示出自定義的下劃線,必須隱藏默認的下劃線,即a { text-decoration: none; }。
; f. }9 W/ E, k% R" [2 Q/ q 第四,為鏈接元素設置下劃線圖形,構造出自定義的下劃線。假設下劃線圖形是underline.gif,則設置下劃線圖形的CSS代碼為a { background-image: url(underline.gif); }。
9 I$ k& e* @8 u) b. o3 P' c6 t 第五,我們要讓下劃線圖形在水平方向反覆出現,但不能在垂直方向重複出現,否則它將被隱藏到文本的背後。要求下劃線只在水平方向重複出現的代碼為:a { background-repeat: repeat-x; }。. ^5 I s! O8 `4 k: @# f
第六,為保證圖形出現在鏈接文字的下方(不管字體的大小),用background-position屬性將圖形放在鏈接元素的底部。對於箭頭之類的下劃線圖形,可能還要考慮圖形在水平方向的對齊方向。假設要將下劃線圖形放在右下角,CSS代碼為:a { background-position: 100% 100%; }。
6 s: N5 Y9 ]# X d/ w' h) N 第七,為了在鏈接文本的下方給自定義圖形留出空間,必須加入適當的空白。下劃線圖形相對於鏈接文字的具體位置與文字的大小有關,但一般而言,可以先讓底部空白等於下劃線圖形的高度,必要時再作調整。例如:a { padding-bottom: 4px; }。2 C- h0 P: S4 l8 v; a, x
第八,由於下劃線圖形放在鏈接元素的底部,必須保證鏈接不折行(如允許鏈接跨越多個行,則只有下面一行的鏈接文本下面會有自定義的下劃線)。用CSS的white-space屬性可以防止鏈接文字折行,即a { white-space: nowrap; }。, h) n* U# L! f+ v* M
綜上所述,為鏈接元素定義CSS樣式屬性的完整例子如:
8 \) z1 d2 Q0 {, _8 C) U a {! n9 `+ Z# C7 D3 t8 ~
text-decoration: none;
( N4 w9 d& U7 q0 {* l8 H1 a background: url(underline.gif) repeat-x 100% 100%; f2 u+ ? j! S1 K) |
padding-bottom: 4px;# W) E. D5 [8 Q+ q& X
white-space: nowrap;/ ^+ z5 s( s7 u9 s- H( n. ^7 w7 u
} & w8 {1 V! e, o! o
: _5 k, Z/ ]: E& s' `, O( x 如果要讓自定義下劃線只在鼠標停留時出現,只要把原來直接設置在鏈接元素上的CSS background屬性改到:hover ,例如:
! R3 }+ r; Z Q& ] a {
1 { L, _7 _4 Q1 V text-decoration: none;4 r/ l6 ]- |- e& F+ O
padding-bottom: 4px;2 T0 ?% W% g! W: P
white-space: nowrap;
, t: f7 z& B3 s, n }
- M$ v; z0 o( v8 [9 b: y5 u) D9 ?- i3 o a:hover {
, K/ I d& y) A. W/ a background: url(underline.gif) repeat-x 100% 100%;8 c# ~" A# l5 N
}
/ z" _, X5 M f9 e
o0 o! F( |" e# [ 二、實例欣賞 `! k$ i" m7 W+ A1 {; u
假設有兩個下劃線圖形diagonal.gif(波紋線)、flower.gif(花朵)前者的高、寬是3、9,後者的高、寬是11、15。下面是一個設置兩種下劃線的完整實例:& D( s) D$ X: E! L
- t. x. b: B9 E3 |1 L0 r5 |! ]自定義鏈接下劃線舉例8 K- |8 X6 _4 h5 d' C& C5 V
網頁源代碼如下:
/ K" q- V, }2 _; F8 p2 I g9 m 註:diagonal.gif 和 flower.gif已經先拷貝到網頁所在的同一目錄下。6 J9 N4 R' O4 n: M" H) h' P1 k( ]
<html>7 m% x- X: H* `; D
<head>
5 [, S( ^$ t4 n: o1 o <title>ex</title>/ ?. I# x2 j7 R
<style type="text/css">
+ M7 X/ s; g: J5 f/ k: s a#example1a {
}6 y2 @4 M$ A4 ?4 G: g6 C) i text-decoration: none;) C. O0 @- `: o4 Y8 J8 N
background: url(diagonal.gif) repeat-x 100% 100%;8 a8 u3 t$ t% e7 d: j
white-space: nowrap;4 q, E7 J" `' {! c X9 {
padding-bottom: 2px;
/ t3 O. T/ t) _& C1 u) e }+ i8 W2 U3 }. t/ A0 k0 M0 {
a#example1b {
! e; m4 I8 k9 f/ c1 ~ text-decoration: none;
. |# l+ f' X/ D white-space: nowrap;) y V6 G3 J: z7 @7 M
padding-bottom: 2px;
9 f' l- {: B) Q6 @7 I }
* J" P/ @/ i; j/ n; F2 i a#example1b:hover {
0 M3 G+ i/ C) H; E( p+ l* E background: url(diagonal.gif) repeat-x 100% 100%; V. @- \# G8 f' x2 }1 \# N4 ^9 o
}& v3 _6 ?' v3 h' D5 m
a#example2a {
0 S/ l# d' o! t text-decoration: none;: F$ n- f1 B: L2 d6 ~- i
background: url(flower.gif) repeat-x 100% 100%;
/ d: ?) b# @ \. e J; X1 k1 p- d white-space: nowrap;, l' ]( R7 `7 h) ?4 X
padding-bottom: 10px;
' J7 k, K' i, t) A k3 @7 [! g1 L }( l( i3 t* ]1 X# ^
a#example2b {. N" E0 c1 Q2 J* }& v
text-decoration: none;, w! B+ a. f4 _- p* v
white-space: nowrap;
o$ Z9 s b/ M; M8 _6 H$ j0 O+ Z padding-bottom: 10px;5 l# X( Y' {; n% B. w
}
0 O: b% g. z B# { a#example2b:hover {" |( K g. R7 @+ }- W- Z, U7 J
background: url(flower.gif) repeat-x 100% 100%;: U1 O; w% J2 e- _0 k+ O2 u
}
& W/ P& j9 Z- y7 J -->
0 O, ~8 E7 v) g </style>
) F9 S( v3 H% O5 F! x2 d! U </head>
9 w7 k+ E; q. G" q, }, L <body> q' a- ^( ^* r& S- H4 }
<p>實例:</p>
4 h( J" K c; _; r& A2 \ <p> <a href="#" id="example1a">波紋線靜態下劃線</a>,3 B# F m$ V+ [0 @
<a href="#" id="example1b">鼠標停留時出現的波紋線</a>。</p>: b+ l$ S0 ]' `: _. u
<p> <a href="#" id="example2a">花朵靜態下劃線</a>,
3 b; O8 i- k3 x <a href="#" id="example2b">鼠標停留時出現的花朵下劃線</a>。</p>
' C8 x, e2 |7 l1 [ </body>" K. t% Q7 {. q: O) L- _
</html> |