过期域名预定抢注

 找回密碼
 免费注册

[轉]Div+CSS佈局入門教程

[複製鏈接]
發表於 2007-5-9 22:08:40 | 顯示全部樓層 |閱讀模式
Div+CSS佈局入門教程
& ?' f4 \5 Z* Y1 V% X: a5 D
# u" g1 H+ ~/ V& r, ?7 h6 X轉載請註明出自落伍im286.com,本貼地址:http://www.im286.com/viewthread.php?tid=1965636
# q$ b2 H7 ~# Z
: P3 }- f' v" j: E
) J( N/ r1 O6 Z. B+ ?, n一、頁面佈局與規劃% e0 F5 w% `7 j* o

# O( E2 f5 q, n1 t  好久沒有認真寫點東西了,想起最近這些時間經常有朋友問到我有關於DIV+CSS佈局的問題,其實歸根結底還是由於沒有入門造成的。那麼接下來的這篇文章就帶領大家入門吧...5 J- o3 a* T8 q6 J

) k5 j5 O! k' n8 R4 H  在網頁製作中,有許多的術語,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我們將會用到一些有關於HTML的基本知識,而在你學習這篇入門教程之前,請確定你已經具有了一定的HTML基礎。下面我們就開始一步一步使用DIV+CSS進行網頁佈局設計吧。
* H+ H0 D/ N) o( g) H/ t! Q
) m, s& k0 o" ~* B1 A! J  所有的設計第一步就是構思,構思好了,一般來說還需要用PhotoShop或FireWorks(以下簡稱PS或FW)等圖片處理軟件將需要製作的界面佈局簡單的構畫出來,以下是我構思好的界面佈局圖。3 m* N& I* K; q5 x$ @' ^
0 r- @# @7 E3 q3 E& E
  下面,我們需要根據構思圖來規劃一下頁面的佈局,仔細分析一下該圖,我們不難發現,圖片大致分為以下幾個部分:( E* Q* a4 v1 `) A! U
  1、頂部部分,其中又包括了LOGO、MENU和一幅Banner圖片;1 L$ l" T2 q1 i- X6 ?3 v+ }: v
  2、內容部分又可分為側邊欄、主體內容;
, J7 S2 C' @3 i) j; O  3、底部,包括一些版權信息。
) P& i$ K2 j$ Z: ]' Y* {8 N  有了以上的分析,我們就可以很容易的佈局了,我們設計層如下圖:
+ a; r+ h' U# J7 F$ `/ J9 a2 o) K  根據上圖,我再畫了一個實際的頁面佈局圖,說明一下層的嵌套關係,這樣理解起來就會更簡單了。
" H, B6 ^3 k. A, S5 N0 a4 n. n6 B# f: c. w, a
  DIV結構如下:
) u' r1 T! l$ [, {  │body {} /*這是一個HTML元素,具體我就不說明了*/9 s; w7 U( X' A- G
  └#Container {} /*頁面層容器*/
5 t. t6 V/ V  |$ W; `4 }     ├#Header {} /*頁面頭部*/# ~5 a$ l- V) ^" U
     ├#PageBody {} /*頁面主體*/5 C8 D* {7 M5 i- K8 M9 P
     │ ├#Sidebar {} /*側邊欄*/
. y: e$ P/ V4 d3 \5 r6 ^     │ └#MainBody {} /*主體內容*/
, |  V! a4 X" Y3 g4 s; z     └#Footer {} /*頁面底部*/
' {# Z6 l! j" o) m# t- I. i! R! S$ y  至此,頁面佈局與規劃已經完成,接下來我們要做的就是開始書寫HTML代碼和CSS。
' Q/ c9 M: `7 i, h& m! u, c# d. K+ \
. S/ \3 L$ p4 Y& w6 g, p0 o
二、寫入整體層結構與CSS
2 b3 T0 M. ]+ k9 S/ s1 V- k- G+ C4 P( x  \/ r
  接下來我們在桌面新建一個文件夾,命名為「DIV+CSS佈局練習」,在文件夾下新建兩個空的記事本文檔,輸入以下內容:
5 X  r; E0 R% j8 F( m 程序代碼
( S8 Y9 ^9 w. y( ^" v<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
0 z2 c9 i1 i+ x* B" j# Y- t4 `8 y* |<html xmlns="http://www.w3.org/1999/xhtml">- w) o( ?0 a/ X3 I
<head>
; ?4 ^$ W4 Z' W2 S1 S5 B<meta http-equiv="Content-Type" c />+ E! W* K, C% C8 n7 H5 s
<title>無標題文檔</title>+ e& ^9 E9 G3 `% o8 n1 Y+ B2 m
<link href="css.css" rel="stylesheet" type="text/css" />
  R0 _+ X* Q  P8 X) b</head>6 J& Z" L) ^0 V' `

9 g+ R. N+ S+ K) K9 Y; ?* `<body>
: O$ m" T3 m. q9 \0 t4 C</body>
- E( q# d% `- @</html>: ]/ k  |6 ]8 _2 N) x  Z1 a

