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