等,但这些标记不能满足更多的文档样式需求,为了解决这个问题,在1997年W3C(The World Wide Web Consortium)颁布HTML4标准的同时也公布了有关样式表的第一个标准CSS1, 自CSS1的版本之后,又在1998年5月发布了CSS2版本,样式表得到了更多的充实。W3C把DHTML(Dynamic HTML)分为三个部分来实现:脚本语言(包括JavaScript、Vbscript等)、支持动态效果的浏览器(包括Internet Explorer、Netscape Navigator等)和CSS样式表。 ( g+ ]( N' \1 B- Q2 u- G. {, d/ F
( s0 d9 J* l) l+ y, H+ l) o
你可以用CSS精确的控制页面里每一个元素的字体样式、背景、排列方式、区域尺寸、四周加入边框等。使用CSS能够简化网页的格式代码,加快下载显示的速度,外部链接样式可以同时定义多个页面,大大减少了重复劳动的工作量。 & H% o* Q, \; e! Q; j1 l
; d9 {) e! D: Q: h0 A! v
注意:CSS需要IE4(Internet Explorer 4.0)和NC4(Netscape 4.0)以上的浏览器支持,有些效果需要更高版本的浏览器支持。
& g, x; Y( k3 ?. |7 Y4 {- N/ Q
作者: 萧萧秋风 时间: 2002-11-27 22:26
二、 语法 , t) m& Z% e( n) x$ e# T$ q
; t1 s( E2 {; R7 }6 {, s1 L
1. 基本语法
2 ~- Y, E6 F2 J, d
) W7 T# D* T8 ~9 QCSS的定义是由三个部分构成:选择符(selector),属性(properties)和属性的取值(value)。 4 D2 P, k* F" {/ |5 w
基本格式如下:
2 T% d. {8 _8 B- A: O2 Wselector {property: value}
" f" |. J0 k9 r4 U* y1 m(选择符 {属性:值})
' X4 }! n+ y/ z选择符是可以是多种形式,一般是你要定义样式的HTML标记,例如BODY、P、TABLE……,你可以通过此方法定义它的属性和值,属性和值要用冒号隔开:
% E; j9 g1 r8 S* _% I6 Q, ~- mbody {color: black} : Y( s3 M7 X8 L9 C8 G$ I
选择符body是指页面主体部分,color是控制文字颜色的属性,black是颜色的值,此例的效果是使页面中的文字为黑色。 5 c$ s) y- |' Z# g! |' x J8 d9 _: h
+ I9 ~! u+ ^9 ]5 s) ]$ D如果属性的值是多个单词组成,必须在值上加引号,比如字体的名称经常是几个单词的组合: % p$ D& y1 l L5 t9 ?* q
p {font-family: "sans serif"} 1 [2 A7 X7 ?# r* l
(定义段落字体为sans serif)
+ @5 e/ ?+ J# v! y) m
! E$ G2 U& c% W9 v( B2 S如果需要对一个选择符指定多个属性时,我们使用分号将所有的属性和值分开: 2 z2 P- t$ n5 K: M" Q
p {text-align: center; color: red}
- N/ J M" @% J2 G) K7 V$ H(段落居中排列;并且段落中的文字为红色)
# t. V0 b! u' p2 f" d
) b( B# l6 y% H% y# x为了使你定义的样式表方便阅读,你可以采用分行的书写格式:
# F& @5 ?3 v' z: x) Dp # e# j; P4 Y& k5 h: f& A; Z# b3 _3 \$ }
{ ) R" @( |' U8 U, g0 r* i8 b
text-align: center; & F$ n0 g: d% s$ h* g
color: black; % f: d- B0 I& o) x6 B! L. V& n
font-family: arial ( `0 {6 K, C. l- c3 k. u
}
( `* {' Y8 L/ Z. v4 E# X(段落排列居中,段落中文字为黑色,字体是arial) ; @; {. N+ D1 }; Q9 M
/ J/ I: n. A/ A- k
2. 选择符组 ( P6 ^5 R4 z% C- W0 D8 m
8 L8 m+ u+ G1 k7 e" ^5 u7 @2 V7 z
你可以把相同属性和值的选择符组合起来书写,用逗号将选择符分开,这样可以减少样式重复定义: 1 k& u" e& h/ S3 e
h1, h2, h3, h4, h5, h6 { color: green }
& f! A* q* K- f( R8 @, y9 @(这个组里包括所有的标题元素,每个标题元素的文字都为绿色)
9 i+ [+ H7 H7 D! D$ T) c8 kp, table{ font-size: 9pt }
$ h4 W' f0 o [- c, V: _# z(段落和表格里的文字尺寸为9号字)
/ O) a" u; w P+ J/ k M' C O效果完全等效于: * C4 I l5 g# n
p { font-size: 9pt } ) a0 D7 e6 Z( |! v5 A+ W
table { font-size: 9pt } 8 f; ?2 O4 f* V+ ]
# l& X, N5 G6 S5 ^" w
3. 类选择符
0 T6 e0 ~+ C( Z8 _7 c- P9 C9 u4 `# V5 I" `: ]) i2 ^; s
用类选择符你能够把相同的元素分类定义不同的样式,定义类选择符时,在自定类的名称前面加一个点号。假如你想要两个不同的段落,一个段落向右对齐,一个段落居中,你可以先定义两个类:
7 Y0 i6 `. R* i$ mp.right {text-align: right} . n. x+ @ f8 S/ a) ?
p.center {text-align: center} 2 Y7 G) A; v5 g; |$ Y
然后用不在不同的段落里,只要在HTML标记里加入你定义的class参数: 0 ?! A3 A2 E0 v2 Z. [, _' |* W
, n* F8 w( S* x$ q4 G/ Z
这个段落向右对齐的 I9 }5 S7 k/ M
$ D7 L( }) i, u+ {+ [1 ^8 Z
6 R- E& d6 x6 u5 y6 x
这个段落是居中排列的
" u* P1 g5 {2 n3 q. x) K( H: i N% C
% w* Q+ l7 N, A注意:类的名称可以是任意英文单词或以英文开头与数字的组合,一般以其功能和效果简要命名。 2 g$ \, {2 }4 e& z4 V% q# _3 W- i
^( A* g) P7 m5 k G" E
类选择符还有一种用法,在选择符中省略HTML标记名,这样可以把几个不同的元素定义成相同的样式:
K v% D0 Z {* e( ~.center {text-align: center}
4 w: U& B: H- ]$ C6 I6 N# F(定义.center的类选择符为文字居中排列) & E) K9 B9 P: n" d9 l+ I
这样的类可以被应用到任何元素上。下面我们使h1元素(标题1)和p元素(段落)都归为“center”类,这使两个元素的样式都跟随“.center”这个类选择符:
) s& N6 `9 P' W/ Q
+ B' O6 Q2 w, D& T这个标题是居中排列的
9 |; g5 H. q p) |
1 J. j% i& ~3 K* g3 V
- \" C9 w2 u- E8 q这个段落也是居中排列的 ' Q- o% R. L' R U( i7 O$ O5 P
: [ i7 @- J5 W4 s
注意:这种省略HTML标记的类选择符是我们经后最常用的CSS方法,使用这种方法,我们可以很方便的在任意元素上套用预先定义好的类样式。 0 N) \8 a( I8 i7 O2 |0 _
) K1 k* P% V& N' k+ r
4. ID选择符
B: v3 G& n9 S0 @0 e
- Q$ `) K' [( P d$ ^2 d E" ~在HTML页面中ID参数指定了某个单一元素,ID选择符是用来对这个单一元素定义单独的样式。
0 ]; I8 I/ r s8 T$ C6 XID选择符的应用和类选择符类似,只要把CLASS换成ID即可。将上例中类用ID替代:
! n2 W; \3 e2 x+ {: D/ ~
) j t+ J- M% c1 z+ Q- D" x6 r这个段落向右对齐 ' b; M( T, A3 n: d- }3 A! J4 e
4 S$ r1 c* v; ^: j9 Q) ^' O) G# k. f
定义ID选择符要在ID名称前加上一个“#”号。和类选择符相同,定义ID选择符的属性也有两种方法。下面这个例子,ID属性将匹配所有id="intro"的元素: 3 P* _' \* {+ L+ J$ I3 W; \, l
#intro
' d- L1 J0 D- v. Y' A8 C{ : @5 M" d1 H* @' E3 x7 U3 K
font-size:110%;
* }9 j# Z% K' n! Efont-weight:bold; * }" |% F- r0 Y I
color:#0000ff; ' H. L1 r6 O' U# P$ Z
background-color:transparent
! E B r8 e! l5 g( Q$ o} % R/ ` Q6 s; s& E0 o
(字体尺寸为默认尺寸的110%;粗体;蓝色;背景颜色透明)
. {) J% O& x( }& E7 x下面这个例子,ID属性只匹配id="intro"的段落元素:
, _1 Z) S8 F( `8 N! p8 bp#intro
0 y% [& a/ H6 U- O{ ' h) t+ w6 k2 T H3 M$ `) @0 d; r) z
font-size:110%;
, k: G3 v; }% sfont-weight:bold;
0 b( |, @ O4 }& Qcolor:#0000ff; - R$ T2 S. w. U/ Z2 I
background-color:transparent
# q9 q/ `! p4 U P9 c9 h}
! J" u2 h7 s7 {+ c2 a* N注意:ID选择符局限性很大,只能单独定义某个元素的样式,一般只在特殊情况下使用。
. c2 W7 _) c5 `
6 f' N" F+ B: `2 N4 f( ]# }5. 包含选择符
! n6 I! _3 ?, h2 M% G) E1 ~1 t5 `2 J$ d
可以单独对某种元素包含关系定义的样式表,元素1里包含元素2,这种方式只对在元素1里的元素2定义,对单独的元素1或元素2无定义,例如: ) ]9 @7 N" c# @2 x
table a
3 n5 q8 Z9 K5 u7 R& k{
, k$ I" k! D: m+ O" dfont-size: 12px & J, n; W" I3 S6 k, r# ~0 E4 s
}
6 D9 t- O/ p; _# k+ L在表格内的链接改变了样式,文字大小为12象素,而表格外的链接的文字仍为默认大小。
) q- f( v$ X% l; y
1 y% |" K) T/ C( o0 h: v+ x; K6. 样式表的层叠性
9 F3 t1 j0 J& A6 @# }8 I8 _+ w: e9 A2 [/ |9 G
层叠性就是继承性,样式表的继承规则是外部的元素样式会保留下来继承给这个元素所包含的其他元素。事实上,所有在元素中嵌套的元素都会继承外层元素指定的属性值,有时会把很多层嵌套的样式叠加在一起,除非另外更改。例如在DIV标记中嵌套P标记:
3 p/ i! D; s2 O# udiv { color: red; font-size:9pt} , i# W2 u# E% K5 j# x& k# }& C4 [9 ~
…… . ]9 W: o( T3 `: E, y+ f# i5 R
1 U7 P; g& D1 \. ]' q7 e2 h 9 C. L& n, \6 v: e4 z! q
这个段落的文字为红色9号字 / h# {# u) q* P( ?2 b
1 z8 m( D* S& y3 q' d" l& G: ^
$ I s& s9 s7 `! r$ ^0 b v, R: _5 t/ `
(P元素里的内容会继承DIV定义的属性)
* {! N+ f$ u0 A: y注意:有些情况下内部选择符不继承周围选择符的值,但理论上这些都是特殊的。例如,上边界属性值是不会继承的,直觉上,一个段落不会同文档BODY一样的上边界值。 / J1 C' W9 C/ U, P4 g. }9 J8 C
/ j$ z& m+ @* l$ O+ P& L# w3 Z9 O) S }
另外,当样式表继承遇到冲突时,总是以最后定义的样式为准。如果上例中定义了P的颜色: 4 C8 _/ W: t/ v! I q; \) W7 h
div { color: red; font-size:9pt}
$ ~- i0 |& [. Lp {color: blue}
- Q- V! f# K/ G$ I: K7 H- S# P…… " T( }$ f& Q# s6 J! r1 |% p
5 z2 D2 P. y! f, p0 S; y N% v0 K
V! Q+ x$ T0 ~4 y这个段落的文字为蓝色9号字 . H' ?5 X( `; P$ F }9 O
( N$ ?1 q$ b U& p. E
" j+ t- o {+ A" A
我们可以看到段落里的文字大小为9号字是继承div属性的,而color属性则依照最后定义的。 5 t$ o( U; b- Z. m9 f5 y
) w3 M7 ?( D) |
不同的选择符定义相同的元素时,要考虑到不同的选择符之间的优先级。ID选择符,类选择符和HTML标记选择符,因为ID选择符是最后加上元素上的,所以优先级最高,其次是类选择符。如果想超越这三者之间的关系,可以用!important提升样式表的优先权,例如: 2 z% z$ }4 {. l- c: v
p { color: #FF0000!important }
+ K. T$ G6 B+ m/ F.blue { color: #0000FF}
% M+ w+ b, p5 A+ h$ @. o2 N#id1 { color: #FFFF00} 4 p8 ~7 B& b0 Q3 I& H9 P* h9 }
我们同时对页面中的一个段落加上这三种样式,它最后会依照被!important申明的HTML标记选择符样式为红色文字。如果去掉!important,则依照优先权最高的ID选择符为黄色文字。
! _3 V8 T I7 M% T9 F
9 T1 w- T: a _2 p! g7. 注释
6 M1 e6 S4 m, i5 F/ e' R5 { L; i6 X- x! |4 A- Z; O1 A$ I
你可以在CSS中插入注释来说明你代码的意思,注释有利于你或别人以后编辑和更改代码时理解代码的含义。在浏览器中,注释是不显示的。CSS注释以"/*" 开头,以"*/" 结尾,如下: 5 L! x$ b, l6 S; z
/* 定义段落样式表 */
) l, r1 x# i: J7 ?p ! h, ?. }7 H) X
{
' Z+ \7 M; C& ?7 L! c# Mtext-align: center; /* 文本居中排列 */
8 f9 |1 a2 e" j! i4 n8 Ncolor: black; /* 文字为黑色 */ " D1 r. O0 H# b& I h& ~ [% p4 s
font-family: arial /* 字体为arial */
1 U( V. v& [% v8 g7 F4 T& q p; Z}
# G5 P$ ^& T A. O
作者: 萧萧秋风 时间: 2002-11-27 22:27
CSS教程 第2期
# g$ c. L$ H! m% X, f----------------------------- . T: i/ w4 [3 k/ @# _
三、 伪类——动态链接 B" o0 g( v) \- O3 H# P8 F; _
伪类可以看做是一种特殊的类选择符,是能被支持CSS的浏览器自动所识别的特殊选择符。它的最大的用处就是可以对链接在不同状态下定义不同的样式效果。
$ A& m" @5 c: M
- Q7 A6 Q0 [% e# q1. 语法 : y+ ?$ T: v5 O/ p$ f% @
8 D' @+ c5 q, w+ Y- J# d- N9 a- y伪类的语法是在原有的语法里加上一个伪类(pseudo-class):
8 M7 ~: Y9 |! Bselectorseudo-class {property: value}
' C: J( `, A; v# h/ ~(选择符:伪类 {属性: 值})
! g* d( e9 o: T% K4 W伪类和类不同,是CSS已经定义好的,不能象类选择符一样随意用别的名字,根据上面的语法可以解释为对象(选择符)在某个特殊状态下(伪类)的样式。 / E5 H6 U! F3 C8 E! V
8 F5 r4 a; i! j9 `8 ~5 b- L- e- D9 @
类选择符及其他选择符也同样可以和伪类混用: , d4 _# A/ k( [4 H9 \
selector.classseudo-class {property: value}
4 q- {6 i& e6 o' t+ w7 @(选择符.类:伪类 {属性: 值})
) n; [2 D) O+ ^ k" z' g/ D5 M
7 g7 ]0 u9 c" g! X2. 锚的伪类 6 q6 ~- P) j" l5 q& M# t. o6 s
5 } s7 v, H& j+ X! B
我们最常用的是4种a(锚)元素的伪类,它表示动态链接在4种不同的状态:link、visited、active、hover(未访问的链接、已访问的链接、激活链接和鼠标停留在链接上)。我们把它们分别定义不同的效果:
8 N0 h8 C4 p3 ~4 q' ja:link {color: #FF0000; text-decoration: none} /* 未访问的链接 */
( m% c# x3 s0 w0 {. W1 k( {+ aa:visited {color: #00FF00; text-decoration: none} /* 已访问的链接 */ 0 x) \4 y D/ _0 |1 b% A }* @
a:hover {color: #FF00FF; text-decoration: underline} /* 鼠标在链接上 */ W% [- y _* p+ U% D& D* e
a:active {color: #0000FF; text-decoration: underline} /* 激活链接 */ % ~4 Y I" }3 j& j7 I' w
(上面这个例子中,这个链接未访问时的颜色是红色并无下划线,访问后是绿色并无下划线,激活链接时为蓝色并有下划线,鼠标在链接上时为紫色并有下划线)
% W) A2 ^. S) p1 x' ~, G1 M注意:有时这个链接访问前鼠标指向链接时有效果,而链接访问后鼠标再次指向链接时却无效果了。这是因为你把a:hover放在了a:visited的前面,这样的话由于后面的优先级高,当访问链接后就忽略了a:hover的效果。所以根据叠层顺序,我们在定义这些链接样式时,一定要按照a:link, a:visited, a:hover, a:actived的顺序书写。
! b% I1 N. v/ E" {& X- `" H4 J9 Y# J G' v0 K9 b5 t
3. 伪类和类选择符
( \ b& N& ^) ~) s- k
0 j9 T/ m/ X! i* a- ^6 ~) N将伪类和类组合起来用,就可以在同一个页面中做几组不同的链接效果了,例如,我们定义一组链接为红色,访问后为蓝色;另一组为绿色,访问后为黄色:
\& s3 X: N3 J- k! C: Za.red:link {color: #FF0000} . i. y& D7 L- f
a.red:visited {color: #0000FF} $ {4 M2 [; j! p7 q! s0 J- p! `7 [
a.blue:link {color: #00FF00} 7 X3 f. n) K( G0 ?2 ?6 w
a.blue:visited {color: #FF00FF}
- R L2 r H4 b5 c9 T1 I! G3 Q现在应用在不同的链接上:
9 ~$ x2 I2 C% m3 o+ e