在網(wǎng)頁制作中,有許多的術(shù)語,例如:CSS、HTML、DHTML、XHTML等等。在下面的文章中我們將會用到一些有關(guān)于HTML的基本知識,而在你學(xué)習(xí)這篇入門教程之前,請確定你已經(jīng)具有了一定的HTML基礎(chǔ)。下面我們就開始一步一步使用DIV+CSS進行網(wǎng)頁布局設(shè)計吧。
所有的設(shè)計第一步就是構(gòu)思,構(gòu)思好了,一般來說還需要用PhotoShop或FireWorks(以下簡稱PS或FW)等圖片處理軟件將需要制作的界面布局簡單的構(gòu)畫出來,以下是我構(gòu)思好的界面布局圖。

下面,我們需要根據(jù)構(gòu)思圖來規(guī)劃一下頁面的布局,仔細分析一下該圖,我們不難發(fā)現(xiàn),圖片大致分為以下幾個部分:
1、頂部部分,其中又包括了LOGO、MENU和一幅Banner圖片;
2、內(nèi)容部分又可分為側(cè)邊欄、主體內(nèi)容;
3、底部,包括一些版權(quán)信息。
有了以上的分析,我們就可以很容易的布局了,我們設(shè)計層如下圖:

根據(jù)上圖,我再畫了一個實際的頁面布局圖,說明一下層的嵌套關(guān)系,這樣理解起來就會更簡單了。