; n9 r. B- K) b, i; Q; _8 x
- _" }( B* c" S- _+ z
" E! d; d5 m/ T8 C; Y" J  這是XHTML的基本結構,將其命名為index.htm,另一個記事本文檔則命名為css.css。6 H+ [7 e6 K1 R, e
$ j: I4 k) C/ ~( W: K  m* e
  下面,我們在<body></body>標籤對中寫入DIV的基本結構,代碼如下:
( X" R! r* @, H, g6 G) U4 \& v' b& X, x
程序代碼
+ u4 w# U4 }% t5 r( M6 y
, L, s* B5 s" d1 J; U# l5 V9 E& O<div id="container"><!--頁面層容器-->+ l; g5 v* U7 v6 y: f
  <div id="Header"><!--頁面頭部-->4 r- @/ b3 E, }) E2 q+ d& Y
  </div>- N# A- L6 D( q+ s
  <div id="PageBody"><!--頁面主體-->7 D4 c8 m; M: e
    <div id="Sidebar"><!--側邊欄-->
/ _$ d6 ]! G4 u( [$ ^: V. F1 _    </div>2 z' s% t- n% N& x/ Q: O, ^: ^
    <div id="MainBody"><!--主體內容-->( z# t5 Q+ ?/ P) P1 C
    </div>; W5 v$ G% s9 a+ K
  </div>
; i3 b6 G+ \) \( G4 t: X6 N  e$ O* N  <div id="Footer"><!--頁面底部-->; G6 N7 W! Q$ x) r& b  Q0 E
  </div>
% d! M' R; X# z+ y. h! ?</div>
5 L+ \& ~) s6 h$ H2 J; m7 ]8 }7 U; a
# @2 [. O3 M* ]9 W/ f
2 p: Y3 H' x5 w( ]0 g9 E4 N. {6 d
  為了使以後閱讀代碼更簡易,我們應該添加相關註釋,接下來打開css.css文件,寫入CSS信息,代碼如下:
: Z' q: O1 U& E# X$ l; T8 R* e
. x4 c0 M" @5 v* [8 Z9 D8 p) L! v0 S* f! U
程序代碼
% y: K2 S- W# m+ F
% {" m; O& W. f3 P: D/*基本信息*// w1 ]+ t  g6 u6 y/ F6 _( L
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}6 q" L5 A2 w$ ~, S
% Z; q) I4 {6 _' L# e6 N
/*頁面層容器*/. ]1 n$ O# W8 w6 k' T
#container {width:100%}" E1 |% m+ j! B4 x$ @9 l

3 _3 Q+ w$ p- r4 M. e* J/*頁面頭部*/
; O0 i0 O5 e* h% b& U#Header {width:800px;margin:0 auto;height:100px;background:#FFCC99}) ]  a7 }# I$ y1 o. Q: O' W2 O

; q2 }5 J5 M, A1 {' S: U1 ]/*頁面主體*/) S+ b. X: J5 k' O
#PageBody {width:800px;margin:0 auto;height:400px;background:#CCFF00}8 _/ L2 o+ z" c* g; w4 W
) u& Y/ R* \: W6 U. i
/*頁面底部*/
5 t4 M+ l' m* a6 Y% c/ c7 H. ~#Footer {width:800px;margin:0 auto;height:50px;background:#00FFFF}
: j' {' d4 c7 |# F! E! v6 {
* c& N' _* P- N
4 q" j, e! l, i7 A
( H  ]" x$ x4 `. b  把以上文件保存,用瀏覽器打開,這時我們已經可以看到基礎結構了,這個就是頁面的框架了。7 x8 \/ u8 N4 \& k
  關於以上CSS的說明(詳細請參考CSS2.0中文手冊,網上有下載):! s. T# x5 v! k% w# o" ^
0 B9 K6 m: ]& t5 }
  1、請養成良好的註釋習慣,這是非常重要的;7 E; k3 l+ H% D( n/ x' q% `
  a4 C+ E& t* ~& }1 N
  2、body是一個HTML元素,頁面中所有的內容都應該寫在這標籤對之內,我就不多說了;
9 [) G6 x) U4 ]% z* i4 }9 J) n$ t0 L
  I6 |) ~9 |3 y: d* Z: B  3、講解一些常用的CSS代碼的含義:
# x$ _% u, [: o1 q. T( p
) y) U# M7 f7 h    font:12px Tahoma;
+ G1 R5 O" M! g- i9 |; h+ s) J    這裡使用了縮寫,完整的代碼應該是:font-size:12px;font-family:Tahoma;說明字體為12像素大小,字體為Tahoma格式;1 T+ [9 D2 W- k6 W3 n
, T, ~- ]2 z. V2 x" J
    margin:0px;# e8 B, f: s( e( M& r3 e; J
    也使用了縮寫,完整的應該是:# z% R/ X2 e$ O9 t$ @  u
; Q# A, ^. g. z' k: ^
    margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px
