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