怎麼改善現有網站為xhtml+CSS結構——我們大部分的設計師依舊在採用傳統的表格佈局、表現與結構混雜在一起的方式來建立網站。" C H# O3 k/ S0 U
) P9 ?: A" d( j8 q
. j- n$ p, y+ D" [, H
; A4 S Z/ w/ t" [/ l. P3 `% @4 ^ 7 ]# y2 }0 j8 @# U D: y% T4 e9 F' `
! C4 l, f& g: @+ Y1 C 1 p0 Q9 ?9 D9 e& P1 h% H! j
. L& V8 b. p5 P+ D5 u& JCSS本身沒有直接提供變換HTML鏈接下劃線的功能,但只要運用一些技巧,我們還是可以讓單調的網頁鏈接下劃線變得豐富多彩。
4 g1 h' @) d! _( y5 e6 Z; N* Y
! M8 z8 X @, c4 O" W$ Q' U1 f; S 一、基本原理
+ J1 ]1 _" _ ? 首先,自定義HTML鏈接下劃線的第一步是創建一個圖形,在水平方向重複放置這個圖形即形成下劃線效果。如果要顯示出下劃線背後的網頁背景,可以使用透明的.gif圖形。
, P& x) |; ^% n/ m q' F* o 其次,如果下劃線圖形的高度較大,則必須適當增加文本的高度,使得一行文本的底部與下一行文本的頂部之間有較大的空間,例如p { line-height: 1.5; }。
8 K. P Q' y3 A9 j4 `" t
- f7 ?2 Y& B1 S; S6 m! i9 G- Z自定義鏈接下劃線示例
: y' u ~5 v. c* `4 L8 S 第三,為顯示出自定義的下劃線,必須隱藏默認的下劃線,即a { text-decoration: none; }。
, }/ p* g; l! h1 x 第四,為鏈接元素設置下劃線圖形,構造出自定義的下劃線。假設下劃線圖形是underline.gif,則設置下劃線圖形的CSS代碼為a { background-image: url(underline.gif); }。
5 r8 ]9 Z! N. |* l9 c 第五,我們要讓下劃線圖形在水平方向反覆出現,但不能在垂直方向重複出現,否則它將被隱藏到文本的背後。要求下劃線只在水平方向重複出現的代碼為:a { background-repeat: repeat-x; }。( H$ f/ a% M6 }' h- r
第六,為保證圖形出現在鏈接文字的下方(不管字體的大小),用background-position屬性將圖形放在鏈接元素的底部。對於箭頭之類的下劃線圖形,可能還要考慮圖形在水平方向的對齊方向。假設要將下劃線圖形放在右下角,CSS代碼為:a { background-position: 100% 100%; }。7 q/ u6 {4 s, M: c0 }
第七,為了在鏈接文本的下方給自定義圖形留出空間,必須加入適當的空白。下劃線圖形相對於鏈接文字的具體位置與文字的大小有關,但一般而言,可以先讓底部空白等於下劃線圖形的高度,必要時再作調整。例如:a { padding-bottom: 4px; }。$ Y3 d0 [+ I5 r+ z+ ^! P! Q
第八,由於下劃線圖形放在鏈接元素的底部,必須保證鏈接不折行(如允許鏈接跨越多個行,則只有下面一行的鏈接文本下面會有自定義的下劃線)。用CSS的white-space屬性可以防止鏈接文字折行,即a { white-space: nowrap; }。
4 f2 o7 K3 v$ B. { 綜上所述,為鏈接元素定義CSS樣式屬性的完整例子如: l4 ]$ H$ p8 J; {8 I1 y
a {1 t9 [, N& y1 y& o7 \
text-decoration: none;
$ Q, ~" v7 j, T" ^* {5 \ background: url(underline.gif) repeat-x 100% 100%;4 D9 C- N' V: a" @! g8 ?: ]8 I- U
padding-bottom: 4px;6 j3 c, B/ }, ~! C! h
white-space: nowrap;$ L: y s# D3 R @( |7 L) I
}
8 U5 ~8 ?8 N0 _, U
: C1 D1 @$ {5 w1 B8 v 如果要讓自定義下劃線只在鼠標停留時出現,只要把原來直接設置在鏈接元素上的CSS background屬性改到:hover ,例如:
7 p, {$ I( V" j, c- P5 o% f- W# g a {: B- i( g Z& [9 ^. f. \
text-decoration: none;& ^3 u* ]- R+ z; f! g
padding-bottom: 4px;
# O, s& a( E5 d" e white-space: nowrap;0 H# K3 Z3 _# r1 `
}" U* R* j3 O! N! E, p0 B
a:hover {
5 V4 D3 \' ^* ~- E background: url(underline.gif) repeat-x 100% 100%;
3 y4 A6 C3 c/ e: k+ h! k }
1 T: o& c) d, u! u1 c* g. S* ^9 E0 G. A
二、實例欣賞 # l! z0 i J& M# t7 Y( O
假設有兩個下劃線圖形diagonal.gif(波紋線)、flower.gif(花朵)前者的高、寬是3、9,後者的高、寬是11、15。下面是一個設置兩種下劃線的完整實例:6 ~) n( }; W5 T% g: @4 e
$ {" i( A9 W/ }* S/ o" i/ ]2 A% S自定義鏈接下劃線舉例
5 `0 O* R$ [& P) \. n) \) z 網頁源代碼如下:
7 B* T1 i; k0 c1 H 註:diagonal.gif 和 flower.gif已經先拷貝到網頁所在的同一目錄下。
2 \1 o5 ]" K b3 {0 p3 h <html>
. Q. V) U8 p4 c1 P' c/ u O <head>9 Y) _; j/ }5 R7 b# J) {
<title>ex</title># ?" x) w2 `9 f u& u
<style type="text/css">
( ^' c) }7 _1 n8 T* `5 X/ v a#example1a {
: Z! X* I0 o8 r. [1 M4 k text-decoration: none;
% g$ K; ^- l2 Q8 [7 q& ~0 W background: url(diagonal.gif) repeat-x 100% 100%;0 b8 D a/ w/ _; W) R( r8 J
white-space: nowrap;
- h7 ^ e. F7 |; c6 d% d& \- f" ~; \$ d padding-bottom: 2px;
" }% G4 K, O, x+ | }; O$ N# M3 U9 L! c5 z) U. E* D
a#example1b {5 A; X8 s7 C. |$ G" R' c( @
text-decoration: none;
5 z; y0 [* w J, H/ L6 y white-space: nowrap;( Q+ D! p* B% L. @; u* ]
padding-bottom: 2px;
; {- r: t9 s2 p7 i) n/ F/ h }
% z: {! o1 n1 @ a#example1b:hover {; O6 t3 E8 V% h, r, g
background: url(diagonal.gif) repeat-x 100% 100%;( s2 c$ r9 B! U6 y2 c
}
( u; l- N4 ]! l& s a#example2a {8 f+ ^# D1 D/ ^' v
text-decoration: none;
2 M- ]% c2 s2 N, n& G- j% c& ] background: url(flower.gif) repeat-x 100% 100%;' m' l4 z1 }9 I" g; Q6 J3 A
white-space: nowrap;
5 G a% t. F# j: V: Y- Y padding-bottom: 10px;6 H" i; `1 ]' b1 D4 ] h5 s6 [) W' L
}
/ o8 o+ A7 ~5 X. [; c9 h a#example2b {
# f% B, E. m3 Z text-decoration: none;' E2 p8 n" J! A& i* T' ^- g2 J
white-space: nowrap;
$ n) n) J8 n: [ padding-bottom: 10px;
. c/ u; o) {0 ?9 ]" _9 `% b }
5 w4 w' B- V, ]2 ?) D4 S( V- J } a#example2b:hover {
( j2 r" H9 u3 {6 K L( ] background: url(flower.gif) repeat-x 100% 100%;; I5 Z9 T7 ^& _# o* Q3 {
}1 E, n9 B0 R/ v" f7 y L- m, i
-->$ v. i+ B0 H$ m/ J% J% v/ ?
</style>
. J! h$ A9 O7 l; J. h </head>. e5 P$ D( H) ^
<body>
/ N; _7 e P: F6 R* S6 o <p>實例:</p>1 G$ l1 @* F. |" u
<p> <a href="#" id="example1a">波紋線靜態下劃線</a>,
0 B; J, a7 W* V L1 a) w <a href="#" id="example1b">鼠標停留時出現的波紋線</a>。</p>. z( b& n1 d3 p9 }
<p> <a href="#" id="example2a">花朵靜態下劃線</a>,
' j% h/ A' J( r6 d% N; j7 @ P3 J" p2 V8 u <a href="#" id="example2b">鼠標停留時出現的花朵下劃線</a>。</p>6 d( Q) {; k: B0 @
</body>
* i9 a! g e {) ` w </html> |