+ E) ?7 x$ n/ r" }6 N    或' D- N( `5 c  e! n1 L' w' K
    margin:0px 0px 0px 0px/ W& I4 ^6 d/ T( R

% q1 Z- x' D  x6 S    順序是 上 / 右 / 下 / 左,你也可以書寫為margin:0(縮寫);, s) a: \/ {) [# t
    以上樣式說明body部分對上右下左邊距為0像素,如果使用auto則是自動調整邊距,& }, m8 j5 @! f# j; a( z
    另外還有以下幾種寫法:& y1 u" m# O1 Q% i$ \3 N, r0 S, l6 c
    margin:0px auto;
, {! ~! l; w6 p# `2 W    說明上下邊距為0px,左右為自動調整;
2 q& V$ _- ?+ w, G$ V4 N    我們以後將使用到的padding屬性和margin有許多相似之處,他們的參數是一樣的,( Z% w% Z  J5 W  _4 {6 f
    只不過各自表示的含義不相同,margin是外部距離,而padding則是內部距離。- A9 ?' v& C6 u) T5 k8 K
; d* N) o+ ~2 J( e  @
    text-align:center# ^9 z/ J- N: {6 K9 m, _' o
    文字對齊方式,可以設置為左、右、中,這裡我將它設置為居中對齊。
9 V3 [/ \% Z0 B' P/ L/ H. j% H0 P1 d. q2 M7 Z, w, f
    background:#FFF
/ n" P2 Y+ V+ k* m8 G    設置背景色為白色,這裡顏色使用了縮寫,完整的應該是background:#FFFFFF。
5 v6 J( i$ Q+ {) P. n: x. [4 j    background可以用來給指定的層填充背景色、背景圖片,以後我們將用到如下格式:
$ w% h6 }6 I% f/ q  M) f    background:#ccc url('bg.gif') top left no-repeat;# x5 Q2 S+ e% U) _3 v
    表示:使用#CCC(灰度色)填充整個層,使用bg.gif做為背景圖片,
4 S4 F- Z" D& R+ [; ?! [' p    top left# k: x% B9 z, w- I* \: |
    表示圖片位於當前層的左上端,no-repeat表示僅顯示圖片大小而不填充滿整個層。
+ Y% i) Y$ q) L2 I: r    top/right/left/bottom/center
3 d% ~; u% _2 Q% j9 [, E    用於定位背景圖片,分別表示 上 / 右 / 下 / 左 / 中;還可以使用$ w9 `$ C, \) G: G
    background:url('bg.gif') 20px 100px;: |* q/ O' |$ K  i- E
    表示X座標為20像素,Y座標為100像素的精確定位;
7 r  T+ _5 b! ]5 w/ E8 x; q    repeat/no-repeat/repeat-x/repeat-y
+ p& b# Q: f5 t/ x9 u    分別表示 填充滿整個層 / 不填充 / 沿X軸填充 / 沿Y軸填充。, @# u$ `3 K4 ]4 R) g, @

7 I, [0 A) K4 G* b" S* Q: y) |1 @% \/ S    height / width / color
% I5 m7 g* `- w5 ~. L    分別表示高度(px)、寬度(px)、字體顏色(HTML色系表)。( R1 |/ Q( K  A" R3 M  ]6 Y; d

- Q1 L, a# n! a3 W  4、如何使頁面居中?
! }5 v1 K3 V  k& N/ w* Z    大家將代碼保存後可以看到,整個頁面是居中顯示的,那麼究竟是什麼原因使得頁面居中顯示呢?  s# C! s$ k. n7 u/ W1 l
    是因為我們在#container中使用了以下屬性:: L9 p2 K; Y" G; o2 i& x, j
    margin:0 auto;" C3 k  I, O% w5 X6 H: Q
    按照前面的說明,可以知道,表示上下邊距為0,左右為自動,因此該層就會自動居中了。/ q% v1 [) P$ ~- X, Y
    如果要讓頁面居左,則取消掉auto值就可以了,因為默認就是居左顯示的。" A' d5 D, U3 Z- R# T( ^* Z
    通過margin:auto我們就可以輕易地使層自動居中了。
/ S/ A/ K" c; ?' d+ R
) R* U, i' T  _' d9 N" n& w  5、這裡我只介紹這些常用的CSS屬性了,其他的請參看CSS2.0中文手冊。
現在進入貼吧,不用註冊就可以投稿了,把你的心情和經驗與大家一同分享吧!!請到相應的貼吧發貼哦,貼吧新開,人太少,不過希望大家能支持!!謝謝 點擊這裡【我要投稿】
0 q+ G! w2 V+ L( I
4 a/ A; o' r3 x6 Z6 ]三、頁面頂部製作(1)8 Y2 D' Q, N' a

7 n/ G3 ?' F! F. ?# C* ?  當我們寫好了頁面大致的DIV結構後,我們就可以開始細緻地對每一個部分進行製作了。
) x, f+ o% o) T6 N% T" r2 B, K7 V0 y4 K/ d# w8 v
  在上一章中我們寫入了一些樣式,那些樣式是為了預覽結構而寫入的,我們把css.css中的樣式全部清除掉,重新寫入以下樣式代碼:
9 @- d& z/ `* g. u6 Z+ [, Z6 @9 x/ [) \5 a
程序代碼
# ^; c1 @+ a- s+ L1 }/ P& H$ r/*基本信息*/! t  U0 g% ^: G5 h9 H4 n/ ^
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}
" G: A4 U2 Z2 `a:link,a:visited {font-size:12px;text-decoration:none;}
+ Z1 @1 k2 A0 E$ N) W; B% ra:hover{}% C" H" l3 N4 E2 i. F

