怎麼改善現有網站為xhtml+CSS結構——我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。% _% e) e0 }/ O3 C- V
- n7 b Z3 Y" j1 j O* U1 _( P8 X( w& @# h$ I* \- c
i& k) _1 `3 t, j% ? 1 s7 Y6 i. C$ R8 u9 r
% L5 x% [- e+ n2 n2 U
t8 O# b5 z/ l4 }0 G$ |
! N: p: ?8 o' _/ j+ gCSS本身沒有直接提供變換HTML鏈接下劃線的功能,但只要運用一些技巧,我們還是可以讓單調的網頁鏈接下劃線變得豐富多彩。
( B+ {( i6 `3 t( _8 I m& ]' |2 a
一、基本原理 / {2 V% U8 M- k1 [
首先,自定義HTML鏈接下劃線的第一步是創建一個圖形,在水平方向重複放置這個圖形即形成下劃線效果。如果要顯示出下劃線背後的網頁背景,可以使用透明的.gif圖形。
4 F/ b# q! U. I% z 其次,如果下劃線圖形的高度較大,則必須適當增加文本的高度,使得一行文本的底部與下一行文本的頂部之間有較大的空間,例如p { line-height: 1.5; }。
2 T) \# K& X+ A8 u( ~
' {: N. I$ x$ t5 w, h0 t8 b' P" I自定義鏈接下劃線示例
: G6 Q7 W1 e7 j0 h 第三,為顯示出自定義的下劃線,必須隱藏默認的下劃線,即a { text-decoration: none; }。
1 A# C/ V- |! V2 ]- u$ Y4 ] 第四,為鏈接元素設置下劃線圖形,構造出自定義的下劃線。假設下劃線圖形是underline.gif,則設置下劃線圖形的CSS代碼為a { background-image: url(underline.gif); }。/ Q+ S: @- Z$ z% b% @% e0 q
第五,我們要讓下劃線圖形在水平方向反覆出現,但不能在垂直方向重複出現,否則它將被隱藏到文本的背後。要求下劃線只在水平方向重複出現的代碼為:a { background-repeat: repeat-x; }。% |: F6 G/ z1 J$ x, U
第六,為保證圖形出現在鏈接文字的下方(不管字體的大小),用background-position屬性將圖形放在鏈接元素的底部。對於箭頭之類的下劃線圖形,可能還要考慮圖形在水平方向的對齊方向。假設要將下劃線圖形放在右下角,CSS代碼為:a { background-position: 100% 100%; }。9 o8 N) p$ }. H3 j U1 t
第七,為了在鏈接文本的下方給自定義圖形留出空間,必須加入適當的空白。下劃線圖形相對於鏈接文字的具體位置與文字的大小有關,但一般而言,可以先讓底部空白等於下劃線圖形的高度,必要時再作調整。例如:a { padding-bottom: 4px; }。4 H# k* I% ^5 U$ g
第八,由於下劃線圖形放在鏈接元素的底部,必須保證鏈接不折行(如允許鏈接跨越多個行,則只有下面一行的鏈接文本下面會有自定義的下劃線)。用CSS的white-space屬性可以防止鏈接文字折行,即a { white-space: nowrap; }。3 G( Z& z( Q2 ]4 J- _
綜上所述,為鏈接元素定義CSS樣式屬性的完整例子如:
3 B# M; I. [% U) o8 g6 G a {5 c0 b9 E$ M i X/ w
text-decoration: none; . h3 B. c. m) U. H' g
background: url(underline.gif) repeat-x 100% 100%;
. u, ?4 z( |7 k5 S2 p, r* @ padding-bottom: 4px;. v- P6 O% X* C' q, J3 T9 j
white-space: nowrap;
7 |5 X' O S2 b4 _* H9 L }
* I$ e" d: E* Q3 K5 ~$ K2 J4 d2 q* U+ e( Y
如果要讓自定義下劃線只在鼠標停留時出現,只要把原來直接設置在鏈接元素上的CSS background屬性改到:hover ,例如:$ m4 N, ?9 E- n% D1 i7 k. n; t# u
a {+ c( z* U# R# [- H, e
text-decoration: none;) L. H W9 D/ C: O, `7 _! T8 }3 D
padding-bottom: 4px;
, s# Z4 Z) Z, K- o) @ white-space: nowrap;( G0 E, |/ V+ r8 N1 K
}
' ]! [2 ~" H' a' ~( q a:hover {
. u7 R) U% O4 w# @5 u& n background: url(underline.gif) repeat-x 100% 100%;7 u% j. @& h: ?; u0 F
}
, [) k, M3 H( ~4 e
) ?1 ?, J7 X4 K 二、實例欣賞
0 `3 K0 w) Y+ j* M" H 假設有兩個下劃線圖形diagonal.gif(波紋線)、flower.gif(花朵)前者的高、寬是3、9,後者的高、寬是11、15。下面是一個設置兩種下劃線的完整實例:
2 d o" W& Z! b3 |- d
8 y& w. F ?- ]' F3 w( U. P# ]自定義鏈接下劃線舉例9 m3 I% V* m% _2 E
網頁源代碼如下:
; S |) _ k; \( d% n 註:diagonal.gif 和 flower.gif已經先拷貝到網頁所在的同一目錄下。
/ E: C, {7 ]9 I" L3 D <html>: v' {2 V1 N9 W3 v/ y8 Q
<head>
2 C5 b. q+ f, {) J1 j' e& o3 d <title>ex</title>; ^* @# P4 w0 Q# j3 b+ W4 ^/ n
<style type="text/css">
2 t9 f' n$ f8 h ] a#example1a {: E7 h1 t% Z$ d, Z
text-decoration: none;2 x0 C3 x7 B6 W. G; ?
background: url(diagonal.gif) repeat-x 100% 100%;
0 U& ?1 e8 g3 ?6 i. a( a white-space: nowrap;
- a1 C$ b0 @; H7 U& j padding-bottom: 2px;
# ?# v* d+ {- L& U6 H& W: D }7 F) l, g C4 Q4 ^9 }
a#example1b {! U1 [( d, N% `6 s
text-decoration: none;- V; _8 T# L/ N. p
white-space: nowrap;
" f4 \8 p! q, I3 Q. L padding-bottom: 2px;
& _& s" G9 }( b6 T7 b# } }" O- o* D9 N6 o1 U: q9 N: R" J
a#example1b:hover {& L k+ v: l5 ]6 H0 M* c' `$ | J
background: url(diagonal.gif) repeat-x 100% 100%;
( Y' h% \2 h- J! P( `* e7 b }
8 I1 u2 o% A( o# V a#example2a {( w* B( B, G6 [# j5 s6 n* C4 w
text-decoration: none;
5 \% E3 G( a$ r- m background: url(flower.gif) repeat-x 100% 100%;2 m5 w9 \/ K u7 Q4 L6 ?0 \
white-space: nowrap;8 }2 T1 f+ x6 h6 W% v/ f
padding-bottom: 10px;
* Y7 q7 P) Q, s( O6 |$ h6 s }
; o* `! `, l( K& \& q! s8 r0 ? a#example2b {' S) i. t# [ L. d
text-decoration: none;9 l$ D+ H- _2 U1 {. q- X
white-space: nowrap;
: }! _% G8 H B0 V padding-bottom: 10px;( W* w) S1 J5 R
}
( @8 F7 _, s$ ?5 n a#example2b:hover {
! N& p2 M. D, n. m background: url(flower.gif) repeat-x 100% 100%;' _- ~6 G4 u1 W$ j' z
}
. _" T+ k( Q5 \8 ]) @3 I3 } -->
$ U4 C+ z \. D6 r3 q$ u" Y" r+ A </style>9 A! j) b- @. Y" w
</head>- Y, X6 B! a8 _* b Q. H7 \7 h
<body>5 q2 Y0 @0 o# `) ]3 V6 F% v
<p>實例:</p>; a. ]+ l3 }- K7 d* j+ N( P
<p> <a href="#" id="example1a">波紋線靜態下劃線</a>,
1 w* K9 q# R. D9 g& } <a href="#" id="example1b">鼠標停留時出現的波紋線</a>。</p>5 j! R2 i* X; @: i! a# {8 s
<p> <a href="#" id="example2a">花朵靜態下劃線</a>,7 u7 G9 Z( t4 ?# ~" i* ]
<a href="#" id="example2b">鼠標停留時出現的花朵下劃線</a>。</p>( X: o2 l6 N0 E3 z- V5 E
</body>
9 x; y1 @$ }4 E+ E9 n </html> |