Div+CSS佈局入門教程
( y9 R# n) f: d) m W; f x1 _4 q0 ~4 \. r6 t4 s) U
轉載請註明出自落伍im286.com,本貼地址:http://www.im286.com/viewthread.php?tid=1965636) a$ V% d' F- m: _4 H
0 l* Y' I1 Z. H; [( g2 C
( i: u7 Z( T0 R1 ]一、頁面佈局與規劃; t! u/ x# A6 G' Y! x
- U( V$ u1 x8 ?- V4 ` 好久沒有認真寫點東西了,想起最近這些時間經常有朋友問到我有關於DIV+CSS佈局的問題,其實歸根結底還是由於沒有入門造成的。那麼接下來的這篇文章就帶領大家入門吧...
+ ~. i& g$ c7 n* s1 O; A
7 k# h* u) m$ J* v 在網頁製作中,有許多的術語,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我們將會用到一些有關於HTML的基本知識,而在你學習這篇入門教程之前,請確定你已經具有了一定的HTML基礎。下面我們就開始一步一步使用DIV+CSS進行網頁佈局設計吧。 i$ f$ [- F9 e
4 v+ }2 a; W, ~. k
所有的設計第一步就是構思,構思好了,一般來說還需要用PhotoShop或FireWorks(以下簡稱PS或FW)等圖片處理軟件將需要製作的界面佈局簡單的構畫出來,以下是我構思好的界面佈局圖。
: p# v0 S4 ^' g# I( s! ?/ o5 | $ B4 K& B! m+ @+ C/ M, I% P" B* A6 {" P
下面,我們需要根據構思圖來規劃一下頁面的佈局,仔細分析一下該圖,我們不難發現,圖片大致分為以下幾個部分:: T7 Z7 Y# s, [5 ]; N" m/ j
1、頂部部分,其中又包括了LOGO、MENU和一幅Banner圖片; M8 }0 x+ X& H) N# ]- X
2、內容部分又可分為側邊欄、主體內容;
: u4 E' V& j& x 3、底部,包括一些版權信息。
; O3 ~4 t% n, g& f5 d$ t: i) [ 有了以上的分析,我們就可以很容易的佈局了,我們設計層如下圖:& E7 _( w5 c* g& m$ u V
根據上圖,我再畫了一個實際的頁面佈局圖,說明一下層的嵌套關係,這樣理解起來就會更簡單了。: C9 ~7 u! f7 C' j$ P; z

7 M; |; d" m( k8 _4 _ DIV結構如下:/ y; d) M& _* v% y
│body {} /*這是一個HTML元素,具體我就不說明了*/
) M ]4 k. r$ W* H2 z2 e+ e8 \; X └#Container {} /*頁面層容器*/
! a4 m( a6 n0 Y5 m+ o' y ├#Header {} /*頁面頭部*/
' h! i: G2 {# e' L) W. J) g ├#PageBody {} /*頁面主體*/
- `* t1 P8 u! X │ ├#Sidebar {} /*側邊欄*/
" |+ G- _; U0 ]1 Q: U │ └#MainBody {} /*主體內容*/
8 h; N# q! z* l8 ]1 k6 w6 T └#Footer {} /*頁面底部*/
5 h! E$ E. D( k" N% ^; _8 \* D 至此,頁面佈局與規劃已經完成,接下來我們要做的就是開始書寫HTML代碼和CSS。9 h* d5 T/ {+ [2 v, B) e4 a
; r" m$ K- M( k! z9 z
, ~/ e9 ~4 W% `2 q+ b3 U' m- |
二、寫入整體層結構與CSS8 l' S! a. X* p) [
) N5 {! t% }% A- ~ 接下來我們在桌面新建一個文件夾,命名為「DIV+CSS佈局練習」,在文件夾下新建兩個空的記事本文檔,輸入以下內容:: M6 \" k' y% S* J0 x E% B
程序代碼% E6 A' P H3 o [" Y# u
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
& o! N8 C, s, t3 W0 O<html xmlns="http://www.w3.org/1999/xhtml">$ k0 a/ m( S. }8 ?4 e/ j: ^
<head>$ i, f) g( I) M- c3 I9 L8 H6 J
<meta http-equiv="Content-Type" c />4 t6 p! i' s- S
<title>無標題文檔</title>
" c: S# L( @. n1 T5 I5 Q$ X<link href="css.css" rel="stylesheet" type="text/css" />
3 i5 |. t9 D) g; U</head>9 q; x: [! x& P' \
' a: `* G" z$ ?' R5 M* Q<body>+ O+ h/ i- E4 y
</body>
& g/ r0 n, k! u; [% m8 Y2 j( F</html>
" R1 n7 N' `- ^7 W1 Q& q8 v- @" I$ L% |7 g* u+ ~6 H
# y+ b9 e9 K0 n; X$ ?- u* f# E. K2 ], o6 {3 ^) V; A( F) c( G2 b
這是XHTML的基本結構,將其命名為index.htm,另一個記事本文檔則命名為css.css。
. U9 n* C& U9 E9 v, Q& n3 w
2 S$ q, C, V8 R0 d- q, W 下面,我們在<body></body>標籤對中寫入DIV的基本結構,代碼如下:
/ y+ m5 ^0 Z! h6 H+ D" Z% M# z; H, k9 U' [
程序代碼
1 C4 B1 E+ l" y c
2 c! J* P) k2 }! K s- {7 p<div id="container"><!--頁面層容器-->
) B' Q( s+ H: j! `) H+ z <div id="Header"><!--頁面頭部-->
3 k) G9 q2 F* k1 x( z& ^ </div>
3 l5 W U+ ]+ v( ^$ ?* _* @ <div id="PageBody"><!--頁面主體-->
, G3 T+ Z0 w# B$ Q6 o; D <div id="Sidebar"><!--側邊欄-->& Q, x, S2 B. G8 ^6 ^, B, y
</div>
9 b8 r4 a; u5 U <div id="MainBody"><!--主體內容-->* s3 w# K% [3 I8 Z$ L
</div>! z/ u. ], g+ [3 O( _
</div>- o6 `% z. [" |% h- H
<div id="Footer"><!--頁面底部-->
2 V1 V* |: I4 P0 T/ x </div>8 Z9 n) G- X0 L" i
</div>
: ~5 V% X2 a u3 E+ ?
% @) v- N4 a6 Y# m- d+ V. I: g! L7 k8 u
w k$ g ]7 t0 O K5 X2 I* }. v& R% }. j
為了使以後閱讀代碼更簡易,我們應該添加相關註釋,接下來打開css.css文件,寫入CSS信息,代碼如下:
. C/ A' W' d' ?" t7 M8 U" W9 `1 f: ~/ x
( g# f! U; H9 p- ^ y/ e
程序代碼
) @& I, K* K5 n' v2 X
7 Z4 k3 a4 K, i' I+ [/*基本信息*/" {; |0 v5 p0 q
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}
/ o* K% P# c# E+ b3 W' U, H4 |6 G
/*頁面層容器*/
; t7 \8 h' p' h9 H#container {width:100%}
7 j. k ?& a; K% `( J b4 B- B9 i9 g$ A( u/ P! |* i5 y
/*頁面頭部*/7 Y: U2 e: P! J2 q3 a/ W; B1 q
#Header {width:800px;margin:0 auto;height:100px;background:#FFCC99}
) f7 O, q; A# N2 S6 A4 w! _2 v- \2 ]* c" a D5 I' B/ N
/*頁面主體*/! o) F" ?$ R7 [% L
#PageBody {width:800px;margin:0 auto;height:400px;background:#CCFF00}
& k$ c7 i& D- Y4 e! r5 X A! g% G; z( v' S- e& ~ s
/*頁面底部*/# e' o# m0 D* t( _8 r: e, a
#Footer {width:800px;margin:0 auto;height:50px;background:#00FFFF}7 D; o3 n! w& O- [
$ N" f, y5 `5 n* u& Z
u& m& h4 o2 l. Q# \" S) N
# x/ [+ u- I) n' i& C6 m 把以上文件保存,用瀏覽器打開,這時我們已經可以看到基礎結構了,這個就是頁面的框架了。
. r2 d" F H. p! ] 關於以上CSS的說明(詳細請參考CSS2.0中文手冊,網上有下載):
2 S5 r, U2 a' X4 ]4 ^0 c& H% H o3 o o' X R9 p/ D
1、請養成良好的註釋習慣,這是非常重要的;! Y0 p( f/ |" A2 Y
. l/ r; b- M; d 2、body是一個HTML元素,頁面中所有的內容都應該寫在這標籤對之內,我就不多說了;- Z/ T6 `( d5 U0 z& w( {
3 ?7 J& o" z4 Z3 q! x# J7 O6 s6 n 3、講解一些常用的CSS代碼的含義:, P" P$ |9 P- ?4 e( _: P% f) t: M- \
8 f: L+ n. Z+ | Y" Y8 ^
font:12px Tahoma;
* m2 x, n2 l/ A3 r 這裡使用了縮寫,完整的代碼應該是:font-size:12px;font-family:Tahoma;說明字體為12像素大小,字體為Tahoma格式;
( D$ [. {1 o/ D
0 h' D! _# X4 \* V0 p margin:0px;8 Z/ L4 L( y9 }7 D( V' n
也使用了縮寫,完整的應該是:
' q6 n1 P l! N$ n0 e2 O4 }& W. j4 I* N |" V7 B
margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px6 a* O4 {8 w d: p
或
& m2 c% V; w" q% ^" B! ~; y margin:0px 0px 0px 0px, G- K* U, L& y8 y, \9 @
) n8 P8 B3 s% B* Q' @/ g/ G
順序是 上 / 右 / 下 / 左,你也可以書寫為margin:0(縮寫);
# ~% |# ?4 ^, o6 U9 } 以上樣式說明body部分對上右下左邊距為0像素,如果使用auto則是自動調整邊距,% P' h: T) e; _% p/ d, w0 q
另外還有以下幾種寫法:
7 l+ S1 N7 x/ @9 w margin:0px auto;6 u- _( d+ [0 c6 O {+ n, l
說明上下邊距為0px,左右為自動調整;
6 z+ k+ Y6 S% F) U2 b 我們以後將使用到的padding屬性和margin有許多相似之處,他們的參數是一樣的,! Z3 S, S# P& q0 ?0 L+ V7 p
只不過各自表示的含義不相同,margin是外部距離,而padding則是內部距離。+ }) \' y7 T7 j6 B* y
( W; I: W! }2 [/ ?5 Z# r; j, E text-align:center
8 O0 F$ C, n2 n, x+ t# _: @ 文字對齊方式,可以設置為左、右、中,這裡我將它設置為居中對齊。' N: ?+ V* W( ^3 @0 o
2 M& Z8 f4 p5 P5 K9 `$ l4 a
background:#FFF$ j! e; u0 a2 M' W2 X: ^) J9 E
設置背景色為白色,這裡顏色使用了縮寫,完整的應該是background:#FFFFFF。
/ s2 G: b5 Y7 L% { d W2 L background可以用來給指定的層填充背景色、背景圖片,以後我們將用到如下格式:
0 ?5 W1 @! X% {- G2 [* |+ j background:#ccc url('bg.gif') top left no-repeat;
! s: T) e2 `& ?- |! I 表示:使用#CCC(灰度色)填充整個層,使用bg.gif做為背景圖片," M0 `; R( n9 R2 q2 \3 h6 D9 K+ e0 R
top left
- N3 b9 ^& b4 S+ G) W* s f7 d 表示圖片位於當前層的左上端,no-repeat表示僅顯示圖片大小而不填充滿整個層。1 K! X0 T; E7 U. z1 i2 H
top/right/left/bottom/center& z" |+ u( V8 \4 g7 |8 H
用於定位背景圖片,分別表示 上 / 右 / 下 / 左 / 中;還可以使用
9 F" F0 z/ h6 [5 A background:url('bg.gif') 20px 100px;
" B3 u" e! H: U; C, a 表示X座標為20像素,Y座標為100像素的精確定位;
" x& l- j: }% ]# p5 u repeat/no-repeat/repeat-x/repeat-y
8 ?* u$ J, {7 d% ]! N& h 分別表示 填充滿整個層 / 不填充 / 沿X軸填充 / 沿Y軸填充。
- X( x/ |9 V+ I+ S# f! _3 C
. {! z/ J7 x- J& P5 K- ^, h height / width / color 4 N4 Z# q. O% E( C) M
分別表示高度(px)、寬度(px)、字體顏色(HTML色系表)。! X( E# i( O! I O$ ~5 @
; f( \' m' [) i+ G$ y 4、如何使頁面居中?
2 K8 f1 r7 \& Z1 C: U. u P0 U; | 大家將代碼保存後可以看到,整個頁面是居中顯示的,那麼究竟是什麼原因使得頁面居中顯示呢?1 k. b2 [% K% f0 R4 t
是因為我們在#container中使用了以下屬性:5 [5 q( a8 O6 y. [% F
margin:0 auto;
7 a: ^7 D/ y* d+ H" d 按照前面的說明,可以知道,表示上下邊距為0,左右為自動,因此該層就會自動居中了。
# N0 t; }. a3 b" K 如果要讓頁面居左,則取消掉auto值就可以了,因為默認就是居左顯示的。
& U: T9 |/ Y4 y1 t, n 通過margin:auto我們就可以輕易地使層自動居中了。
+ [( Q/ m. R3 E) q& q& c& j( F& ^2 v, P9 D/ A. B/ ^
5、這裡我只介紹這些常用的CSS屬性了,其他的請參看CSS2.0中文手冊。 現在進入貼吧,不用註冊就可以投稿了,把你的心情和經驗與大家一同分享吧!!請到相應的貼吧發貼哦,貼吧新開,人太少,不過希望大家能支持!!謝謝 點擊這裡【我要投稿】
, d; x# S/ [8 s# w
t+ J( y7 h X" |7 H/ O* \3 B三、頁面頂部製作(1)
4 p- D2 u5 `) p9 }
' O. n. ^' N5 c 當我們寫好了頁面大致的DIV結構後,我們就可以開始細緻地對每一個部分進行製作了。" L- L% P3 b( N$ T0 ]1 o
% k9 z5 }, z1 P9 o3 Z 在上一章中我們寫入了一些樣式,那些樣式是為了預覽結構而寫入的,我們把css.css中的樣式全部清除掉,重新寫入以下樣式代碼:
7 }9 m8 O& _/ J# c E5 P6 Z- C8 q" A* E
程序代碼
; x1 s/ g1 F6 P% b3 b7 B. ~7 `0 M& S/*基本信息*/- H5 \, e" s9 t& }7 l9 V- q5 [
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}' Q: J; q! C. H7 Q$ S, B, L) R4 u: |
a:link,a:visited {font-size:12px;text-decoration:none;}/ k& J9 B) r- q: E4 V3 H3 o& W
a:hover{}
) B' k! x1 \4 g O% p2 O
0 p3 R1 o0 V+ p" D* M% z% S+ G/*頁面層容器*/7 w4 w$ q4 F2 }: j2 K
#container {width:800px;margin:10px auto}
$ F( a2 @7 e9 M) ~0 z" k& o
9 ~% @5 |; z3 P. d+ p2 i
5 k" [7 ~% I1 @) Q, b 樣式說明:
! ~* q8 |0 g+ c+ z+ {, S! v
8 }& y% E1 M! g1 d& W7 g( @$ a a:link,a:visited {font-size:12px;text-decoration:none;}& S& r' \: v) o$ ]( m
a:hover {}: C1 v/ w1 m. |4 x! ?! m' q: w5 W
/ T, x0 z% u5 u6 D {& ^; u6 V
這兩項分別是控制頁面中超鏈接的樣式,具體我就不說明了,請大家參閱手冊。' f% a, S( q& {' r0 q
; t( G2 n! d2 A #container {width:800px;margin:10px auto}/ n6 y0 H. A& B1 m" ]( w
# j& ^% r; W6 p6 _3 A8 _8 Y 指定整個頁面的顯示區域。1 ?' Y% `. q$ }, Z( |1 E* M7 g( w; x
width:800px指定寬度為800像素,這裡根據實際所需設定。
z, O; P7 H1 i margin:10px auto,則是頁面上、下邊距為10個像素,並且居中顯示。% T! @3 z4 K% A' g3 B4 {
上一章中我們講過,對層的margin屬性的左右邊距設置為auto可以讓層居中顯示。
" D) K+ ^6 ?9 ^; p# W j" m/ p
) D( }, u$ K e; L 接下來,我們開始製作TOP部分,TOP部分包括了LOGO、菜單和Banner,首先我們要做的就是對設計好的圖片進行切片,以下是在FW下完成的切片:
5 b9 C6 r7 @; o. g% T 我將TOP部分切片為兩部分,第一部分包括了LOGO和一條橫線。由於LOGO圖片並沒有太多的顏色,這裡我於是將這一部分保存為GIF格式,調色板選擇為精確,選擇Alpha透明度,色版為白色(此處顏色應與背景色相同),導出為logo.gif,圖像寬度為800px。/ s" s% ]/ P! }6 h/ u# r" ~
* e2 `- x% k( r+ M/ ^1 U$ Y
到這裡,有的朋友就說了,* 為什麼要使用GIF格式?使用JPEG不是更好嗎?/ y. f/ C2 o6 x+ S1 ~0 G, `
因為GIF格式的圖片文件更小,這樣能使頁面載入的速度更快,當然使用此格式之前必須確定圖片並沒有使用太多的顏色,當我們使用了GIF格式時,從肉眼上並不能看出圖片有什麼太大的變化,因此這是可行的。/ P, @. U9 e5 e0 u1 n2 B& v
K b: m$ D& U: B; z3 L X4 O
* 接下來的Banner部分還能使用GIF格式嗎?
: w/ e" f8 t- Y2 U; |% F 答案是不能,因為Banner部分是一個細緻的圖片,如果使用GIF格式顏色會有太大的損失,所以必須使用JPEG格式,將文件導出為banner.jpg。
# V- k/ T) h6 B6 R% [( a6 @0 H6 z* V8 Z7 I
* 合理的切片是非常之重要的,因為切片的方法正確與否決定了CSS書寫的簡易程度以及頁面載入速度。* C( x9 k6 l* E
2 {& k3 [/ V1 Z( c9 s 切好片後,我們還需要對TOP部分進行分析並將DIV結構寫入Header中代碼如下:5 k' }' J. {6 g" ]/ U9 Z5 D
$ x- Y7 B: Q3 @! [) [
程序代碼
7 G3 a5 \6 I8 s <div id="menu">
' F' \% q; y- w# U% W, f7 k3 ? <ul>* J( }" m: Q9 K& `) i, L" h
<li><a href="#">首頁</a></li>
' f0 D& Y* n1 b' b Q8 e <li class="menuDiv"></li>+ S7 n/ n0 q( ]& ?
<li><a href="#">博客</a></li>
& I+ y* q5 D) p+ f: U4 M+ I R$ k( i <li class="menuDiv"></li>
0 G8 b/ ?2 l7 c8 q6 A% b <li><a href="#">設計</a></li>8 L; |* F' R8 |. x* [% S
<li class="menuDiv"></li>
' \0 s. R, h! s9 Y `. I% b ^& t <li><a href="#">相冊</a></li>
4 q( b1 U1 D# \4 V- K: m* v' O <li class="menuDiv"></li>
" M9 [! Q2 V! _: q- | <li><a href="#">論壇</a></li>
6 f* c. C% U; r0 p. h: g <li class="menuDiv"></li>/ O* p- M+ i/ J
<li><a href="#">關於</a></li>
, Z$ s$ [7 C1 n. b; F. B l </ul>
; N- U8 L1 a7 ^ </div>
( k- h( n3 u0 N5 m' f; x( K <div id="banner">
. F9 O, i# p( d0 o# `, r </div>% S+ ^5 s, u) |' I# J- V: m
4 l/ u: D+ h! V ?* r0 a& o% }+ ~% C6 c; i6 J5 {( {: ]% g
為什麼要這麼寫呢,因為對菜單使用列表<li>形式,可以在以後方便對菜單定制樣式。
+ ^" n1 Q: R$ a% q- v: Y" ]) w5 v6 I1 l& O
而為什麼要添加以下代碼呢?1 c. ?* w3 i- W6 b3 ^0 g- j
<li class="menuDiv"></li>! B# e2 P" A. T- v8 c0 a
插入這一段代碼是可以方便地對菜單選項之間插入一些分隔樣式,例如預覽圖中的豎線分隔。
( a0 H4 w' s4 |; m/ J0 n! U9 J" k, ]6 Z
然後我們在css.css中再寫入以下樣式:
3 a( S6 C& ]0 O4 [/ q! Z' u4 q5 i( j+ N! D
程序代碼
* w. O' }) V. V }% v! x/*頁面頭部*/, o1 Z+ X9 a: O. o7 \' S! |6 w$ T% Z2 u
#header {background:url(logo.gif) no-repeat}
) q3 _- i" t/ v7 T/ O8 B; T! Z( i6 h7 e
4 F* w* ]! Z" I& [
樣式說明:
8 L9 r' [. j3 i; L# S #header {background:url(logo.gif) no-repeat}+ H* ~& S$ D$ |9 A! C
給頁面頭部分加入一個背景圖片LOGO,並且不作填充。
$ H# {" p+ [, H+ f4 O7 z2 F" K, v, y$ ]1 x+ r$ s H9 w
這裡,我們沒有指定header層的高度,為什麼不指定呢?
, q5 f' z2 `: d: N' H: W
' I" o- p: G( x! O 因為header層中還有菜單和banner項,所以層的高度暫時是未知的,而層的屬性又可以讓層根據內容自動設定調整,因此我們並不需要指定高度。# g3 R- }' v& V% x% P! K
現在進入貼吧,不用註冊就可以投稿了,把你的心情和經驗與大家一同分享吧!!請到相應的貼吧發貼哦,貼吧新開,人太少,不過希望大家能支持!!謝謝 點擊這裡【我要投稿】- j6 x) E( |' B9 j- s
. z( _' N! f2 g/ m% \1 b1 n8 x
三、頁面頂部製作(2)----使用列表<li>製作菜單+ B9 |; c v4 ]: w& ~# ]7 C0 N
0 i- ~* l1 L7 \+ G 開始此節的學習前,請確認你已經參照之前的幾節內容寫入了DIV、CSS到index.htm和css.css文件中。
9 g! {% O0 U( m2 s% c2 C' P/ l$ e 這一節我將告訴大家如何用列表<li>來製作菜單。
$ c Y$ w. W8 Y0 Y5 n, |- E* n 程序代碼! k N/ O) {. Y- L/ D
<div id="menu">
* e# z0 Y1 S \- T K S <ul>0 ]1 g0 R/ [, p- C% o* Z: k
<li><a href="#">首頁</a></li>5 T; }* K; _- u" j: ^' z
<li class="menuDiv"></li>
( B+ A' X+ A* ? <li><a href="#">博客</a></li>6 l$ j6 k- h) L6 ?# J' ~
<li class="menuDiv"></li>
8 r7 }, [' t- L- P% k, {/ y# l' P <li><a href="#">設計</a></li>' I5 N4 |. r: Z: k9 b0 ^1 L
<li class="menuDiv"></li>! g. @/ E7 _% O0 W& J
<li><a href="#">相冊</a></li>
, |- I5 F, y( O Q( L8 Z <li class="menuDiv"></li>9 X% c% J7 { b; z2 Y) F m9 p7 ?/ @
<li><a href="#">論壇</a></li>9 |) b% f9 o9 |1 R" O. N
<li class="menuDiv"></li>
2 P' J: B2 x4 y, F <li><a href="#">關於</a></li>: u6 G) _& a% n8 E
</ul>
2 y+ A6 D) T2 \( T! E- k' @, [+ h& p </div>2 }& f/ ?/ N0 K2 C
' X: `" _ Q2 \- K
8 Z, c# Z& b) G 以上是這部分的結構,有關於<ul></ul>、<li></li>這兩個HTML元素大家自己去參考相關的內容吧,它們最主要的作用就是在HTML中以列表的形式來顯示一些信息。
1 D9 {# q, N9 J9 c! q* h& z7 I0 ?" Z* j6 h* ]0 y# r
還有一點需要大家一定要分清楚的,當在HTML中定義為id="divID"時,在CSS對應的設置語法則是#divID{} ,如果在HTML中定義為class="divID"時,則在CSS中對應的設置語法是.divID。2 a, D9 G) [7 b, H
如果id="divID"這個層中包括了一個<img></img>,則這個img在CSS中對應的設置語法應該是#divID img {},同樣,如果是包含在class="divID"這個層中時,則設置語法應該是.divID img {},這一點希望大家要分清楚了。0 {! i- Z+ J( l8 W* \2 o
另外,HTML中的一切元素都是可以定義的,例如table、tr、td、th、form、img、input...等等,如果你要在CSS中設置它們,則直接寫入元素的名稱加上一對大括號{}就可以了。所有的CSS代碼都應該寫在大括號{}中。( N2 L# B( ^/ s8 X
. o8 Z7 A6 _2 J1 e9 v
按照上面的介紹,我們先在css.css中寫入以下代碼:
4 @; O, u, z( l+ h! }. K7 I 程序代碼$ |3 u# ^; F* e8 N8 O$ z
#menu ul {list-style:none;margin:0px;}
4 y) N% c5 V0 F; P5 Y+ P0 d#menu ul li {float:left;}: h% J- A! J- X' H$ |8 z3 M+ K+ w
4 f7 b- u* f. J K7 B' ?& h5 L
. ]' @, n+ q' S* H* \ 解釋一下:
5 Q0 @4 h- X. |9 r #menu ul {list-style:none;margin:0px;}
) l3 u' R3 \! s. v) k$ Q* @ list-style:none,這一句是取消列表前點,因為我們不需要這些點。
8 v) G2 C6 b" l. Y! u margin:0px,這一句是刪除UL的縮進,這樣做可以使所有的列表內容都不縮進。
8 C) S# `9 K! I9 f) I
: T3 Z* P! C1 \9 V #menu ul li {float:left;}
# R& y; `) E" E/ Q* `- X 這裡的 float:left 的左右是讓內容都在同一行顯示,因此使用了浮動屬性(float)。" ?: t0 H- B) s6 X }
6 Q% }6 N# A9 ^( W) j& |* g; g 到這一步,建議大家先保存預覽一下效果,我們再添加下面的內容,效果如下:: {( M0 y {1 ?
7 _. ^; W% g9 H. B0 W- I7 l
7 J3 r( F: R( x: y1 V( E5 l
/ w+ u e, j+ Q6 r1 X r
這時,列表內容是排列在一行,我們在#menu ul li {}再加入代碼margin:0 10px:
- j1 v% M% b) c! V% v3 t 程序代碼, r, b4 }* B9 H
#menu ul {list-style:none;margin:0px;}
1 O" s ` H5 V! L8 {+ y#menu ul li {float:left;margin:0 10px}) a4 M' I5 P% b9 m% `4 @' A+ ?$ l
/ W5 A: E# w& Z
9 D% k1 D# u" p% R* d7 O7 c
margin:0 10px的作用就是讓列表內容之間產生一個20像素的距離(左:10px,右:10px),預覽的效果如下:
$ R H- e8 z2 s+ B Q! p4 D1 j2 c4 Z) P4 ]: r/ m" }

8 a# K2 J3 y7 v* o ` w2 { 現在,雛形已經出來了,我們再來固定菜單的位置,把代碼改成如下:
' d# C5 `; {! l0 @ 程序代碼
# o z5 A ?9 n#menu {padding:20px 20px 0 0}
/ }8 ~0 C. l, j6 W [) j" c9 g/*利用padding:20px 20px 0 0來固定菜單位置*/# Q/ v( q2 _0 u; i7 U1 V0 p3 F- L
#menu ul {float:right;list-style:none;margin:0px;}0 |$ y6 L6 R& N% S' Q! D6 y# M
/*添加了float:right使得菜單位於頁面右側*/" B% ?! E% u J7 u% x
#menu ul li {float:left;margin:0 10px}
9 m/ s* [2 _5 J% C* ?& L- u
: Z5 j4 v- Z; }3 h
T& y# N; z2 s
$ a" F- w, M( L: U* P 這時,位置已經確定了,可是構思圖中,菜單選項之間還有一條豎線,怎麼辦呢?* W: R6 G( F4 @- T$ E4 H- o
別忘了,我們早就已經留好了一個空的<li class="menuDiv"></li>,要想加入豎線就使用它了。
7 o8 G+ Y& O1 l5 U 按照上面說的方法,我們再添加以下代碼: * i2 |- V9 W' r
程序代碼% ]# ]/ ^/ ]& a- @4 ^
.menuDiv {width:1px;height:28px;background:#999}0 L; l; Q: @+ ~/ |% P! G) `
2 S* I3 B2 W0 F5 ?,保存預覽一下,豎線是否已經出來了?關於這段代碼就不多講了,應該是很容易理解的。: t- d! B! ^ p" c7 i$ E3 Q! B# N& t
7 x9 A; a7 x: S9 c& a& Q. w ' ]- n/ p; R% S8 j
" D( d! w. J; v- f( }
不過,菜單選項的文字卻在頂部,我們再修改成以下代碼: 7 F. ~. J3 |& E( B
程序代碼) q7 n* ^$ J- h( W
#menu ul li {float:left;margin:0 10px;display:block;line-height:28px}
4 m/ r; \* w( p+ g) A; x/ k4 }$ H9 W% l3 m! J# `' P, Z* O
4 C7 |( z2 d. w+ U' k4 l% g 關於display:block;line-height:28px大家可以去參閱一下手冊,我就不多講了。
h. v7 Z2 _2 S( F5 V& N$ ~6 N* W, P6 H& D$ i+ v' n
效果基本上已經實現了,剩下的就是修改菜單的超鏈接樣式,在css.css中添加以下代碼: - X4 ~8 t/ k' I
程序代碼
' N2 _$ x& D ^5 N# j& C#menu ul li a:link,#menu ul li a:visited {font-weight:bold;color:#666}
7 i$ m7 W3 b: _9 d#menu ul li a:hover{}
2 L: D, _. `+ p8 A
! ~2 B9 P- k: Q* A; b3 o1 m; \: b% C0 \: n
這個也不多說了,沒什麼好說的了,最後的效果如下:
- y# Q! ?4 J& x, M& L) J
! H/ ~0 c6 N; I7 v/ }. S( d# Q1 s
8 W* }" A' q/ B. M5 h' } X: S 這一節到這裡就完畢了,順便把素材提供給大家:0 V9 x$ S0 e3 U/ j
構思圖: 點擊下載' _6 g' i, q# g1 ]& ]$ G( m
HTML和CSS源文件: 點擊下載
# @/ {) \) t% k/ d* T# v- y四、頁面製作(1)----用好border和clear6 L, K( o$ H4 F8 d( x. e2 R
; U9 {# k+ y; t1 `* S
由於找工作找房子的原因,隔了這麼久才能開始寫教程,心裡感覺很對不起一直在關注本站的朋友,今天是找到房子的第二天,於是趕快繼續寫教程。
3 v/ L- p- Q! `- Z+ z0 \0 Y5 G$ U1 y/ l' S+ H
這一節裡面,主要就是想告訴大家如何使用好border和clear這兩個屬性。
9 y% C& d- C, c j, a+ b/ ^- m2 G2 E- q: d( A2 s1 x$ `2 H8 O: {, Q( s! x
首先,如果你曾用過table製作網頁,你就應該知道,如果要在表格中繪製一條虛線該如何做,那需要製作一個很小的圖片來填充,其實我們還有更簡單的辦法,只要在<td></td>中加入這麼一段就可以了,你可以試試:2 l7 r+ U- d9 I6 G4 {' a) n5 n
<div style="border-bottom:1px dashed #ccc"></div>0 {" ]& E' n6 }
) F* P( O; ?1 Q- T2 P
大家可以再次參考手冊,然後你就能明白dashed、solid、dotted...等的作用,利用它們你可以製作出許多效果來,實線、虛線、雙線、陰影線等等。. C9 d. R4 _% ?- r
- G( [4 j$ ]- S/ t* q$ m 程序代碼; L3 T7 V/ i k, d: ]0 J( s6 M. U
<div id="banner"></div>
# I5 F7 S O: [& b
) C# y* n; ^0 a- T6 T; `( ^- {: h- G
以上代碼便可以實現設計草圖中的banner,在css.css中加入以下樣式:
) S7 ~7 b g) E. L5 T
8 F" E+ |- Q" t0 A7 \, _' N+ ?' I 程序代碼# p( \ V# T6 `, }
#banner {
1 M+ M3 b4 t1 _3 z. U) Y1 B background:url(banner.jpg) 0 30px no-repeat; /*加入背景圖片*/5 {! |; n. Y ]0 k+ k4 T
width:730px; /*設定層的寬度*/0 b2 O% X! L( h5 Q2 T" ]1 _: ~
margin:auto; /*層居中*/5 \3 a) |2 j E7 y9 a' j P
height:240px; /*設定高度*/
/ v4 E- Q+ B7 J, W border-bottom:5px solid #EFEFEF; /*畫一條淺灰色實線*/
' C/ t. v& a2 d, M" V' C& _; `* _5 y% D* t clear:both /*清除浮動*/
7 ^1 K8 Y+ g5 k3 H+ m}
" x: g* |3 S: i( j, L/ o1 R1 M8 k- u J
* {4 X# j; Y" e6 W- X; T/ D 通過border很容易就繪製出一條實線了,並且減少了圖片下載所佔用的網絡資源,使得頁面載入速度變得更快。
6 E2 |, Y' d: L) l8 Y; w- }
& Q- z: b8 ]) r# P& m& ] 另一個要說明的就是clear:both,表示清除左、右所有的浮動,在接下來的佈局中我們還會用這個屬性:clear:left/right。在這裡添加clear:both是由於之前的ul、li元素設置了浮動,如果不清除則會影響banner層位置的設定。
7 |( ^# M1 ~9 i8 M
" {) M% Q, h" }9 w/ G: W 程序代碼
6 W" n2 i* \/ y, T/ v- d% s<div id="pagebody"><!--頁面主體-->: q+ C: E8 M. S' H) I D
<div id="sidebar"><!--側邊欄-->
; j- r* ?# I3 z$ n </div>
, C: k2 e; i) `5 R/ x <div id="mainbody"><!--主體內容-->1 x' Q7 u1 E8 Q1 {
</div>6 E) J$ M) z& C& ^. C4 T
</div>
% ]2 F7 |4 [7 T+ j# S5 P% t6 h9 J- Q5 y) p3 N+ Q
) r, D9 ]9 k6 M1 B, m. o5 q 以上是頁面主體部分,我們在css.css中添加以下樣式:; g6 k2 p$ A' N/ P: E( j
. @% p' c8 Q, T3 w3 x G$ w
程序代碼' Z* H o4 L1 \; Y0 ~0 p6 ? L
#pagebody {5 W3 p |1 S4 X+ m9 k
width:730px; /*設定寬度*/4 @5 _4 C4 K+ ^, r* X% _: q' F, @
margin:8px auto; /*居中*/, E" h! i+ H2 s v' y: _% h* s
}
8 A! z9 I6 \# H#sidebar {% F, m) Q$ b0 c {( ]+ i# i. c2 \
width:160px; /*設定寬度*/
2 r* K) Z9 j6 T x V/ l- [/ ` text-align:left; /*文字左對齊*/, v& T, b* @# a
float:left; /*浮動居左*/) M0 H5 ?/ @7 o) K5 [" P% p+ I, l/ t
clear:left; /*不允許左側存在浮動*/
. m8 r% X9 U* U5 j& C/ o& u, G3 m overflow:hidden; /*超出寬度部分隱藏*/
5 Q' ^; w, {% R# t5 B}5 z7 |" W2 y V( A
#mainbody {( p; f: W% ~# i
width:570px;
/ {) u8 y; {* p+ Z; o- ~ text-align:left;
' T' ]( J; \4 `0 O float:right; /*浮動居右*/
W( M( U0 ^! W1 K clear:right; /*不允許右側存在浮動*/
4 {; w. X* g+ N% b overflow:hidden7 Q$ ^+ ^( `) ?# {
}
- h8 t5 s9 n. h! ?0 w$ S4 a6 ?. j$ `; r0 a0 v- ~# k2 i# f
4 E4 P2 I5 P) ~9 ]( e; N S- Z 為了可以查看到效果,建議在#sidebar和#mainbody中加入以下代碼,預覽完成後可以刪除這段代碼:
+ i( l& z/ h4 O. E# {. r. G7 w
, w x) b/ `0 t- r; \) ` 程序代碼
5 T: u1 [3 h8 L- s0 ~' Oborder:1px solid #E00;+ G) C, w7 q7 ]
height:200px7 F- Y/ s) H! t$ Z$ y4 I# s8 H( l9 e
% Y, ?7 @/ L2 f* G5 D4 D
. ]8 t9 s v+ t5 [/ G2 G+ x5 }. M 保存預覽效果,可以發現這兩個層完美的浮動,在達到了我們佈局的要求,而兩個層的實際寬度應該160+2(border)+570+2=734px,已經超出了父層的寬度,由於clear的原因,這兩個層才不會出現錯位的情況,這樣可以使我們佈局的頁面不會因為內容太長(例如圖片)而導致錯位。
P2 E# o# ^& d/ P: y3 l; g/ H' ^ , C7 H0 a9 r8 j
而之後添加的overflow:hidden則可以使內容太長(例如圖片)的部份自動被隱藏。通常我們會看到一些網頁在載入時,由於圖片太大,導致佈局被撐開,直到頁面下載完成才恢復正常,通過添加overflow:hidden就可以解決這個問題。: E' {, I9 R, ?7 y) `3 Z& {0 S
# W; t) e" i* H& N/ ~" P% K
CSS中每一個屬性運用得當,就可以解決許多問題,或許它們與你在佈局的頁並沒有太大的關係,但是你必須知道這些屬性的作用,在遇到難題的時候,可以嘗試使用這些屬性去解決問題。
' p7 Q" _( N- m/ n0 ^1 g& _ |
|