过期域名预定抢注

 找回密碼
 免费注册

CSS經典技巧十則:

[複製鏈接]
發表於 2007-8-24 00:50:53 | 顯示全部樓層 |閱讀模式
1.CSS字體屬性簡寫規則
" Z4 B, P' \8 r. b一般用CSS設定字體屬性是這樣做的:
6 r/ O: m) c( n) F  }0 Y4 Vfont-weight:bold;
, e/ C+ O! h. X7 Kfont-style:italic;
& b: R& K$ c0 X6 i, l( Pfont-varient:small-caps;* {/ N0 s/ U7 w: V' D$ q7 Q
font-size:1em;1 a8 x( C  K8 v5 x. f
line-height:1.5em;8 t, x  A" [9 J# ]. Z- v
font-family:verdana,sans-serif;
( Y3 h: d; Q3 b+ D8 u" l但也可以把它們全部寫到一行上去:
9 x: k8 M% ]9 Ufont: bold italic small-caps 1em/1.5em verdana,sans-serif;  k, d! Y% o9 f/ H) [/ q
真不錯!只有一點要提醒的:這種簡寫方法只有在同時指定font-size和font-family屬性時才起作用。而且,如果你沒有設定font-weight, font-style, 以及 font-varient ,他們會使用缺省值,這點要記上。! r# s0 A/ x8 F: M3 n0 F
2. 同時使用兩個類
6 a) H# k" b1 I& T0 ]" N2 J9 m( U0 Y一般只能給一個元素設定一個類(Class),但這並不意味著不能用兩個。事實上,你可以這樣:
1 |4 \' x- J9 V! ~/ J<p class="text side">...</p>$ e( q* f% P& K5 \9 x4 z* H
同時給P元素兩個類,中間用空格格開,這樣所有text和side兩個類的屬性都會加到P元素上來。如果它們兩個類中的屬性有衝突的話,後設置的起作用,即在CSS文件中放在後面的類的屬性起作用。
9 c) N5 X, |' Z/ U7 ?補充:對於一個ID,不能這樣寫<p id="text side">...</p>也不能這樣寫
! Z5 ?% T' w# p; B! X' b  J" }3. CSS border的缺省值/ \0 L3 i1 e* P1 q! X/ E1 D( `" O2 @' x
通常可以設定邊界的顏色,寬度和風格,如:
. I# ^. @% S4 j. ^+ cborder: 3px solid #000; J, r$ R6 n: B5 h5 h: l; L
這位把邊界顯示成3像素寬,黑色,實線。但實際上這裡只需要指定風格即可。
( h/ z$ w2 S* l  g% s& S4 N如果只指定了風格,其他屬性就會使用缺省值。一般地,Border的寬度缺省是medium,一般等於3到4個像素;缺省的顏色是其中文字的顏色。如果這個值正好合適的話,就不用設那麼多了。
% v" X" M4 S8 N3 Q( H4. CSS用於文檔打印
7 Q9 ^/ b' u9 c. p許多網站上都有一個針對打印的版本,但實際上這並不需要,因為可以用CSS來設定打印風格。
0 ]; Y' ^3 o2 ?! P4 b- [  J也就是說,可以為頁面指定兩個CSS文件,一個用於屏幕顯示,一個用於打印:
9 n& z% B5 X" b- l' y( Y! d- ~3 r<link type="text/css" rel="stylesheet" href="stylesheet.css" media="screen" /> <link type="text/css" rel="stylesheet" href="printstyle.css" media="print" /> . a0 X$ B3 Q( O& K8 v* L4 q8 q. P" i
第1行就是顯示,第2行是打印,注意其中的media屬性。  @% e3 D/ F+ X- r: i* _$ ~
但應該在打印CSS中寫什麼東西呢?你可以按設計普通CSS的方法來設定它。設計的同時就可以把這個CSS設成顯示CSS來檢查它的效果。也許你會使用 display: none 這個命令來關掉一些裝飾圖片,再關掉一些導航按鈕。要想瞭解更多,可以看「打印差異」這一篇。
! v% o1 H5 z/ z- z% m/ Q  [5. 圖片替換技巧
* j# a6 j. @5 j0 l2 t/ h一般都建議用標準的HTML來顯示文字,而不要使用圖片,這樣不但快,也更具可讀性。但如果你想用一些特殊字體時,就只能用圖片了。& F. Y. f/ d7 R% a% L
比如你想整個賣東西的圖標,你就用了這個圖片:( q. Y9 z/ d/ }6 ^2 F
<h1><img src="widget-image.gif" alt="Buy widgets" /></h1>6 F* @0 g8 Y( H( l( U. ~8 n( G  `
這當然可以,但對搜索引擎來說,和正常文字相比,它們對alt裡面的替換文字幾乎沒有興趣這是因為許多設計者在這裡放許多關鍵詞來騙搜索引擎。所以方法應該是這樣的:
3 x( V  R* f8 M( h<h1>Buy widgets</h1>6 a2 x5 O* c! T* l3 }0 Y7 F# \( a
但這樣就沒有特殊字體了。要想達到同樣效果,可以這樣設計CSS:
, S. N8 B, }: [1 r- {h1 { background: url(widget-image.gif) no-repeat; height: image height text-indent: -2000px }
- d6 t. b5 S9 k: q" u, c注意把image height換成真的圖片的高度。這裡,圖片會當作背景顯示出來,而真正的文字由於設定了-2000像素這個縮進,它們會出現在屏幕左邊2000點的地方,就看不見了。但這對於關閉圖片的人來說,可能全泊不到了,這點要注意。
! h( e" _* Q( K+ z( _& ]" [6. CSS box模型的另一種調整技巧
" N* j& ~8 ~3 G% R5 m這個Box模型的調整主要是針對IE6之前的IE瀏覽器的,它們把邊界寬度和空白都算在元素寬度上。比如:6 c2 F5 v$ U( Q* S9 w0 ?; R6 a' z# `
#box { width: 100px; border: 5px; padding: 20px }
$ e: _& b  L0 W7 p/ u這樣調用它:0 B+ S, [7 ^7 r4 J1 a
<div id="box">...</div>6 j5 [$ I9 h, z2 N
這時盒子的全寬應該是150點,這在除IE6之前的IE瀏覽器之外的所有瀏覽器上都是正確的。但在IE5這樣的瀏覽器上,它的全寬仍是100點。可以用以前人發明的Box調整方法來處理這種差異。
+ {: S4 p0 O4 A9 |. M# X7 W但用CSS也可以達到同樣的目的,讓它們顯示效果一致。  e+ p- P$ @( h; T3 E
#box { width: 150px } #box div { border: 5px; padding: 20px } ! o" q- _& X' u- X
這樣調用:
# I, Z3 C2 i$ H<div id="box"><div>...</div></div>
' r- ]& c8 e/ T$ G6 H6 w# n" T這樣,不管什麼瀏覽器,寬度都是150點了。
/ C. T2 f; i/ y+ V; t7. 塊元素居中對齊% ]# I- A% \' K( s$ L0 ]* n
如果想做個固定寬度的網頁並且想讓網頁水平居中的話,通常是這樣:4 J2 Q; ^3 o" w7 ?* A- j( d& \
#content { width: 700px; margin: 0 auto } 5 A9 V! D- O& B4 R
你會使用 <div id="content"> 來圍上所有元素。這很簡單,但不夠好,IE6之前版本會顯示不出這種效果。改CSS如下:6 B/ P" R' ?$ b* l- Q. l) [
body { text-align: center } #content { text-align: left; width: 700px; margin: 0 auto } , g0 ^5 Z7 Q) g7 a' s) E$ ~3 w$ N" Y
這會把網頁內容都居中,所以在Content中又加入了:text-align: left 。( a: a- {3 o; L6 _; m: w
8. 用CSS來處理垂直對齊
' `' Q, C6 [% K5 }3 v/ y+ V' r垂直對齊用表格可以很方便地實現,設定表格單元 vertical-align: middle 就可以了。但對CSS來說這沒用。如果你想設定一個導航條是2em高,而想讓導航文字垂直居中的話,設定這個屬性是沒用的。
0 @/ Q* l9 I3 O4 E; C6 V: PCSS方法是什麼呢?對了,把這些文字的行高設為 2em:line-height: 2em ,這就可以了。
" n; B; j* y) C( b8 [# B) w" P8 t4 R, E. s, Y9. CSS在容器內定位
. R7 I. A) f% U( D" X" o( ^9 U7 PCSS的一個好處是可以把一個元素任意定位,在一個容器內也可以。比如對這個容器:
0 w# @3 e  r& L  T4 Q& E$ D% B#container { position: relative }
/ o- X: P7 G& ~9 d9 a. m$ \' O這樣容器內所有的元素都會相對定位,可以這樣用:
3 p; E& K3 U4 |7 X% s<div id="container"><div id="navigation">...</div></div>: t6 o; o$ g* D! Z# @& t
如果想定位到距左30點,距上5點,可以這樣:
7 }8 Y* h+ H  f: ~" g- ~" n2 @$ x#navigation { position: absolute; left: 30px; top: 5px }   e' b' s: S5 X
當然,你還可以這樣:
) k- y4 m- @; p+ R# _. J9 D5 [margin: 5px 0 0 30px
0 \2 m) g/ l5 ~, O2 L注意4個數字的順序是:上、右、下、左。當然,有時候定位的方法而不是邊距的方法更好些。
6 s/ B4 E, i) x+ w( t10. 直通到屏幕底部的背景色
8 Y$ F8 C$ F! j& z, w6 Q' l在垂直方向是進行控制是CSS所不能的。如果你想讓導航欄和內容欄一樣直通到頁面底部,用表格是很方便的,但如果只用這樣的CSS:
0 d( \; F" P6 n1 j8 g5 G' V#navigation { background: blue; width: 150px } . l8 D% h9 e, u7 [  a1 e& j
較短的導航條是不會直通到底部的,半路內容結束時它就結束了。該怎麼辦呢?
! G, A' v5 ]+ ]. ?1 X! ?; f+ T不幸的是,只能採用欺騙的手段了,給這較短的一欄加上個背景圖,寬度和欄寬一樣,並讓它的顏色和設定的背景色一樣。
8 U' u$ T  P/ v3 N. \' S! Ibody { background: url(blue-image.gif) 0 0 repeat-y }
( I- p  v. S2 b" h, H, w4 S) d此時不能用em做單位,因為那樣的話,一旦讀者改變了字體大小,這個花招就會露餡,只能使用px。

評分

參與人數 1 +5 收起 理由
來生瞳 + 5 我很赞同

查看全部評分

您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基

GMT+8, 2025-11-19 12:02

By DZ X3.5

小黑屋

快速回復 返回頂部 返回列表