Div+CSS佈局入門教程. k( b* t3 h0 B
$ b7 h% A* R' n2 J/ c5 `
轉載請註明出自落伍im286.com,本貼地址:http://www.im286.com/viewthread.php?tid=1965636" O0 G/ b1 W# C$ C
& B8 j) m+ g5 p2 @" J
, `& j8 i3 J- ]# M; E( ^一、頁面佈局與規劃
" F j3 m: _$ m( G7 F% W+ \+ T. b! A
好久沒有認真寫點東西了,想起最近這些時間經常有朋友問到我有關於DIV+CSS佈局的問題,其實歸根結底還是由於沒有入門造成的。那麼接下來的這篇文章就帶領大家入門吧...- j" E4 N6 m1 L3 }' d0 Z2 O, L
1 \ ?( [1 h& m2 w% R" ` e9 J 在網頁製作中,有許多的術語,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我們將會用到一些有關於HTML的基本知識,而在你學習這篇入門教程之前,請確定你已經具有了一定的HTML基礎。下面我們就開始一步一步使用DIV+CSS進行網頁佈局設計吧。7 ?/ ~$ O6 g/ R O" }. B9 q# v+ ?0 @
9 z9 m; ^% H; F, _, V; d 所有的設計第一步就是構思,構思好了,一般來說還需要用PhotoShop或FireWorks(以下簡稱PS或FW)等圖片處理軟件將需要製作的界面佈局簡單的構畫出來,以下是我構思好的界面佈局圖。+ C0 M1 J& A8 v1 A* C( ? a

( A0 D6 R2 L8 L0 ]4 |2 [2 y 下面,我們需要根據構思圖來規劃一下頁面的佈局,仔細分析一下該圖,我們不難發現,圖片大致分為以下幾個部分:! {2 N/ O S) {, p" X! Z
1、頂部部分,其中又包括了LOGO、MENU和一幅Banner圖片;+ h f$ ~# r/ V$ j2 H; a/ N
2、內容部分又可分為側邊欄、主體內容;; S5 H! G/ l( v4 f
3、底部,包括一些版權信息。
" W( x4 M$ [: W7 V! E/ n2 L 有了以上的分析,我們就可以很容易的佈局了,我們設計層如下圖:
) v' \( \/ `/ d# C$ O( j! a5 v 根據上圖,我再畫了一個實際的頁面佈局圖,說明一下層的嵌套關係,這樣理解起來就會更簡單了。
8 Z- P& n e9 g8 [, o, m0 H% Z ( J- J" ~- R/ |4 C6 G
DIV結構如下:
9 r1 Q( z G# `) _4 U │body {} /*這是一個HTML元素,具體我就不說明了*/# w/ @+ D$ J0 F7 e2 L! K4 J% ]2 F1 X
└#Container {} /*頁面層容器*/! y9 Z' s2 R- \" G1 i9 ]- N
├#Header {} /*頁面頭部*/0 S ~* Y1 ^+ X A
├#PageBody {} /*頁面主體*/
! ]0 g3 `$ N- w5 x, u │ ├#Sidebar {} /*側邊欄*/3 ?' d3 X0 d4 L+ _, K
│ └#MainBody {} /*主體內容*/
5 a6 x1 ~5 u# @+ s i2 w └#Footer {} /*頁面底部*/" q( z- @$ A' k$ ^$ C
至此,頁面佈局與規劃已經完成,接下來我們要做的就是開始書寫HTML代碼和CSS。+ d9 v9 W& x4 B4 z8 d) }2 d
' H+ |5 R* c: r$ i4 @' I4 O
" i, z% T: w1 O: I2 ~( ?# b二、寫入整體層結構與CSS
7 C0 R- \) ^9 z O
. N& p1 z: a- v" c) ]5 u. |, f 接下來我們在桌面新建一個文件夾,命名為「DIV+CSS佈局練習」,在文件夾下新建兩個空的記事本文檔,輸入以下內容:
! n, o& I, z* Q) {% k 程序代碼" t x, w ?- m$ a: e& O2 a
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">* ]3 f9 i9 q/ @: @ ~
<html xmlns="http://www.w3.org/1999/xhtml">" |# @( G5 [# o. M
<head>
) l/ H+ Y y1 ]' n2 Q# O<meta http-equiv="Content-Type" c />
' ?: A- v C" x k8 h- a4 J4 d<title>無標題文檔</title>
4 ]* [0 I" w& C9 k<link href="css.css" rel="stylesheet" type="text/css" />
5 m' F9 s1 b% R) Z" j</head>
5 _' D$ V2 y/ i& U K% k
# l k; ]" W$ e" I4 j; T7 v<body>9 @. T7 D4 Z- F7 N$ A
</body>
( @: b0 U+ L! Y; ^! X& `+ t</html>4 q7 Z: O! a; g" \& H+ R( [( A: a8 J
: G4 b7 }2 x- O+ U
! @: E+ y" D! o2 A0 l! J
1 T9 Z. M. v) z. A" }" \; ` 這是XHTML的基本結構,將其命名為index.htm,另一個記事本文檔則命名為css.css。
+ |" Q" H. N+ N
3 j2 t# y! r& v" m. p. O4 F: L 下面,我們在<body></body>標籤對中寫入DIV的基本結構,代碼如下:4 J1 b* Y+ a. T
0 ]5 V. G3 t7 d- n' F) L
程序代碼
5 D3 l7 N# A) R& C7 ]2 o6 r! Y7 \
( m; U+ B/ h" }1 _<div id="container"><!--頁面層容器-->, x5 z( F- f, k, b
<div id="Header"><!--頁面頭部-->
& x9 d; X+ M9 |. G* f </div>
) B% y4 a# \* p6 L8 k: u9 R3 {" V! J <div id="PageBody"><!--頁面主體-->- W' B6 H. Q9 ~% V& T
<div id="Sidebar"><!--側邊欄-->! g5 H/ q' l1 x/ ?0 u8 k
</div>. O8 `" z+ K# q f
<div id="MainBody"><!--主體內容-->/ B* C- d @ X& V
</div>
. N3 G T8 ]! g2 e) a( X/ r </div>
: k4 P0 [4 T7 j( W9 G" n <div id="Footer"><!--頁面底部-->
% A+ j( S2 S6 G7 k </div>
6 e5 S0 A7 N/ J# p7 I</div>
3 h, W6 _+ I- q S' n9 q1 Z. P; l F6 L$ i. P- d& o/ q
2 W- m1 J3 N2 N" R# C- U1 t& D: V0 c& i2 f
為了使以後閱讀代碼更簡易,我們應該添加相關註釋,接下來打開css.css文件,寫入CSS信息,代碼如下:
' T2 n0 L, ]8 e! F! ?1 m" z5 ~( R' b4 x0 G; D1 D5 o: s+ ? H+ s" ?
0 ~* J& ~3 y; {' N& | 程序代碼) @$ q: r! N( o2 ~# R2 B' {. d
( F# ^- e7 e1 _/*基本信息*/$ T: g9 {8 Y8 b$ ~ ?
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;} | @0 f0 M( K5 A+ P9 f+ f) t( [
a+ M& O0 |: E# _, l, r3 U/ r/*頁面層容器*/
9 }8 q& k8 m* o1 R" n5 p#container {width:100%}
4 R: K0 U' o2 a# _7 m1 g
2 k! q: A6 T1 M/*頁面頭部*/0 p/ U& K! p$ `6 s8 @2 Q
#Header {width:800px;margin:0 auto;height:100px;background:#FFCC99}$ ]1 b) v; ~. J# O4 ^. j
, y3 Q- Z( N6 s+ k3 y: R7 G' ~1 h
/*頁面主體*/
$ ]/ C* k) C( ^& {( B#PageBody {width:800px;margin:0 auto;height:400px;background:#CCFF00}. ?; s5 L" w; s: M8 q
4 _9 V1 X G% H! ~0 |* K f/*頁面底部*/! s9 X0 D! u h' u K
#Footer {width:800px;margin:0 auto;height:50px;background:#00FFFF}0 }0 N+ i! Q! F `8 v( ^
' ~( o7 ~: Z( r
: d/ v5 |# F/ l- l
N8 u$ P/ U; l) z6 ?2 _ 把以上文件保存,用瀏覽器打開,這時我們已經可以看到基礎結構了,這個就是頁面的框架了。
- `% g" F, \+ g4 t, ~: ~ 關於以上CSS的說明(詳細請參考CSS2.0中文手冊,網上有下載):7 {3 y' }: K3 I7 T2 Z! p
% c' `2 w, [& I. V, b2 u6 F
1、請養成良好的註釋習慣,這是非常重要的;
% [7 D* H8 v- {- g, B( `1 V% E) k
2、body是一個HTML元素,頁面中所有的內容都應該寫在這標籤對之內,我就不多說了;0 @, c2 A& D0 a$ K8 s+ T
$ v' [& G4 _7 ?! T
3、講解一些常用的CSS代碼的含義:' `' K6 q) a0 A6 G- z8 ~- p" {1 Y
3 R, D( W- K4 ]6 Z8 z
font:12px Tahoma;0 ?* X5 y( }/ Q0 i7 V0 r
這裡使用了縮寫,完整的代碼應該是:font-size:12px;font-family:Tahoma;說明字體為12像素大小,字體為Tahoma格式;6 m7 c( U8 l L% k" C
, D2 i! J% `1 j! v% r margin:0px;6 } j/ d) k& B5 A @
也使用了縮寫,完整的應該是:
9 {) w; J+ N9 @+ {/ E' k2 Z# r( S$ W2 |# x$ A/ T @
margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px) S. p9 ^# A4 V _
或) x& ?5 z, k% H2 p) W
margin:0px 0px 0px 0px. c1 H- m" T! d: b/ A5 B; h7 l
. P% W5 _% [ D
順序是 上 / 右 / 下 / 左,你也可以書寫為margin:0(縮寫);" O6 _% h6 f+ R& t$ N
以上樣式說明body部分對上右下左邊距為0像素,如果使用auto則是自動調整邊距,
/ U, ]& `4 H) E! p; H6 |8 q 另外還有以下幾種寫法:4 A. b% { ]: m6 i; S
margin:0px auto;
% t& d! R8 P2 ~! F5 H" M 說明上下邊距為0px,左右為自動調整;" R* ] Y- v' P- @7 B& v% p k
我們以後將使用到的padding屬性和margin有許多相似之處,他們的參數是一樣的,0 E/ H. C# B! P9 L
只不過各自表示的含義不相同,margin是外部距離,而padding則是內部距離。7 v1 |* ^3 A. p" e
1 I8 C' a) ^* @* k$ |
text-align:center9 `1 l0 |+ N: r2 ]5 I/ R
文字對齊方式,可以設置為左、右、中,這裡我將它設置為居中對齊。
4 h; m2 c( ~1 s$ y9 F Q% y: f# B$ v$ Q+ H5 N, ?; F5 W. ^
background:#FFF
% Y! Y* g3 P: \4 }+ g+ I 設置背景色為白色,這裡顏色使用了縮寫,完整的應該是background:#FFFFFF。
4 s2 y" E' [' M. F, c$ H6 O, v& p background可以用來給指定的層填充背景色、背景圖片,以後我們將用到如下格式:
# M0 [( Z5 p( m& Z6 f5 {9 v& q i background:#ccc url('bg.gif') top left no-repeat;% A/ e( L7 W% F
表示:使用#CCC(灰度色)填充整個層,使用bg.gif做為背景圖片,
- T0 s; a3 d! E" A7 g& O6 v top left, M% q5 W: N0 b$ A
表示圖片位於當前層的左上端,no-repeat表示僅顯示圖片大小而不填充滿整個層。# Q0 ]+ U* A& x6 w
top/right/left/bottom/center
4 i. U/ U# C9 H2 w) C& h 用於定位背景圖片,分別表示 上 / 右 / 下 / 左 / 中;還可以使用
0 X+ G& o+ H% F background:url('bg.gif') 20px 100px;# x' e' j1 X1 j
表示X座標為20像素,Y座標為100像素的精確定位;5 {" m5 {& E2 f, c
repeat/no-repeat/repeat-x/repeat-y
% @& J' S( J: Z) A% r& X 分別表示 填充滿整個層 / 不填充 / 沿X軸填充 / 沿Y軸填充。
. e x1 Q* `3 N
3 t3 G4 L' G x$ g0 F$ q! T7 U height / width / color
+ B$ F" C3 h% K: e) Y8 i, \ 分別表示高度(px)、寬度(px)、字體顏色(HTML色系表)。8 H) l- `3 l; C9 `* ^. u
# z$ N" l7 B- V9 X) Y; r 4、如何使頁面居中?
' p+ g* @, E7 S. u5 u 大家將代碼保存後可以看到,整個頁面是居中顯示的,那麼究竟是什麼原因使得頁面居中顯示呢?
: G( y: t5 V5 t, d 是因為我們在#container中使用了以下屬性:
0 n% |$ b$ P* r margin:0 auto;
" ~; ]$ ]: P, {' }/ h5 f# B 按照前面的說明,可以知道,表示上下邊距為0,左右為自動,因此該層就會自動居中了。
* P. p# K) ?# O7 h 如果要讓頁面居左,則取消掉auto值就可以了,因為默認就是居左顯示的。
9 ^% l& S7 `% ]2 ]6 @5 C( U% g* Z 通過margin:auto我們就可以輕易地使層自動居中了。
# c' X' l, o3 h2 z- T0 E" F. [$ K5 }. |5 g* @$ ?
5、這裡我只介紹這些常用的CSS屬性了,其他的請參看CSS2.0中文手冊。 現在進入貼吧,不用註冊就可以投稿了,把你的心情和經驗與大家一同分享吧!!請到相應的貼吧發貼哦,貼吧新開,人太少,不過希望大家能支持!!謝謝 點擊這裡【我要投稿】. `/ \- v" M, V! O* r8 m* R0 ]; Y M% o
' v0 F# o, i7 f0 c) h7 H/ Y! ?三、頁面頂部製作(1)
5 U* s. J9 _6 j0 _( v0 p8 t* ~# Z* g2 h0 q. E+ Q+ `% O
當我們寫好了頁面大致的DIV結構後,我們就可以開始細緻地對每一個部分進行製作了。6 c% E. @8 }+ K5 Y6 a
: P/ a, t& J' g. S, E; [7 ^
在上一章中我們寫入了一些樣式,那些樣式是為了預覽結構而寫入的,我們把css.css中的樣式全部清除掉,重新寫入以下樣式代碼:8 A+ z1 @6 A. i0 T2 X1 l
! G: q. X9 ^/ N6 R9 H
程序代碼- Z! ~" p8 a0 F! z4 v0 y8 g" v
/*基本信息*/( S7 Z+ h/ k; U/ e4 `5 p+ [& ]' g
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}
( G. S6 N- v/ h9 R& }) Y7 aa:link,a:visited {font-size:12px;text-decoration:none;}
# g5 q. x% i8 B) F. x: A3 Oa:hover{}
_; u: b Y* r5 ?' [! B8 y2 l5 a
& R" T6 L3 W/ E! g6 ?/*頁面層容器*/" B' A, e' {: l ?6 a
#container {width:800px;margin:10px auto}
7 \3 K; b$ t. U, }, c# J" Y& I- G
7 W& r0 I' y" z d" }. I) t0 m/ ]9 W8 R+ }/ U. Q
樣式說明:
9 v4 Q0 [# v6 Q: F
U( q% q, I. {5 s3 ?7 O a:link,a:visited {font-size:12px;text-decoration:none;}1 f2 Z* H. _; S& c! D/ N! V
a:hover {}
7 h1 ~' V _6 `& |
7 R* r+ @: K$ D4 n9 p0 A1 M1 y 這兩項分別是控制頁面中超鏈接的樣式,具體我就不說明了,請大家參閱手冊。
2 I( \% m- q0 f6 x) j
8 y; c/ C, k8 U9 D #container {width:800px;margin:10px auto}9 T) c# G( d8 u( J
' m$ ?& J/ i5 c* U
指定整個頁面的顯示區域。
! s2 A% c- H6 G width:800px指定寬度為800像素,這裡根據實際所需設定。
/ t! y. \" n' L2 C1 Y( X margin:10px auto,則是頁面上、下邊距為10個像素,並且居中顯示。% p- O* [/ b; z
上一章中我們講過,對層的margin屬性的左右邊距設置為auto可以讓層居中顯示。
) M; g2 j0 C' v, u* O9 F) `6 q9 u0 {3 t* D- |/ P% F
接下來,我們開始製作TOP部分,TOP部分包括了LOGO、菜單和Banner,首先我們要做的就是對設計好的圖片進行切片,以下是在FW下完成的切片:
( C, ^& U1 r; _. T5 Y0 y' r 我將TOP部分切片為兩部分,第一部分包括了LOGO和一條橫線。由於LOGO圖片並沒有太多的顏色,這裡我於是將這一部分保存為GIF格式,調色板選擇為精確,選擇Alpha透明度,色版為白色(此處顏色應與背景色相同),導出為logo.gif,圖像寬度為800px。
g6 g- |. `0 S5 h! E6 w1 ]0 D( {; Y& S/ m3 m6 O7 Y
到這裡,有的朋友就說了,* 為什麼要使用GIF格式?使用JPEG不是更好嗎?1 {* H+ q+ I! l
因為GIF格式的圖片文件更小,這樣能使頁面載入的速度更快,當然使用此格式之前必須確定圖片並沒有使用太多的顏色,當我們使用了GIF格式時,從肉眼上並不能看出圖片有什麼太大的變化,因此這是可行的。
5 ^8 i$ C, B$ F: I$ C- N3 q
$ @6 `- c5 C( `5 B! ~3 m6 R * 接下來的Banner部分還能使用GIF格式嗎?8 u2 d5 M: N: ?7 G( P$ b
答案是不能,因為Banner部分是一個細緻的圖片,如果使用GIF格式顏色會有太大的損失,所以必須使用JPEG格式,將文件導出為banner.jpg。3 [6 `+ L% f3 L9 N0 @1 ]0 n% O% o
' u$ d# d5 L& ^+ _ * 合理的切片是非常之重要的,因為切片的方法正確與否決定了CSS書寫的簡易程度以及頁面載入速度。; I* K% ^ u' a& h. T
2 u* K* ?$ _) N5 F3 V
切好片後,我們還需要對TOP部分進行分析並將DIV結構寫入Header中代碼如下:/ w& n1 I% I- a
5 S# e7 m, [9 Z, m& q1 R
程序代碼
) V9 w3 C8 E ~2 n) i <div id="menu">
/ @6 _1 W _! E/ g* [6 l" B! T& ? <ul># ?# w* V) e' c! A7 }8 ]8 i, [
<li><a href="#">首頁</a></li>
& G! S# u- N2 S' j: a <li class="menuDiv"></li> X' @+ X" ~: n
<li><a href="#">博客</a></li>+ a* n# M* L0 \" Y! ~0 @5 [" V
<li class="menuDiv"></li>
2 }0 ]- l6 v6 K8 b* H <li><a href="#">設計</a></li>
$ Q: _0 P- ~/ x' Q4 r9 v <li class="menuDiv"></li>
: G0 |( f. M& \% r z; p" Z <li><a href="#">相冊</a></li>! W, b3 \- G; `# V
<li class="menuDiv"></li>0 m& L/ c$ C5 H8 b( [$ K Z+ z: A- z
<li><a href="#">論壇</a></li>: ^" b' V' G) E& R( |; b/ }+ p8 m
<li class="menuDiv"></li>4 V8 V$ v5 C0 U) c. ] G8 f% S
<li><a href="#">關於</a></li>
8 Q" ~, n5 C X& |+ K </ul>
" R: N& o; R: ~6 a$ {5 s </div>
. t7 p; m2 \6 ~: l n! L <div id="banner">
& r- d& x7 |$ _2 { </div>/ E+ t: ^8 L1 B3 D4 }
4 l; t, I) O) x7 J; V5 W j
. a. h- n i0 g8 X% p7 @, a$ W 為什麼要這麼寫呢,因為對菜單使用列表<li>形式,可以在以後方便對菜單定制樣式。
/ Q! V0 p) e6 n- n0 w5 U9 [5 T v+ ^ f e( {4 q9 \% C
而為什麼要添加以下代碼呢?& [6 R A- |# ^- D5 g
<li class="menuDiv"></li># g$ l' D$ `; v) L- u. e
插入這一段代碼是可以方便地對菜單選項之間插入一些分隔樣式,例如預覽圖中的豎線分隔。; N# x& m) ]2 L0 X
/ P( P& s) W/ h1 \( N' H
然後我們在css.css中再寫入以下樣式:+ j5 w9 j4 t) N2 P" W( v6 ^
8 I, A3 ~2 y6 l' o/ ~3 s& v& J7 M$ N1 u
程序代碼
" m6 @+ A' h% M k+ `1 p/*頁面頭部*/
& E ?0 f% [0 o; v#header {background:url(logo.gif) no-repeat}
* a- n: ]- l2 s! u3 }3 h0 T% b: G, w
2 z% c9 n( ~: L( K" Y 樣式說明:0 P2 C! _ G6 X* o: u* ]9 z3 v
#header {background:url(logo.gif) no-repeat}
3 r! c3 U, L( |. k I 給頁面頭部分加入一個背景圖片LOGO,並且不作填充。& G1 p2 J; j5 p2 w$ n3 d: z: D6 G
7 t/ e: }- |# A9 |& I% } 這裡,我們沒有指定header層的高度,為什麼不指定呢?
0 j3 p7 {; w6 X; K( m. K/ s# K L, J# w: X
因為header層中還有菜單和banner項,所以層的高度暫時是未知的,而層的屬性又可以讓層根據內容自動設定調整,因此我們並不需要指定高度。! A8 u/ H0 b6 I+ N0 B d$ `+ ?
現在進入貼吧,不用註冊就可以投稿了,把你的心情和經驗與大家一同分享吧!!請到相應的貼吧發貼哦,貼吧新開,人太少,不過希望大家能支持!!謝謝 點擊這裡【我要投稿】, z! ]9 Y. q. r& v( L2 _
3 H" ^+ E% ?; ]/ N9 [1 U# z- G2 \7 O三、頁面頂部製作(2)----使用列表<li>製作菜單+ Z! N- F5 @0 ~7 e! {* c: z
1 ~0 Q( p0 D* }+ U7 E1 ^
開始此節的學習前,請確認你已經參照之前的幾節內容寫入了DIV、CSS到index.htm和css.css文件中。
0 W3 r" r% B' |+ ~0 S 這一節我將告訴大家如何用列表<li>來製作菜單。
2 F7 w" ~, F9 ]% y/ Z3 O 程序代碼2 a" I! \( v8 E' {5 k
<div id="menu">( m7 N4 L, X* g [% W! D! v, G2 }
<ul>% I u- m' G+ Z
<li><a href="#">首頁</a></li>. D5 J4 I: O6 U' M- V1 I
<li class="menuDiv"></li>: t7 i; T/ ~& _) a* U6 I- ]' i( u
<li><a href="#">博客</a></li>
# K" i" ~, k6 D0 `& ^ <li class="menuDiv"></li>
% g K2 r0 N% l" z" c <li><a href="#">設計</a></li>9 p0 u! `0 r9 T& i, ]
<li class="menuDiv"></li>4 z: l- i- r- P( Q3 R! W
<li><a href="#">相冊</a></li>
1 `" x6 Y1 ?/ I6 u, `: ] <li class="menuDiv"></li>
& H' T* s1 @" ^2 V" |) L" W' w8 X/ i <li><a href="#">論壇</a></li>0 O; @3 f1 [- q9 Q, O a
<li class="menuDiv"></li>
: c5 g( W: b2 x' ?6 M) g0 x <li><a href="#">關於</a></li>% Q8 o5 j" i) o# t, T& N5 A
</ul>
5 N0 }7 J W2 a' T8 f </div>
. F1 n! y2 w9 W$ D2 i$ y. g" |! o% c; A8 c1 d
- r; Y- {! \. e; {5 h! C$ d" B
以上是這部分的結構,有關於<ul></ul>、<li></li>這兩個HTML元素大家自己去參考相關的內容吧,它們最主要的作用就是在HTML中以列表的形式來顯示一些信息。/ E# y7 L+ o% ~: D
0 j$ R* u( \3 z1 v/ i7 j
還有一點需要大家一定要分清楚的,當在HTML中定義為id="divID"時,在CSS對應的設置語法則是#divID{} ,如果在HTML中定義為class="divID"時,則在CSS中對應的設置語法是.divID。# A/ L; J4 s/ Z
如果id="divID"這個層中包括了一個<img></img>,則這個img在CSS中對應的設置語法應該是#divID img {},同樣,如果是包含在class="divID"這個層中時,則設置語法應該是.divID img {},這一點希望大家要分清楚了。
/ i/ \$ r' _, p: T 另外,HTML中的一切元素都是可以定義的,例如table、tr、td、th、form、img、input...等等,如果你要在CSS中設置它們,則直接寫入元素的名稱加上一對大括號{}就可以了。所有的CSS代碼都應該寫在大括號{}中。$ j% @1 o Q- c ^) D; l, v
: p1 `/ B! I* L) G) j 按照上面的介紹,我們先在css.css中寫入以下代碼: 3 g! g1 c0 ]4 @
程序代碼2 B$ [4 r% P C
#menu ul {list-style:none;margin:0px;}
5 `$ y' L, s# p5 Y& g: p3 ?0 D#menu ul li {float:left;}
- E2 p+ L V: `9 X+ x, x4 ^( M% q: ]+ a: i9 W- M6 Z
: ~, z/ `1 R6 _& m/ g
解釋一下:
, |+ x3 \4 c! @ #menu ul {list-style:none;margin:0px;}
. C' y$ M9 A" N8 U5 }9 E% ^ list-style:none,這一句是取消列表前點,因為我們不需要這些點。( ?6 X% Y, K! v) z) V; i4 g0 I
margin:0px,這一句是刪除UL的縮進,這樣做可以使所有的列表內容都不縮進。
' n9 X+ T- d# F+ [7 c( M# k. u# P( Z9 ]0 v
#menu ul li {float:left;}
_2 C$ v' [/ f+ S( o 這裡的 float:left 的左右是讓內容都在同一行顯示,因此使用了浮動屬性(float)。
! f3 O1 N; ]8 d* K' M
& v p- S; y4 F3 _ 到這一步,建議大家先保存預覽一下效果,我們再添加下面的內容,效果如下:1 }6 r; Z J7 a9 P' b4 }. N4 n
m/ i/ ^2 r+ @# o! m% z9 A( X0 |
' s; A" O- t- u: d6 e9 `$ h1 ?, m5 `1 R
這時,列表內容是排列在一行,我們在#menu ul li {}再加入代碼margin:0 10px: 2 t u. T7 \* F" R7 }( B' G5 Y
程序代碼! s0 K7 c# O0 p# j
#menu ul {list-style:none;margin:0px;}% b* |7 g8 R# N0 H
#menu ul li {float:left;margin:0 10px}
5 q2 [+ K. e( v3 v5 }5 X
- t9 [& r O- j) `& J0 Q! W1 s. `* b* E* M( C
margin:0 10px的作用就是讓列表內容之間產生一個20像素的距離(左:10px,右:10px),預覽的效果如下:) i# K3 S* Z: p& r2 l+ s' Y
8 g+ u$ C( C& @: c9 w: i$ V! p
( {, t1 w: v% @0 H$ U& ^8 q 現在,雛形已經出來了,我們再來固定菜單的位置,把代碼改成如下: : b) \9 ~" l; m) g6 b
程序代碼
4 X) P# P5 Y Z, J9 n+ I A#menu {padding:20px 20px 0 0}
5 J0 U3 u0 c8 _3 p$ ], S/*利用padding:20px 20px 0 0來固定菜單位置*/+ F" B% M$ Q- ~; ?, ~
#menu ul {float:right;list-style:none;margin:0px;}2 B8 F* p% u. d; }# y
/*添加了float:right使得菜單位於頁面右側*/
1 j! P6 j6 V# Q. A' R7 U# \7 B#menu ul li {float:left;margin:0 10px}' W; {, M: W- Y( F/ d; A
5 m3 n4 Q. g/ A# p! b, q
0 H" l& q3 @6 d j( n( \4 S7 l6 Y, j$ J* ^. g
這時,位置已經確定了,可是構思圖中,菜單選項之間還有一條豎線,怎麼辦呢?3 G) A, h& G* f/ _! n4 D
別忘了,我們早就已經留好了一個空的<li class="menuDiv"></li>,要想加入豎線就使用它了。 g1 W* I) d1 Y/ R/ Y$ {. Z
按照上面說的方法,我們再添加以下代碼: " n: U# i$ f# v6 H* n8 O
程序代碼* O( X, d6 a) s
.menuDiv {width:1px;height:28px;background:#999}- A' R' c. P) g' s5 B
. r& I3 z7 _5 y) X' U$ p& h4 d- f
,保存預覽一下,豎線是否已經出來了?關於這段代碼就不多講了,應該是很容易理解的。
4 O4 g0 D2 u0 r4 j2 c# L9 b6 Z
8 R* y( S3 D8 @- ? ( N+ \2 G5 J, j& G% \: y4 A; \
# j- `; M. `* I a 不過,菜單選項的文字卻在頂部,我們再修改成以下代碼:
, k" D; M+ Q3 U- e B% k 程序代碼
# x; G. C9 N/ L1 [+ j, g* ~3 G) \+ @#menu ul li {float:left;margin:0 10px;display:block;line-height:28px}
) T6 a: b7 e7 L" L! \1 @2 R6 w3 U( Q0 Z! N
* i" s* h3 _/ H" c1 b2 x0 K
關於display:block;line-height:28px大家可以去參閱一下手冊,我就不多講了。
# s& V$ Z8 b# }+ Z, w$ n: i3 U
/ Y+ @: t% ?3 Q/ t2 S 效果基本上已經實現了,剩下的就是修改菜單的超鏈接樣式,在css.css中添加以下代碼: l4 m2 V( |5 g& `0 n% c. `. p
程序代碼! A# `2 F5 m5 Q5 }. O9 j
#menu ul li a:link,#menu ul li a:visited {font-weight:bold;color:#666}
0 ?5 x/ `( u$ B) k% [#menu ul li a:hover{}
7 s) w$ c% R, }$ J/ @9 i0 q, L+ X; R* d1 P/ g
% D+ n& @8 _ @- }( U& m
這個也不多說了,沒什麼好說的了,最後的效果如下:
+ t5 O2 E( W, R* ^ * D. y% b# p' o5 O8 g3 L7 O
$ `3 q+ Z* |9 n0 I5 F# H+ _# ~" a7 G9 ~3 k& V9 Y' u
這一節到這裡就完畢了,順便把素材提供給大家:
, |" p' v' M7 J 構思圖: 點擊下載
& H* j/ V7 z$ G1 ] HTML和CSS源文件: 點擊下載5 N; G; L J' `$ C
四、頁面製作(1)----用好border和clear5 N& L0 E0 K1 e# t9 m H" i
6 x& } `. [% \, s 由於找工作找房子的原因,隔了這麼久才能開始寫教程,心裡感覺很對不起一直在關注本站的朋友,今天是找到房子的第二天,於是趕快繼續寫教程。! [2 w( Y) H- y- L1 |5 M
+ T/ I( z2 C- ]/ l: Y* @+ F4 }
這一節裡面,主要就是想告訴大家如何使用好border和clear這兩個屬性。4 v9 V; P5 E1 e5 o; k6 g2 F6 `
6 H3 z2 Y$ `/ ~7 u 首先,如果你曾用過table製作網頁,你就應該知道,如果要在表格中繪製一條虛線該如何做,那需要製作一個很小的圖片來填充,其實我們還有更簡單的辦法,只要在<td></td>中加入這麼一段就可以了,你可以試試:/ ^0 E2 ?& u. F4 f) q, G) h, c
<div style="border-bottom:1px dashed #ccc"></div>5 r F: B2 ?3 e |: ?- x
" k+ A1 Y x, z7 Z8 G2 B 大家可以再次參考手冊,然後你就能明白dashed、solid、dotted...等的作用,利用它們你可以製作出許多效果來,實線、虛線、雙線、陰影線等等。. }$ b; ?6 t ^4 W
; I. n, q6 S* x. }
程序代碼
* @7 }& M" a5 |( |; r8 z<div id="banner"></div>
2 A% U" z8 E; J2 k4 p. d4 K! h, {+ _1 c5 h& h$ t" A( \$ K; V" h
/ K0 o0 E/ l1 y' w, X' n 以上代碼便可以實現設計草圖中的banner,在css.css中加入以下樣式:
+ S7 s. f Z& ]! D- N* h8 G) m/ l& J/ E4 A, k! F4 [
程序代碼. \$ ]1 j& y6 }6 V8 g2 E. K
#banner {
( e; G" P9 e6 P2 A0 T background:url(banner.jpg) 0 30px no-repeat; /*加入背景圖片*/1 g2 n X% i, e& x5 M
width:730px; /*設定層的寬度*/6 U& I: L: D5 ^5 I- A
margin:auto; /*層居中*/' c; y- V6 q* L$ f& k. S N( U1 T
height:240px; /*設定高度*/; w* D( w* [* w
border-bottom:5px solid #EFEFEF; /*畫一條淺灰色實線*/5 I* z# M& X4 ~ q# p8 V
clear:both /*清除浮動*/
8 X6 s( b; m( c/ e}
6 @! u! A2 V3 Z% U2 D C' e# B6 k" A7 u4 \
: M. R8 a! ?) i4 p6 R 通過border很容易就繪製出一條實線了,並且減少了圖片下載所佔用的網絡資源,使得頁面載入速度變得更快。
# d* B/ S3 Y4 n+ u( c
0 q7 W7 T- R( d! d+ h. M3 U6 n1 [ 另一個要說明的就是clear:both,表示清除左、右所有的浮動,在接下來的佈局中我們還會用這個屬性:clear:left/right。在這裡添加clear:both是由於之前的ul、li元素設置了浮動,如果不清除則會影響banner層位置的設定。* v: W5 ?6 u6 h1 ^1 P+ O
2 c$ B) d0 a9 w4 U- j, Q1 s$ @8 G
程序代碼7 ]7 P* D) } r ^/ N: U
<div id="pagebody"><!--頁面主體-->
7 Q3 u0 @% m. }1 z <div id="sidebar"><!--側邊欄-->
3 w+ s" o/ N# ]9 u& ~# P" Y, l </div>
, H, S: ]( n3 \6 t' p( K0 M: w <div id="mainbody"><!--主體內容-->
" ^# s. F- b+ \ `0 g& V- j </div>4 P: e; a- g4 r* M* P
</div>. v/ R" i8 `$ |6 B3 [) h
& F. ]% o$ s: @5 W( p
1 R$ @( o }- L) @5 \$ s# @ 以上是頁面主體部分,我們在css.css中添加以下樣式:
1 h) X% p* d# K8 |' I7 W7 f( _& C6 T3 I; J* _' [
程序代碼3 i* O& `* `6 v
#pagebody {$ J% [ W" P: m$ v0 ]$ \( }
width:730px; /*設定寬度*/
/ g3 e0 r2 w5 I0 M5 g2 d margin:8px auto; /*居中*/
6 v- R$ H9 Y) B. T4 f}
3 T M8 n, d* ?. f( j$ K#sidebar {
! E& @! {* O' X8 z3 \ width:160px; /*設定寬度*/
' @5 V2 c# C# K- U text-align:left; /*文字左對齊*/
! u& N3 p- L; c3 A9 N/ ]( D float:left; /*浮動居左*/3 D. k; Z- V9 \' m# B t/ U
clear:left; /*不允許左側存在浮動*/
( M( l0 j2 d! O. S' {' m y overflow:hidden; /*超出寬度部分隱藏*/
% H5 h) G" N: f$ v3 V}
2 ? \& O. Q" p, @% b8 Y! B ^#mainbody { r/ P) Q" m( T3 g( u
width:570px;$ L5 }& i8 U4 m* g0 N
text-align:left;. Q) P+ K D, U# A$ ?7 Y0 v
float:right; /*浮動居右*/: W+ V+ |& C6 p9 y0 X
clear:right; /*不允許右側存在浮動*/' ^1 k) {! x. l% d) L& J/ C ^
overflow:hidden
5 Y9 ^0 {3 P5 Z}
5 X6 R3 T# l; r2 D
) d6 a8 w# q" X3 N4 ~1 {& `; v5 Y" |; d3 U z7 s+ u
為了可以查看到效果,建議在#sidebar和#mainbody中加入以下代碼,預覽完成後可以刪除這段代碼:
, V5 A* j9 D* K* O; E; @# T# E! C, C& ^' q# x" ]# s
程序代碼
7 r' @) \: u) p+ x0 R% a$ ]# [border:1px solid #E00;7 J+ V* E; X$ w4 z& l
height:200px
: y7 @" x7 X9 z9 L6 d) B0 V; W: c2 E6 K$ c% j9 j9 P, M
: l K& [3 H$ L' `5 z
保存預覽效果,可以發現這兩個層完美的浮動,在達到了我們佈局的要求,而兩個層的實際寬度應該160+2(border)+570+2=734px,已經超出了父層的寬度,由於clear的原因,這兩個層才不會出現錯位的情況,這樣可以使我們佈局的頁面不會因為內容太長(例如圖片)而導致錯位。/ E0 E( T. d, _+ F2 R& a; Y
" t) w. W: Y) L( B& u
而之後添加的overflow:hidden則可以使內容太長(例如圖片)的部份自動被隱藏。通常我們會看到一些網頁在載入時,由於圖片太大,導致佈局被撐開,直到頁面下載完成才恢復正常,通過添加overflow:hidden就可以解決這個問題。
" \9 {5 ]9 d. t4 D7 @
1 v. h2 j+ s6 {# f a5 D CSS中每一個屬性運用得當,就可以解決許多問題,或許它們與你在佈局的頁並沒有太大的關係,但是你必須知道這些屬性的作用,在遇到難題的時候,可以嘗試使用這些屬性去解決問題。2 B6 H5 Q/ N- e. P
|
|