怎麼改善現有網站為xhtml+CSS結構——我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。' q0 D2 @! Z* ~. l4 R' K
6 O8 E: ^# j% N& u* m% h$ G
1 l' l x( b; I" J3 k% @" _
7 ?+ v9 C! K1 s, v" v; p7 w8 t
& W9 g' X0 _0 D, H$ @% B8 [- X9 [+ [
; N" P% D+ V8 e. w1 G! l1 A- X2 b2 }6 j
4 ^; t6 N2 c7 c. x $ H* E1 U9 h8 v
CSS本身沒有直接提供變換HTML鏈接下劃線的功能,但只要運用一些技巧,我們還是可以讓單調的網頁鏈接下劃線變得豐富多彩。 + G9 F. W/ n" W9 j
4 i T m8 m$ _! ` `7 n8 r; m% J
一、基本原理 # r4 }# `3 H0 N7 o, i3 t. K) {7 s
首先,自定義HTML鏈接下劃線的第一步是創建一個圖形,在水平方向重複放置這個圖形即形成下劃線效果。如果要顯示出下劃線背後的網頁背景,可以使用透明的.gif圖形。
, L5 I% Z% o; G# P& e# @8 ?. N 其次,如果下劃線圖形的高度較大,則必須適當增加文本的高度,使得一行文本的底部與下一行文本的頂部之間有較大的空間,例如p { line-height: 1.5; }。
% u; d5 k1 z( v* R9 s/ H" P3 M5 u. f( O& c" n5 h1 J* ?
自定義鏈接下劃線示例. j, w6 X+ ?+ K+ T/ w" W
第三,為顯示出自定義的下劃線,必須隱藏默認的下劃線,即a { text-decoration: none; }。 l* P L' ~. x5 {
第四,為鏈接元素設置下劃線圖形,構造出自定義的下劃線。假設下劃線圖形是underline.gif,則設置下劃線圖形的CSS代碼為a { background-image: url(underline.gif); }。6 k: l9 F* j: I( \
第五,我們要讓下劃線圖形在水平方向反覆出現,但不能在垂直方向重複出現,否則它將被隱藏到文本的背後。要求下劃線只在水平方向重複出現的代碼為:a { background-repeat: repeat-x; }。/ f) ~, H9 `. j E# O, r
第六,為保證圖形出現在鏈接文字的下方(不管字體的大小),用background-position屬性將圖形放在鏈接元素的底部。對於箭頭之類的下劃線圖形,可能還要考慮圖形在水平方向的對齊方向。假設要將下劃線圖形放在右下角,CSS代碼為:a { background-position: 100% 100%; }。
2 L6 ?# A; V5 O1 Q' [3 G+ ` 第七,為了在鏈接文本的下方給自定義圖形留出空間,必須加入適當的空白。下劃線圖形相對於鏈接文字的具體位置與文字的大小有關,但一般而言,可以先讓底部空白等於下劃線圖形的高度,必要時再作調整。例如:a { padding-bottom: 4px; }。3 p! U. ]8 I, \5 @8 ]
第八,由於下劃線圖形放在鏈接元素的底部,必須保證鏈接不折行(如允許鏈接跨越多個行,則只有下面一行的鏈接文本下面會有自定義的下劃線)。用CSS的white-space屬性可以防止鏈接文字折行,即a { white-space: nowrap; }。
, Q" N; _/ Q- o: p9 g. T 綜上所述,為鏈接元素定義CSS樣式屬性的完整例子如:/ O+ X% y0 p6 W1 d! k3 G
a {' u* U( _) J3 @" ^4 d
text-decoration: none;
6 s( ?+ q4 M0 H background: url(underline.gif) repeat-x 100% 100%;
0 k, ] [* D) [ padding-bottom: 4px;0 g0 e j6 A2 S# O1 C5 I
white-space: nowrap;
) z, P8 z: j5 o$ _' ^ } 7 D% U2 P) `9 \+ M" ~
1 w& j+ Y8 \7 S. x( a. K# a( E
如果要讓自定義下劃線只在鼠標停留時出現,只要把原來直接設置在鏈接元素上的CSS background屬性改到:hover ,例如:* U2 J& |5 [7 E# J+ \; p, }3 r
a {) j4 M! }& C1 w7 W4 _- t! l
text-decoration: none;0 L5 x4 W& `+ [1 m' U
padding-bottom: 4px;# W ?+ d4 e+ @0 j4 q
white-space: nowrap;
: E" w* V# s, L* P+ d: g6 P* Q }# s1 z) L* X' j0 x4 v
a:hover {4 A6 p6 p: l/ E I: u
background: url(underline.gif) repeat-x 100% 100%;
" ~3 y1 v# G+ k& ~! e8 E }
0 `1 n5 q7 `5 `$ k2 f7 F! Y z$ U6 C
二、實例欣賞 ( T+ [4 o; D" q5 Z1 R
假設有兩個下劃線圖形diagonal.gif(波紋線)、flower.gif(花朵)前者的高、寬是3、9,後者的高、寬是11、15。下面是一個設置兩種下劃線的完整實例:
: w; n. _; Z* e1 w1 j# O- Q3 L" U1 `1 M6 W$ E( t3 n
自定義鏈接下劃線舉例: P- m* q9 p1 C8 ?+ t8 T! ^ e
網頁源代碼如下:
( u& D: y/ x* u 註:diagonal.gif 和 flower.gif已經先拷貝到網頁所在的同一目錄下。* {$ s* M, I4 P- t7 b% M; y F
<html>; ^) g8 A) H6 I- I. M9 [5 ~
<head>: U! Z7 A) u+ C, S8 a. d9 M
<title>ex</title>
; ~; y8 v3 }" _1 z2 z/ P& _ <style type="text/css">, I9 W0 G7 d3 h+ o' l Z7 O
a#example1a {
& B* X& h- U5 Z/ ^ text-decoration: none;! ^- f* }, W: O9 \, ~) s+ Q
background: url(diagonal.gif) repeat-x 100% 100%;
6 e( O! M, X) W8 K% m+ n white-space: nowrap;% }5 ^0 v1 O- G7 \* ^" v% ?& Q
padding-bottom: 2px;
Y3 C2 z5 }9 I1 p; ] }
5 I* s% i) D1 V a#example1b {% S: D9 b$ `5 R7 s
text-decoration: none;7 D( b d( `0 a+ `' a
white-space: nowrap;
# ^5 e) T# \) F8 A9 ^8 s padding-bottom: 2px;
. ]9 A" s. B) r( a }
9 y/ u2 v( \" C( v/ _ a#example1b:hover {8 {5 ~ I6 a+ ^7 F( L
background: url(diagonal.gif) repeat-x 100% 100%;
+ O" E6 ~2 ~2 ^; j! l0 {. l }/ w3 R7 z8 H4 O9 E/ p s
a#example2a {
$ L9 A Z& T+ ]; T text-decoration: none;
( L/ g- v2 {2 O: m( a0 U background: url(flower.gif) repeat-x 100% 100%; c2 H, [$ Q# i
white-space: nowrap;
$ n! j, i0 u# V. V& v+ H" G padding-bottom: 10px;
9 `1 |" I# D: K8 U }; o$ W0 O- K, C' `7 W
a#example2b {1 x3 N$ p/ [' p& G( s+ r$ E
text-decoration: none;/ [6 m" [$ g! t- N. u- r
white-space: nowrap;
' s) C0 G; j+ r8 t: H padding-bottom: 10px;* o1 d' O2 u6 W, b+ W- u
}* Z5 u1 C$ L2 ]. K3 e
a#example2b:hover {. h4 @0 l. t) s2 Z. d; ]+ y' T' {, B, ]
background: url(flower.gif) repeat-x 100% 100%;8 j8 [6 g- A, m" q7 S; Z
}
/ G* z W) U+ [- W; g -->* q2 V: h8 p( A
</style>, k: t$ ~6 z9 V. v% {
</head>5 j p8 l# F- r. Y
<body>2 J& q: B8 y6 w& N
<p>實例:</p>! `0 h; i' `9 R" o3 c7 D
<p> <a href="#" id="example1a">波紋線靜態下劃線</a>,
. H$ j' n- y8 v2 D/ Q* q1 G <a href="#" id="example1b">鼠標停留時出現的波紋線</a>。</p>6 h2 |$ v) v& m' R( I, n
<p> <a href="#" id="example2a">花朵靜態下劃線</a>,
' j' R# p* y2 S. _2 }: _) r <a href="#" id="example2b">鼠標停留時出現的花朵下劃線</a>。</p>
# Z5 U/ a% Q# F* n </body>- i- G- @* t/ R" B, r# Q9 \
</html> |