DIV結(jié)構(gòu)如下:
│body {} /*這是一個HTML元素,具體我就不說明了*/
└#Container {} /*頁面層容器*/
├#Header {} /*頁面頭部*/
├#PageBody {} /*頁面主體*/
│ ├#Sidebar {} /*側(cè)邊欄*/
│ └#MainBody {} /*主體內(nèi)容*/
└#Footer {} /*頁面底部*/
至此,頁面布局與規(guī)劃已經(jīng)完成,接下來我們要做的就是開始書寫HTML代碼和CSS。
接下來我們在桌面新建一個文件夾,命名為“DIV+CSS布局練習(xí)”,在文件夾下新建兩個空的記事本文檔,輸入以下內(nèi)容:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title>無標(biāo)題文檔</title>
<link href=”css.css” rel=”stylesheet” type=”text/css” />
</head>
<body>
</body>
</html>
這是XHTML的基本結(jié)構(gòu),將其命名為index.htm,另一個記事本文檔則命名為css.css。
下面,我們在<body></body>標(biāo)簽對中寫入DIV的基本結(jié)構(gòu),代碼如下:
<div id=”container”>[color=#aaaaaa]<!–頁面層容器–>[/color]
<div id=”Header”>[color=#aaaaaa]<!–頁面頭部–>[/color]
</div>
<div id=”PageBody”>[color=#aaaaaa]<!–頁面主體–>[/color]
<div id=”Sidebar”>[color=#aaaaaa]<!–側(cè)邊欄–>[/color]
</div>
<div id=”MainBody”>[color=#aaaaaa]<!–主體內(nèi)容–>[/color]
</div>
</div>
<div id=”Footer”>[color=#aaaaaa]<!–頁面底部–>[/color]
</div>
</div>
為了使以后閱讀代碼更簡易,我們應(yīng)該添加相關(guān)注釋,接下來打開css.css文件,寫入CSS信息,代碼如下:
/*基本信息*/
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}
/*頁面層容器*/
#container {width:100%}
/*頁面頭部*/
#Header {width:800px;margin:0 auto;height:100px;background:#FFCC99}
/*頁面主體*/
#PageBody {width:800px;margin:0 auto;height:400px;background:#CCFF00}
/*頁面底部*/
#Footer {width:800px;margin:0 auto;height:50px;background:#00FFFF}
把以上文件保存,用瀏覽器打開,這時我們已經(jīng)可以看到基礎(chǔ)結(jié)構(gòu)了,這個就是頁面的框架了。
關(guān)于以上CSS的說明(詳細請參考CSS2.0中文手冊,網(wǎng)上有下載):
1、請養(yǎng)成良好的注釋習(xí)慣,這是非常重要的;
2、body是一個HTML元素,頁面中所有的內(nèi)容都應(yīng)該寫在這標(biāo)簽對之內(nèi),我就不多說了;
3、講解一些常用的CSS代碼的含義:
font:12px Tahoma;
這里使用了縮寫,完整的代碼應(yīng)該是:font-size:12px;font-family:Tahoma;說明字體為12像素大小,字體為Tahoma格式;
margin:0px;
也使用了縮寫,完整的應(yīng)該是:
margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px
或
margin:0px 0px 0px 0px
順序是 上 / 右 / 下 / 左,你也可以書寫為margin:0(縮寫);
以上樣式說明body部分對上右下左邊距為0像素,如果使用auto則是自動調(diào)整邊距,
另外還有以下幾種寫法:
margin:0px auto;
說明上下邊距為0px,左右為自動調(diào)整;
我們以后將使用到的padding屬性和margin有許多相似之處,他們的參數(shù)是一樣的,
只不過各自表示的含義不相同,margin是外部距離,而padding則是內(nèi)部距離。
text-align:center
文字對齊方式,可以設(shè)置為左、右、中,這里我將它設(shè)置為居中對齊。
background:#FFF
設(shè)置背景色為白色,這里顏色使用了縮寫,完整的應(yīng)該是background:#FFFFFF。
background可以用來給指定的層填充背景色、背景圖片,以后我們將用到如下格式:
background:#ccc url(‘bg.gif’) top left no-repeat;
表示:使用#CCC(灰度色)填充整個層,使用bg.gif做為背景圖片,
top left
表示圖片位于當(dāng)前層的左上端,no-repeat表示僅顯示圖片大小而不填充滿整個層。
top/right/left/bottom/center
用于定位背景圖片,分別表示 上 / 右 / 下 / 左 / 中;還可以使用
background:url(‘bg.gif’) 20px 100px;
表示X座標(biāo)為20像素,Y座標(biāo)為100像素的精確定位;
repeat/no-repeat/repeat-x/repeat-y
分別表示 填充滿整個層 / 不填充 / 沿X軸填充 / 沿Y軸填充。
height / width / color
分別表示高度(px)、寬度(px)、字體顏色(HTML色系表)。
4、如何使頁面居中?
大家將代碼保存后可以看到,整個頁面是居中顯示的,那么究竟是什么原因使得頁面居中顯示呢?
是因為我們在#container中使用了以下屬性:
margin:0 auto;
按照前面的說明,可以知道,表示上下邊距為0,左右為自動,因此該層就會自動居中了。
如果要讓頁面居左,則取消掉auto值就可以了,因為默認就是居左顯示的。
通過margin:auto我們就可以輕易地使層自動居中了。
5、這里我只介紹這些常用的CSS屬性了,其他的請參看CSS2.0中文手冊。
]]>P與TABLE本身并不存在什么優(yōu)缺點,所謂web標(biāo)準(zhǔn)只是推薦的是正確的使用標(biāo)簽,好比說:P用于布局,而TABLE則本來就是轉(zhuǎn)二維數(shù)據(jù)的。讓TABLE做該做的事,并不是說頁面里不出現(xiàn)TABLE就是多么多么牛。
用P進行排版的優(yōu)勢就是我不說,大家應(yīng)該都比較清楚。P是標(biāo)準(zhǔn),是大勢所趨,但并不意味著所有的頁面都適合用它來做。
中國的門戶和國外的有很大的區(qū)別,中國網(wǎng)民并不喜歡信息量少的頁面,YAHOO到了中國頁面上的內(nèi)容就多了不少,而上次改為簡潔的頁面后訪問量下降的厲害以至于沒過幾天就又改了回來。正式由于中國的國情造就了搜狐、新浪這樣門戶。
為什么P不適合他們?下面我從幾個方面來逐一說明:
精簡代碼:
大家都說P的布局精簡代碼,但是用P替代TABLE所節(jié)約的代碼又被CSS(樣式)所占用,而這些樣式大多用于控制P的排版布局。那你會說了,CSS可以放在外部重用啊,要想得到這個問題的答案請往下看。
重用性與下載量:
統(tǒng)一使用一個.css的樣式表文件,可以實現(xiàn)修改一次,全站修改的效果,這樣使得維護的成本更低。但是請大家換一個角度想,如果所有頁面在加載時都要訪問一個文件,那這個文件每天的下載量,特別時在搜狐、新浪的網(wǎng)站平臺上將達到幾億次,這就需要后面有很多臺前端web服務(wù)器在做支撐,那后臺的成本無形中也提高了很多。如果后臺支撐沒有做好,那么頁面就會出現(xiàn)花屏,之前所作的工作也是白費。很多人會問,這樣的幾率太小了。我們所作的工作就是為了避免這一兩次意外的發(fā)生,如果意外發(fā)生了,對于門戶后果將是不堪設(shè)想的。
HTTP通訊:
統(tǒng)一的樣式表文件采用外部調(diào)用的形式,這樣每次加載單個頁面都會多一次對服務(wù)器的http請求服務(wù)器都會增加一次響應(yīng),這樣對前端web服務(wù)器會是很大的消耗。而原來很長時間都是將css和js寫在頁面前端(大家可以看看sohu和sina的頁面,大多都是采用這樣的形式),而不是作為外部調(diào)用的形式,也是為了盡量避免給服務(wù)器增加消耗。
頁面緩存:
每次用戶訪問的頁面,都會在瀏覽器緩存中保存一定時間,以保證用戶下次再訪問該頁面時能夠大大提高頁面顯示速度。而每次修改都會使頁面重新下載,對于每個外部導(dǎo)入的樣式文件也是如此,如果CSS文件修改,那么訪問網(wǎng)站的每一個頁面都會重新下載,而以往的將樣式寫在頁面中的方式,只是修改的頁面需要重新下載。
兼容性:
對于CSS(樣式表)并不是所有瀏覽器的所有版本都支持的很好,比如IE5以前的瀏覽器對于CSS的支持就不是很好。而現(xiàn)在使用IE5以前版本瀏覽器的用戶不在少數(shù),這樣就使得在頁面制作的過程中需要針對不同瀏覽器版本進行測試,以保證兼容性,無形中也增加很多工作量(至少我接觸的開發(fā)人員制作P頁面比table頁面的標(biāo)準(zhǔn)時間要長一些)。
橫切與延展性:
橫切――傳統(tǒng)的布局方式為了使頁面下載的更快,把頁面自上而下分成若干個塊,但是往往采用P進行布局的頁面都會出現(xiàn)這樣的情況,由于每塊中間欄或者其他欄內(nèi)容條數(shù)不固定導(dǎo)致兩邊欄目沒有同時自適應(yīng),而出現(xiàn)留白。
原來的頁面:

而在出現(xiàn)內(nèi)容不固定的情況,頁面就會變成下面的樣子:

相比之下傳統(tǒng)的table方式更容易規(guī)避這樣情況的發(fā)生。
以上我們只是討論某一技術(shù)在某一領(lǐng)域的可用性,而非技術(shù)本身。
說了這么多并不是說P這種布局方式不好,而是說我們應(yīng)該正確的看待Table在以內(nèi)容為基礎(chǔ)的大型門戶中的作用,而不是人云亦云。之所以P的布局方式?jīng)]有在大型網(wǎng)站應(yīng)用,不是說門戶沒有用P是技術(shù)落后,是里面的人沒有前瞻性,而是多種原因決定的。網(wǎng)易之所以全部采用P的方式是因為內(nèi)容并不是他們主攻方向。而對于其他門戶來說,這樣的決策是要靠時間來驗證的。只是現(xiàn)在這個時機還不成熟而已。
]]>以前的解決方法主要是利用js來實現(xiàn),但用過的人都知道該辦法有點繁瑣。還有一種是在外部容器定義over-flow:hidden。但這種辦法只會切割圖片而不會自動適用。
關(guān)鍵在于:max-width:780px;以及下面那行。
固定像素適應(yīng):