! S0 l. X: i% R+ F2 [/*頁面層容器*/$ |( {" m( J9 w  ^" E' ?5 y
#container {width:800px;margin:10px auto}' Y! V! F; W, D1 J8 F3 G8 j; ^/ Q
) {$ I3 \, m8 G. m; R/ P& g7 E
* o5 ?# k% y& r8 I  }! g
  樣式說明:
8 u; D) F$ M! I. d  h0 S% J% f! D  _5 G7 v  J+ j3 x8 B
  a:link,a:visited {font-size:12px;text-decoration:none;}
$ s' u+ {7 @8 v' @% C! }# v  @  a:hover {}

' b0 i  l; t1 c" y9 d0 Z4 R8 R% P' Q, @; J% X/ x
  這兩項分別是控制頁面中超鏈接的樣式,具體我就不說明了,請大家參閱手冊。. }" e4 A$ w: G

5 Q$ j0 _! f: o9 L9 `$ }0 k' B  #container {width:800px;margin:10px auto}
  [0 w4 z! j4 g
1 O  h* Y" a  r+ ~  指定整個頁面的顯示區域。
- J( k% w0 C* ^# r( l9 C" w2 |6 W0 f% y  width:800px指定寬度為800像素,這裡根據實際所需設定。* u# }4 ^  x$ G5 ~* G
  margin:10px auto,則是頁面上、下邊距為10個像素,並且居中顯示。9 R2 u2 o8 O& p% `
  上一章中我們講過,對層的margin屬性的左右邊距設置為auto可以讓層居中顯示。
5 X7 c# x, [8 v: D! M- Y8 S% S1 r+ D7 m
  接下來,我們開始製作TOP部分,TOP部分包括了LOGO菜單Banner,首先我們要做的就是對設計好的圖片進行切片,以下是在FW下完成的切片:
- c2 g/ T# k. k( }% M  x. ^  我將TOP部分切片為兩部分,第一部分包括了LOGO和一條橫線。由於LOGO圖片並沒有太多的顏色,這裡我於是將這一部分保存為GIF格式,調色板選擇為精確,選擇Alpha透明度,色版為白色(此處顏色應與背景色相同),導出為logo.gif,圖像寬度為800px5 J) J) ?6 Y# y

