怎麼改善現有網站為xhtml+CSS結構——我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。
]( E4 R; x, P/ P9 ]# p* h2 S : U, t% o: t9 j5 i
5 L7 e; C) |6 W* P / A, ~" | K: y$ I9 q
, l6 W6 E, i: ]6 ` * h8 H; d4 f/ @( M, } `2 [( V
1 a) B% [3 X Y9 L2 i, U
2 A" E0 j% [0 v8 P+ oCSS本身沒有直接提供變換HTML鏈接下劃線的功能,但只要運用一些技巧,我們還是可以讓單調的網頁鏈接下劃線變得豐富多彩。 # h0 D }' }/ r, c- u
2 q# Z2 [$ c8 z 一、基本原理
5 V4 L8 ?" }7 o- B3 g 首先,自定義HTML鏈接下劃線的第一步是創建一個圖形,在水平方向重複放置這個圖形即形成下劃線效果。如果要顯示出下劃線背後的網頁背景,可以使用透明的.gif圖形。) l* g$ }% z) f4 i
其次,如果下劃線圖形的高度較大,則必須適當增加文本的高度,使得一行文本的底部與下一行文本的頂部之間有較大的空間,例如p { line-height: 1.5; }。
2 E) L/ Y; u4 }( V$ e% g
- r5 [1 E, y( R4 \( h# f自定義鏈接下劃線示例7 T# c2 c. H# j+ n* r
第三,為顯示出自定義的下劃線,必須隱藏默認的下劃線,即a { text-decoration: none; }。
) m6 X O5 L4 U& k, O 第四,為鏈接元素設置下劃線圖形,構造出自定義的下劃線。假設下劃線圖形是underline.gif,則設置下劃線圖形的CSS代碼為a { background-image: url(underline.gif); }。3 Q* R8 C" O8 y4 C
第五,我們要讓下劃線圖形在水平方向反覆出現,但不能在垂直方向重複出現,否則它將被隱藏到文本的背後。要求下劃線只在水平方向重複出現的代碼為:a { background-repeat: repeat-x; }。; ~4 K% l; t' j9 Y/ B
第六,為保證圖形出現在鏈接文字的下方(不管字體的大小),用background-position屬性將圖形放在鏈接元素的底部。對於箭頭之類的下劃線圖形,可能還要考慮圖形在水平方向的對齊方向。假設要將下劃線圖形放在右下角,CSS代碼為:a { background-position: 100% 100%; }。5 I9 V3 @# J6 v% O' J( b
第七,為了在鏈接文本的下方給自定義圖形留出空間,必須加入適當的空白。下劃線圖形相對於鏈接文字的具體位置與文字的大小有關,但一般而言,可以先讓底部空白等於下劃線圖形的高度,必要時再作調整。例如:a { padding-bottom: 4px; }。
2 ?$ M s- e9 ]" H w5 {6 {7 s 第八,由於下劃線圖形放在鏈接元素的底部,必須保證鏈接不折行(如允許鏈接跨越多個行,則只有下面一行的鏈接文本下面會有自定義的下劃線)。用CSS的white-space屬性可以防止鏈接文字折行,即a { white-space: nowrap; }。
& A# C+ C9 u4 u4 O; ] 綜上所述,為鏈接元素定義CSS樣式屬性的完整例子如:8 l. U' S3 j H) S+ C
a {
5 S9 s8 ~3 ?4 U& f/ e text-decoration: none;
1 g5 N& {4 l' Y' K- p background: url(underline.gif) repeat-x 100% 100%;
8 z& P' B* S1 d( T# m padding-bottom: 4px;
' l, ?3 R+ `, M+ e t D white-space: nowrap;" e5 `6 B# o1 {% z7 n6 R
} 9 i5 [3 v4 k% e! I0 c" D
4 Z1 B- o/ z/ e+ ?6 l 如果要讓自定義下劃線只在鼠標停留時出現,只要把原來直接設置在鏈接元素上的CSS background屬性改到:hover ,例如:- n7 P' j( J+ c9 ^) `' g' h
a {
4 u" i. f8 C( p; Z text-decoration: none;
+ @+ ^8 Q/ m r0 \9 A' X padding-bottom: 4px;( Q) a0 N# o- s* f* o1 E% b7 j O
white-space: nowrap;, L# ~) J2 V& b8 R# c. `3 ~) A
}7 z H7 E; a; N1 `
a:hover {2 P* w0 {4 C' b, S4 {2 M3 p
background: url(underline.gif) repeat-x 100% 100%;3 P9 q. E( d ~8 N9 V1 c; f
}3 ], O f; Z3 u" Q
1 v$ k) a( C; _, |
二、實例欣賞 8 S1 O7 r% s: D7 Q" @' Y/ |
假設有兩個下劃線圖形diagonal.gif(波紋線)、flower.gif(花朵)前者的高、寬是3、9,後者的高、寬是11、15。下面是一個設置兩種下劃線的完整實例:
1 g6 L, x6 v5 e; W$ z0 s
$ |+ E3 e, i# [: u' a- U自定義鏈接下劃線舉例% p5 K9 d$ y/ u+ D' I3 `4 ?
網頁源代碼如下:
6 E f# _9 ~3 K/ L7 n0 M/ C 註:diagonal.gif 和 flower.gif已經先拷貝到網頁所在的同一目錄下。
1 \0 X8 J; I1 P1 m <html>
7 }) ~+ p: W% x, x& N0 i$ e <head>9 Q7 n- P7 O- r5 n% n+ z+ R
<title>ex</title>& H0 k+ ?/ G& w3 J3 u7 U4 ~* e
<style type="text/css">
O3 N n r6 o a#example1a {" h2 c& v x) ~
text-decoration: none;' U# ^$ q, Q- ?( d7 X. f% a4 N
background: url(diagonal.gif) repeat-x 100% 100%;
2 b. e0 W" A5 ^0 h* F" C% @ white-space: nowrap;
& z) ?+ c, R$ E& R padding-bottom: 2px;" f8 }/ \ y% U/ |8 g
} j, O+ o' Z, c# b0 \& q
a#example1b {
( L# E* `/ r# J3 a8 V text-decoration: none;
+ v; M% p# [$ `1 h white-space: nowrap;
" K* i: K) _0 d' T3 s padding-bottom: 2px;
+ t+ e8 P8 F, w$ ]0 l/ N }! {4 k- d/ N D
a#example1b:hover {' h4 g5 k; p- C& X9 Y( L+ a
background: url(diagonal.gif) repeat-x 100% 100%;
9 O7 R5 T: U0 H! i5 V+ s" o0 c- L }
/ T4 ^4 @- Q o a#example2a {
! G; U/ ?# n5 y" \+ } j3 | text-decoration: none;; e! w# I( X- W, C; O- ~
background: url(flower.gif) repeat-x 100% 100%;
8 j( w& l/ i) O* y: Q! C' p white-space: nowrap;% D* R4 Y3 K3 r4 `8 N" w1 h! x4 ~
padding-bottom: 10px;1 y4 l: p, F0 U
}9 u9 A; I7 y* N/ ?
a#example2b {
* a- y4 H" G! g' ]9 z5 q( B# f! t* \ text-decoration: none;
2 ]0 H) [/ C7 v8 `! m white-space: nowrap;$ z4 Z+ {- F# }4 U9 _( u2 P I# U
padding-bottom: 10px;- b0 }; b/ s" h1 M1 Z/ K. [8 u
}
6 l# P$ a6 L3 d4 i8 V7 d# ? a#example2b:hover {9 s/ E' n1 N+ @5 k4 u U1 e/ G" j7 c
background: url(flower.gif) repeat-x 100% 100%;
; L* z4 R( u6 D, [. G! l }
* r+ h* u8 d2 e! p, X8 \ {/ B2 i -->
9 h, h& J# a, }! ? </style>8 p: M" w+ ^2 P |* z% B
</head>
: \ K9 q; I" F+ K3 \1 {7 ?# K <body>' e' F( z0 d' b0 h; t# q
<p>實例:</p>
$ H8 m1 P9 t9 e% | I <p> <a href="#" id="example1a">波紋線靜態下劃線</a>,2 V2 l3 D2 v/ Q. n. ?8 o9 m% |
<a href="#" id="example1b">鼠標停留時出現的波紋線</a>。</p>- D5 ~9 q7 R6 G" W
<p> <a href="#" id="example2a">花朵靜態下劃線</a>,% ?- j2 o6 u, G# Q
<a href="#" id="example2b">鼠標停留時出現的花朵下劃線</a>。</p>
& Y2 o u* h3 [4 A" {; Y </body>' ~3 C3 F% L) p+ M& h
</html> |