7 y, ~8 T+ P$ r2 G6 Y  到這裡,有的朋友就說了,* 為什麼要使用GIF格式?使用JPEG不是更好嗎?
5 L! F+ p( y. G# p9 R  因為GIF格式的圖片文件更小,這樣能使頁面載入的速度更快,當然使用此格式之前必須確定圖片並沒有使用太多的顏色,當我們使用了GIF格式時,從肉眼上並不能看出圖片有什麼太大的變化,因此這是可行的。
( s; {5 t; V5 }% f4 T$ N6 Q) @9 `6 A! J9 D7 M3 Z
  * 接下來的Banner部分還能使用GIF格式嗎?
9 |* b. q2 V: h6 u# n  答案是不能,因為Banner部分是一個細緻的圖片,如果使用GIF格式顏色會有太大的損失,所以必須使用JPEG格式,將文件導出為banner.jpg
9 M5 w( @  B1 R% f  J% q8 C- x5 w; w/ j
  * 合理的切片是非常之重要的,因為切片的方法正確與否決定了CSS書寫的簡易程度以及頁面載入速度。' D3 v) O+ ?1 o

+ {  t2 }5 E6 U7 z  切好片後,我們還需要對TOP部分進行分析並將DIV結構寫入Header中代碼如下:" {: u+ ^' b# Z$ _7 M! h9 k6 s
/ B( X9 Z) l- ]  z
程序代碼: N9 \$ |! z9 J' H9 K1 U% C
  <div id="menu">8 ^! n- B" t0 h
   <ul>2 i* P8 e/ [4 R, `5 Y" l' W
    <li><a href="#">首頁</a></li>1 G6 R5 w4 u1 ?% N( i& I1 q
    <li class="menuDiv"></li>
2 J' t: j/ y: w6 d  h$ r    <li><a href="#">博客</a></li>
. [- I' h2 _' [    <li class="menuDiv"></li>
: `* L6 [4 ^8 w% Y    <li><a href="#">設計</a></li>/ d" z/ n5 ^' h5 a1 k8 Y% m
    <li class="menuDiv"></li>% w: t! z2 y! c6 N( L$ a( s
    <li><a href="#">相冊</a></li>
* @* u9 y# A9 m1 ?( i- Q5 O    <li class="menuDiv"></li>8 x( N: O4 C1 u6 k/ F' `# c
    <li><a href="#">論壇</a></li>
1 V" F" V7 o4 S  ^- Q    <li class="menuDiv"></li>) l2 `7 \7 I. C* e% w# P
    <li><a href="#">關於</a></li>: M  x- B: T4 [5 m; }; B" r( T" A  _
   </ul>
' R0 U0 ^8 u7 Z$ @) ~  </div>
) \9 [$ Z) X5 y6 U; l  <div id="banner">* P5 d7 W2 h4 B7 O4 B. Y
  </div>
  R) ^9 V, [3 d$ f& X( c3 y+ Z. {) Z9 P0 E
( D. Y: n3 o" a; e$ b& c
  為什麼要這麼寫呢,因為對菜單使用列表<li>形式,可以在以後方便對菜單定制樣式。
! j% I$ N+ k9 @  g7 e" V) I/ g! c7 d3 W0 a# p+ D4 L* Z4 _) d
  而為什麼要添加以下代碼呢?4 P- ?% l3 r; f
  <li class="menuDiv"></li>  e4 c/ R/ L# ?7 C
  插入這一段代碼是可以方便地對菜單選項之間插入一些分隔樣式,例如預覽圖中的豎線分隔
7 l2 m: G: o8 _5 Y9 {: P+ n2 {4 h* X8 M3 [/ P' {! }
  然後我們在css.css中再寫入以下樣式:
" m" A2 \4 S% t6 h  H) c- B7 }7 y
: _* C* w( M- E9 K  j 程序代碼
6 D# s. `8 y" X/*頁面頭部*/
9 b, c$ l6 o) i9 e#header {background:url(logo.gif) no-repeat}
9 i4 R4 P  ~* Q, m6 z9 O, o
. k+ b  o. y, z* P8 E$ L" }9 u7 U" f+ W4 q6 L% ^: W9 h9 o+ F
  樣式說明:
; l9 _( V) U* e8 G5 B  #header {background:url(logo.gif) no-repeat}
! N3 h# y8 Y( z1 `+ \5 n  給頁面頭部分加入一個背景圖片LOGO,並且不作填充。5 ]/ y' }# o/ G; P' g

) @& [! i8 O5 Q* e( K- `  這裡,我們沒有指定header層的高度,為什麼不指定呢?7 ?6 R) ^: i' ]: K" F
4 W, ~* S; J9 O$ Z, ~
  因為header層中還有菜單和banner項,所以層的高度暫時是未知的,而層的屬性又可以讓層根據內容自動設定調整,因此我們並不需要指定高度。) ?/ m  `3 ^/ e5 s& M) Y
   現在進入貼吧,不用註冊就可以投稿了,把你的心情和經驗與大家一同分享吧!!請到相應的貼吧發貼哦,貼吧新開,人太少,不過希望大家能支持!!謝謝 點擊這裡【我要投稿】
% P$ ^) B5 P- a- h0 E; R2 o7 }, C! N
三、頁面頂部製作(2)----使用列表<li>製作菜單' D! F' g4 W3 i3 M+ B

- |7 a% Z$ R2 E6 ]7 u3 E, W  開始此節的學習前,請確認你已經參照之前的幾節內容寫入了DIV、CSS到index.htm和css.css文件中。
8 C5 s8 m  A5 m0 W- U3 S  這一節我將告訴大家如何用列表<li>來製作菜單。 : S0 z$ j8 P7 z' a+ A  f" J. A0 F" w4 a6 p
程序代碼: V3 n) I$ p6 I) N( W- v
        <div id="menu">* y! e+ W2 p1 [3 ^8 w# L( z
          <ul>
) Y5 F0 L* d! l            <li><a href="#">首頁</a></li>
  u# a* T1 X* I            <li class="menuDiv"></li>  Y& g# {+ c7 ^) _" H
            <li><a href="#">博客</a></li>) ^. O9 O6 D  H0 W* L3 Q
            <li class="menuDiv"></li>8 F2 d. k) M6 S
            <li><a href="#">設計</a></li>7 D1 n( X) E$ x7 Y0 y3 g( I8 u0 ?
            <li class="menuDiv"></li>
. o& f- m$ a) M( ]7 _. I, I5 L            <li><a href="#">相冊</a></li>7 o- ~) i5 X* \3 t) j
            <li class="menuDiv"></li>- c! z' b8 H  A5 H3 u
            <li><a href="#">論壇</a></li>
3 Y, z! z% _; t" D            <li class="menuDiv"></li>3 a7 B- L) P8 c! }% U4 a& m
            <li><a href="#">關於</a></li>
2 w1 Z' I+ }; D( f. {, \8 p          </ul>
: W" z! f& v) G% H5 K        </div>1 ~8 {& U- @4 N5 x) C2 a

+ L% z8 W& V7 F" u0 X: Z! [$ l, G% E9 @$ E) j9 n+ Z
  以上是這部分的結構,有關於<ul></ul>、<li></li>這兩個HTML元素大家自己去參考相關的內容吧,它們最主要的作用就是在HTML中以列表的形式來顯示一些信息。
4 A" d' b  r6 o( V5 y
- D6 R" y+ }9 M. [  還有一點需要大家一定要分清楚的,當在HTML中定義為id="divID"時,在CSS對應的設置語法則是#divID{} ,如果在HTML中定義為class="divID"時,則在CSS中對應的設置語法是.divID。' L7 n8 C- {+ D
  如果id="divID"這個層中包括了一個<img></img>,則這個img在CSS中對應的設置語法應該是#divID img {},同樣,如果是包含在class="divID"這個層中時,則設置語法應該是.divID img {},這一點希望大家要分清楚了。
0 s9 |2 c7 P5 b- W0 P; f1 F  另外,HTML中的一切元素都是可以定義的,例如table、tr、td、th、form、img、input...等等,如果你要在CSS中設置它們,則直接寫入元素的名稱加上一對大括號{}就可以了。所有的CSS代碼都應該寫在大括號{}中。
! }  G/ V( G: f$ ?1 B/ P3 ^! q
# K6 |. W3 N" Q. V' g  按照上面的介紹,我們先在css.css中寫入以下代碼:
) H' F6 u+ H# V" W, o% B8 m' K 程序代碼/ ]$ h) u: r, ?2 ^( a  a
#menu ul {list-style:none;margin:0px;}
  K" \! e* I% g5 o6 J# w#menu ul li {float:left;}# }  H# b$ ^: H% D) s5 R

. q# [5 |/ O+ n0 B7 u6 }6 P0 x: c" ]! [7 H% `: `4 h3 a0 a+ V
  解釋一下:- Z0 N: r5 `5 v
  #menu ul {list-style:none;margin:0px;}' k. C. E6 a' n  H( p& r
  list-style:none,這一句是取消列表前點,因為我們不需要這些點。
0 P1 E& V( v) z! I% X# Q  margin:0px,這一句是刪除UL的縮進,這樣做可以使所有的列表內容都不縮進。& t. D5 G- f  [: f

3 D4 L8 b! R" x1 h, }0 [% f, Q  #menu ul li {float:left;}/ k1 Y# s, R) N0 c9 {6 t
  這裡的 float:left 的左右是讓內容都在同一行顯示,因此使用了浮動屬性(float)。0 e5 s5 G2 b3 v! f9 a

7 t* e7 `! L+ G$ \  到這一步,建議大家先保存預覽一下效果,我們再添加下面的內容,效果如下:
. S( V% e& _. F, _2 d# x- [, y( y/ F) Z, r6 B* G4 i
# e1 h3 ?  t6 \4 ?
# |& U2 r- w5 D& n+ r6 q/ u
  這時,列表內容是排列在一行,我們在#menu ul li {}再加入代碼margin:0 10px
+ Z4 H& p) i& H: z' ?2 ^; o 程序代碼
5 }: x6 G0 \) C' H7 L' ?. l, |$ d#menu ul {list-style:none;margin:0px;}; L/ a( Z6 G) r* |8 G- @3 V
#menu ul li {float:left;margin:0 10px}. U8 \8 q9 F2 H% ~3 t$ O, t

1 |. A$ ]1 l+ _7 ~/ e: S( T0 z9 A
, L. P. Z# G' J' a% F, Q  margin:0 10px的作用就是讓列表內容之間產生一個20像素的距離(左:10px,右:10px),預覽的效果如下:: [( K" p$ A8 W3 x
- s' S  i; I- S; @4 ^7 s7 z8 Q
* M$ J1 s( C2 Z
  現在,雛形已經出來了,我們再來固定菜單的位置,把代碼改成如下: 8 `' o" z3 x" j8 t* b# w
程序代碼% z6 g( \  l# k+ J
#menu {padding:20px 20px 0 0}7 P- F1 c& g1 V! {* Q4 J* }
/*利用padding:20px 20px 0 0來固定菜單位置*/3 F, G' W% b  e; O. n# K5 A
#menu ul {float:right;list-style:none;margin:0px;}2 ]8 k( O0 I4 S" N
/*添加了float:right使得菜單位於頁面右側*/9 z; X. j2 B  z* U5 j3 ^; j3 k0 w
#menu ul li {float:left;margin:0 10px}
$ z1 w* y$ [! B6 Z% Q- {5 O* K2 ^: Y2 r/ q
9 @7 J* Z$ m- ~, Q
1 K5 k. I. H- B
  這時,位置已經確定了,可是構思圖中,菜單選項之間還有一條豎線,怎麼辦呢?+ T5 C% r2 b: e% u
  別忘了,我們早就已經留好了一個空的<li class="menuDiv"></li>,要想加入豎線就使用它了。
- N& K- |6 k- Q# D0 ?  按照上面說的方法,我們再添加以下代碼: , C# j0 |& l+ d" L' H
程序代碼
/ Y6 x0 y: t8 |$ d9 ~+ v.menuDiv {width:1px;height:28px;background:#999}
) u( Q; i$ R% P9 U$ _) U: Z
2 W- ~) i1 V; H+ @,保存預覽一下,豎線是否已經出來了?關於這段代碼就不多講了,應該是很容易理解的。. o. X- A- f4 q3 J2 Z; }
8 n3 w. c- @* I7 p' ?% V4 h

- O7 O. r0 L5 K. m' c! u: Z# \8 E1 u% T: H/ i& }8 Q
  不過,菜單選項的文字卻在頂部,我們再修改成以下代碼: 7 g4 Y) S; a% K. N
程序代碼4 g0 W) F% L/ D8 Y( `- S0 i) F
#menu ul li {float:left;margin:0 10px;display:block;line-height:28px}
( }: k0 F" `1 @( b# L7 d7 Z2 Q9 M. D' y0 ]4 f
! e: ~& _+ `% E; z1 G" G
  關於display:block;line-height:28px大家可以去參閱一下手冊,我就不多講了。
: d4 \  S3 b$ d* j/ |( {
) k7 v9 B4 {0 P9 ~. q0 S  效果基本上已經實現了,剩下的就是修改菜單的超鏈接樣式,在css.css中添加以下代碼:
0 T( O1 c) C( C& \9 p2 i7 I程序代碼
+ C9 e) i* ~1 P, O#menu ul li a:link,#menu ul li a:visited {font-weight:bold;color:#666}
4 f3 u7 t/ W2 E* L$ o  j9 u#menu ul li a:hover{}( v/ o& Y* G' A' J; ^

3 O5 l- p0 x% z$ Z( _* e0 i, U8 X- ?; O- P8 l7 V4 n
  這個也不多說了,沒什麼好說的了,最後的效果如下:
# R; c! b- P$ `# S+ @" P2 H9 O" O2 ^9 ~7 ]. [

8 t6 g$ V, u3 Z, m) o
# e# T; a# C4 t: ~' k  這一節到這裡就完畢了,順便把素材提供給大家:5 R. M* C% N- Q( U! C
  構思圖: 點擊下載
7 q5 r  h: t' m2 ]0 o5 L  HTML和CSS源文件: 點擊下載$ A: Q* {8 Z8 P! T" T1 Y  l
四、頁面製作(1)----用好border和clear
# i6 L$ ^' ^0 u0 h( i, @% H9 n% x5 ]" ?
  由於找工作找房子的原因,隔了這麼久才能開始寫教程,心裡感覺很對不起一直在關注本站的朋友,今天是找到房子的第二天,於是趕快繼續寫教程。- Z: m4 A- Q4 _) A. w

. g$ ~# B* N4 {, X  這一節裡面,主要就是想告訴大家如何使用好borderclear這兩個屬性。6 _% r# q. a$ g7 _: d' a7 c
3 [6 T, c) o& O3 W- p! Z' T, z
  首先,如果你曾用過table製作網頁,你就應該知道,如果要在表格中繪製一條虛線該如何做,那需要製作一個很小的圖片來填充,其實我們還有更簡單的辦法,只要在<td></td>中加入這麼一段就可以了,你可以試試:# S3 p3 s1 p! U! ?, x# G$ p' p/ c
  <div style="border-bottom:1px dashed #ccc"></div>
* O; [, D* g5 {
  ]5 O' R) [/ x) w  b  大家可以再次參考手冊,然後你就能明白dashed、solid、dotted...等的作用,利用它們你可以製作出許多效果來,實線、虛線、雙線、陰影線等等。. k& B% n) m' Y. ?0 Z* @2 g

- ^" H# W4 \; O2 D, A0 d4 l; z0 j 程序代碼
1 ^' \; i: x0 g& B+ b- z<div id="banner"></div>
5 f6 y! N2 a! G: l+ _- u6 q% C; z# x7 A6 l

4 Z2 Y) q8 I, M1 U8 h  以上代碼便可以實現設計草圖中的banner,在css.css中加入以下樣式:( [2 M( d& w; N- F" Z% S

6 x, D- r$ E, ?7 u# T 程序代碼' q& ]8 `- |* ?% @" @6 _
#banner {. E- G# h, \7 Q# J- i( u
    background:url(banner.jpg) 0 30px no-repeat; /*加入背景圖片*/1 d3 Y: h( q% ?. g/ P8 i
    width:730px; /*設定層的寬度*/" }1 p: e& ?$ \3 [# z1 h
    margin:auto; /*層居中*/3 o+ R0 x- ~) z1 H- a6 T8 U$ A
    height:240px; /*設定高度*/" b  S2 i, E- A, Z; `, k
    border-bottom:5px solid #EFEFEF; /*畫一條淺灰色實線*/# f  ?4 Y, n  P; w  L1 E. S0 ?
    clear:both /*清除浮動*/
5 t5 M5 M, B7 C. M}  s1 m+ C/ T" \1 Y8 c) ?

8 _' [$ V3 }: n3 D( j8 S
% |. N: o  P+ F3 i  通過border很容易就繪製出一條實線了,並且減少了圖片下載所佔用的網絡資源,使得頁面載入速度變得更快。' x2 i+ t- j6 v  o( z  ]: \- P

. h4 v7 \* o  f" x+ h( C8 j  另一個要說明的就是clear:both,表示清除左、右所有的浮動,在接下來的佈局中我們還會用這個屬性:clear:left/right。在這裡添加clear:both是由於之前的ul、li元素設置了浮動,如果不清除則會影響banner層位置的設定。
0 ^' G0 _: t' p* g1 h. `0 G" s& |/ [' b1 o) r7 q9 t0 ]& ]1 b
程序代碼5 q/ I- p3 t" ?( R' x
<div id="pagebody"><!--頁面主體-->
3 p  E% M$ n0 m  x2 U5 c    <div id="sidebar"><!--側邊欄-->
1 }* P. l$ }4 G    </div>
& j: L; ]1 q6 M2 r  J* ^    <div id="mainbody"><!--主體內容-->
9 y/ p+ i3 @  M9 @    </div>3 T6 j# Q8 N9 p1 y9 j' i2 p
</div>
4 X0 E7 Y5 t! {) Z8 H2 M5 e6 Z' w. u+ W( A# z

; ^- M* F: v5 G+ G5 Z: s% G* ^* k  以上是頁面主體部分,我們在css.css中添加以下樣式:+ b' w9 n- V) X1 X8 G2 E) d

* x/ Y+ m# x3 s) S) v) C 程序代碼
% |1 H! S' O* w- [: Z' v9 A#pagebody {1 g# N* D: _# c% u8 I) T: c8 g5 }- @
    width:730px; /*設定寬度*/
+ u  [$ s7 j+ B( h" T4 D5 ~    margin:8px auto; /*居中*/5 L0 P7 V- N' f/ T! A
}3 D6 f$ t% U: a, D1 Y, C% ~
#sidebar {
$ u- Z( A; B- R& r$ l    width:160px; /*設定寬度*/* P' Z( g: r8 h5 B. A+ O+ x
    text-align:left; /*文字左對齊*/* n8 X! p+ T# L: R) o8 Y7 U
    float:left; /*浮動居左*/
8 q7 {" W" y% N7 p3 q9 [    clear:left; /*不允許左側存在浮動*/
( N- d) w8 ]; Y+ r; E4 F    overflow:hidden; /*超出寬度部分隱藏*/0 {, W  Q) C$ N! D- v' S6 }
}
7 w0 g/ n6 p( f#mainbody {
' `* m* q/ B% D    width:570px;  F, `9 C  ^+ a! E/ x& J( j" R* v
    text-align:left;3 D4 v) g# }& ]# C! y
    float:right; /*浮動居右*/
, Z8 l# p0 {: A: J    clear:right; /*不允許右側存在浮動*/3 }4 @8 G/ e* m$ N, J4 c1 L
    overflow:hidden
7 h7 k+ m$ {, m) Y1 m! N}
3 Y4 W; c2 d+ d3 a
; \, F4 I! M( O7 A, z& G1 u* ~7 L  J: g: G9 ?- M
  為了可以查看到效果,建議在#sidebar和#mainbody中加入以下代碼,預覽完成後可以刪除這段代碼:- n" s4 `$ a! p1 |& j
! m8 l8 `' B+ p
程序代碼
0 l( D" k5 v# G' ]border:1px solid #E00;! K( Y$ F) D+ O- V- Y2 `2 b! V
height:200px
7 ]1 h# L( r. Q* t& \
/ T5 x4 C' Y: R* h/ W: f8 D3 m% \
9 P, p9 E/ @9 Q. q" v  保存預覽效果,可以發現這兩個層完美的浮動,在達到了我們佈局的要求,而兩個層的實際寬度應該160+2(border)+570+2=734px,已經超出了父層的寬度,由於clear的原因,這兩個層才不會出現錯位的情況,這樣可以使我們佈局的頁面不會因為內容太長(例如圖片)而導致錯位。
6 E3 o! C' S6 A* Q; T
1 K; w1 k" t% m/ o' ~  而之後添加的overflow:hidden則可以使內容太長(例如圖片)的部份自動被隱藏。通常我們會看到一些網頁在載入時,由於圖片太大,導致佈局被撐開,直到頁面下載完成才恢復正常,通過添加overflow:hidden就可以解決這個問題。. N+ D. |* P% ~/ p7 e

# B, C% F; B7 u1 i( Z5 T: b  CSS中每一個屬性運用得當,就可以解決許多問題,或許它們與你在佈局的頁並沒有太大的關係,但是你必須知道這些屬性的作用,在遇到難題的時候,可以嘗試使用這些屬性去解決問題。5 i: k: j  }( @6 ^
您需要登錄後才可以回帖 登錄 | 免费注册

本版積分規則

點基

GMT+8, 2026-7-12 12:00

By DZ X3.5

小黑屋

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