----------------------- Page 1----------------------- 今天看到一個Div+CSS佈局的經典教程,奉獻給你們,本人一貫偏好DIV+CSS, 但因爲關注seo和網站運營較多,形成了DIV+CSS作網頁模板的技術生疏,爲 了培養本身成全才,不得很差好消化一翻,其實很簡單滴。這個DIV+CSS佈局 教程很不錯。 教程共分5節,其實就一點點內容,不過經過學習,必定能讓你領會到DIV+CSS 的精髓,不要嫌文字多,一個小時必定能讓你學完,固然是針對熟悉網頁製做 基礎的朋友。 在網頁製做中,有許多的術語,例如:CSS、HTML、DHTML、XHTML等等。在下 面的文章中咱們將會用到一些有關於HTML的基本知識,而在你學習這篇入門教 程以前,請肯定你已經具備了必定的HTML基礎。下面咱們就開始一步一步使用 DIV+CSS進行網頁佈局設計吧。 全部的設計第一步就是構思,構思好了,通常來講還須要用PhotoShop或 FireWorks(如下簡稱PS或FW)等圖片處理軟件將須要製做的界面佈局簡單的構 畫出來,如下是我構思好的界面佈局圖。 下面,咱們須要根據構思圖來規劃一下頁面的佈局,仔細分析一下該圖,咱們 ----------------------- Page 2----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 不難發現,圖片大體分爲如下幾個部分: 一、頂部部分,其中又包括了LOGO、MENU 和一幅Banner圖片; 二、內容部分又可分爲側邊欄、主體內容; 三、底部,包括一些版權信息。 有了以上的分析,咱們就能夠很容易的佈局了,咱們設計層以下圖: 根據上圖,我再畫了一個實際的頁面佈局圖,說明一下層的嵌套關係,這樣理 解起來就會更簡單了。 ----------------------- Page 3----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. DIV結構以下: │body {} /*這是一個HTML元素,具體我就不說明了*/ └#Container {} /*頁面層容器*/ ├#Header {} /*頁面頭部*/ ├#PageBody {} /*頁面主體*/ │ ├#Sidebar {} /*側邊欄*/ │ └#MainBody {} /*主體內容*/ └#Footer {} /*頁面底部*/ 至此,頁面佈局與規劃已經完成,接下來咱們要作的就是開始書寫HTML代碼和 CSS。 接下來咱們在桌面新建一個文件夾,命名爲「DIV+CSS佈局練習」,在文件夾下新 建兩個空的記事本文檔,輸入如下內容: <!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>無標題文檔</title> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> </body> </html> ----------------------- Page 4----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 這是XHTML的基本結構,將其命名爲index.htm,另外一個記事本文檔則命名爲 css.css。 下面,咱們在<body></body>標籤對中寫入DIV的基本結構,代碼以下: <div id="container">[color=#aaaaaa]<!--頁面層容器-->[/color] <div id="Header">[color=#aaaaaa]<!--頁面頭部-->[/color] </div> <div id="PageBody">[color=#aaaaaa]<!--頁面主體-->[/color] <div id="Sidebar">[color=#aaaaaa]<!--側邊欄-->[/color] </div> <div id="MainBody">[color=#aaaaaa]<!--主體內容-->[/color] </div> </div> <div id="Footer">[color=#aaaaaa]<!--頁面底部-->[/color] </div> </div> 爲了使之後閱讀代碼更簡易,咱們應該添加相關注釋,接下來打開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} 把以上文件保存,用瀏覽器打開,這時咱們已經能夠看到基礎結構了,這個就 是頁面的框架了。 關於以上CSS的說明(詳細請參考CSS2.0中文手冊,網上有下載): 一、請養成良好的註釋習慣,這是很是重要的; ----------------------- Page 5----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 二、body是一個HTML元素,頁面中全部的內容都應該寫在這標籤對以內,我就 很少說了; 三、講解一些經常使用的CSS代碼的含義: font:12px Tahoma; 這裏使用了縮寫,完整的代碼應該是:font-size:12px;font-family:Tahoma; 說明字體爲12像素大小,字體爲Tahoma格式; margin:0px; 也使用了縮寫,完整的應該是: margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px 或 margin:0px 0px 0px 0px 順序是 上 / 右 / 下 / 左,你也能夠書寫爲margin:0(縮寫); 以上樣式說明body部分對上右下左邊距爲 0 像素,若是使用auto則是自動調 整邊距, 另外還有如下幾種寫法: margin:0px auto; 說明上下邊距爲0px,左右爲自動調整; 咱們之後將使用到的padding屬性和margin 有許多類似之處,他們的參數是一 樣的, 只不過各自表示的含義不相同,margin是外部距離,而padding則是內部距離。 text-align:center 文字對齊方式,能夠設置爲左、右、中,這裏我將它設置爲居中對齊。 background:#FFF 設置背景色爲白色,這裏顏色使用了縮寫,完整的應該是background:#FFFFFF。 background能夠用來給指定的層填充背景色、背景圖片,之後咱們將用到以下 格式: background:#ccc url('bg.gif') top left no-repeat; 表示:使用#CCC(灰度色)填充整個層,使用bg.gif作爲背景圖片, top left 表示圖片位於當前層的左上端,no-repeat表示僅顯示圖片大小而不填充滿整 個層。 top/right/left/bottom/center 用於定位背景圖片,分別表示 上 / 右 / 下 / 左 / 中;還可使用 background:url('bg.gif') 20px 100px; 表示X座標爲20像素,Y座標爲100像素的精肯定位; ----------------------- Page 6----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. repeat/no-repeat/repeat-x/repeat-y 分別表示 填充滿整個層 / 不填充 / 沿X軸填充 / 沿Y軸填充。 height / width / color 分別表示高度(px)、寬度(px)、字體顏色(HTML色系表)。 四、如何使頁面居中? 你們將代碼保存後能夠看到,整個頁面是居中顯示的,那麼到底是什麼緣由使 得頁面居中顯示呢? 是由於咱們在#container中使用瞭如下屬性: margin:0 auto; 按照前面的說明,能夠知道,表示上下邊距爲0,左右爲自動,所以該層就會 自動居中了。 若是要讓頁面居左,則取消掉auto值就能夠了,由於默認就是居左顯示的。 經過margin:auto咱們就能夠輕易地使層自動居中了。 五、這裏我只介紹這些經常使用的CSS屬性了,其餘的請參看CSS2.0中文手冊。 當咱們寫好了頁面大體的DIV結構後,咱們就能夠開始細緻地對每個部分進 行製做了。 在上一章中咱們寫入了一些樣式,那些樣式是爲了預覽結構而寫入的,咱們把 css.css中的樣式所有清除掉,從新寫入如下樣式代碼: 樣式說明: a:link,a:visited {font-size:12px;text-decoration:none;} a:hover {} 這兩項分別是控制頁面中超連接的樣式,具體我就不說明了,請你們參閱手冊。 #container {width:800px;margin:10px auto} 指定整個頁面的顯示區域。 width:800px 指定寬度爲800像素,這裏根據實際所需設定。 margin:10px auto,則是頁面上、下邊距爲10個像素,而且居中顯示。 上一章中咱們講過,對層的margin屬性的左右邊距設置爲auto可讓層居中 顯示。 接下來,咱們開始製做TOP部分,TOP部分包括了LOGO、菜單和 Banner,首先 咱們要作的就是對設計好的圖片進行切片,如下是在FW下完成的切片: ----------------------- Page 7----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 我將TOP部分切片爲兩部分,第一部分包括了 LOGO和一條橫線。因爲LOGO圖 片並無太多的顏色,這裏我因而將這一部分保存爲GIF格式,調色板選擇爲 精確,選擇Alpha透明度,色版爲白色(此處顏色應與背景色相同),導出爲 logo.gif,圖像寬度爲800px。 到這裏,有的朋友就說了,* 爲何要使用 GIF 格式?使用 JPEG 不是更好嗎? 由於GIF格式的圖片文件更小,這樣能使頁面載入的速度更快,固然使用此格 式以前必須肯定圖片並無使用太多的顏色,當咱們使用了GIF格式時,從肉 眼上並不能看出圖片有什麼太大的變化,所以這是可行的。 * 接下來的 Banner 部分還能使用 GIF 格式嗎? 答案是不能,由於Banner部分是一個細緻的圖片,若是使用GIF格式顏色會有 太大的損失,因此必須使用JPEG格式,將文件導出爲banner.jpg。 * 合理的切片是很是之重要的,由於切片的方法正確與否決定了 CSS 書寫的簡 易程度以及頁面載入速度。 切好片後,咱們還須要對TOP部分進行分析並將DIV結構寫入Header中代碼如 下: <div id="menu"> <ul> <li><a href="#">首頁</a></li> <li class="menuDiv"></li> ----------------------- Page 8----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. <li><a href="#">博客</a></li> <li class="menuDiv"></li> <li><a href="#">設計</a></li> <li class="menuDiv"></li> <li><a href="#">相冊</a></li> <li class="menuDiv"></li> <li><a href="#">論壇</a></li> <li class="menuDiv"></li> <li><a href="#">關於</a></li> </ul> </div> <div id="banner"> </div> 爲何要這麼寫呢,由於對菜單使用列表<li>形式,能夠在之後方便對菜單定 制樣式。 而爲何要添加如下代碼呢? <li class="menuDiv"></li> 插入這一段代碼是能夠方便地對菜單選項之間插入一些分隔樣式,例如預覽圖 中的豎線分隔。 而後咱們在css.css中再寫入如下樣式: /*頁面頭部*/ #header {background:url(logo.gif) no-repeat} 樣式說明: #header {background:url(logo.gif) no-repeat} 給頁面頭部分加入一個背景圖片LOGO,而且不做填充。 這裏,咱們沒有指定 header 層的高度,爲何不指定呢? 由於header層中還有菜單和banner項,因此層的高度暫時是未知的,而層的 屬性又可讓層根據內容自動設定調整,所以咱們並不須要指定高度。 使用列表<li>製做菜單 開始此節的學習前,請確認你已經參照以前的幾節內容寫入了DIV、CSS到 index.htm和css.css文件中。 這一節我將告訴你們如何用列表<li>來製做菜單。 ----------------------- Page 9----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. <div id="menu"> <ul> <li><a href="#">首頁</a></li> <li class="menuDiv"></li> <li><a href="#">博客</a></li> <li class="menuDiv"></li> <li><a href="#">設計</a></li> <li class="menuDiv"></li> <li><a href="#">相冊</a></li> <li class="menuDiv"></li> <li><a href="#">論壇</a></li> <li class="menuDiv"></li> <li><a href="#">關於</a></li> </ul> </div> 以上是這部分的結構,有關於<ul></ul>、<li></li>這兩個HTML元素你們本身 去參考相關的內容吧,它們最主要的做用就是在HTML中以列表的形式來顯示一 些信息。 還有一點須要你們必定要分清楚的,當在HTML中定義爲 id="divID"時,在CSS 對應的設置語法則是#divID{},若是在HTML中定義爲class="divID"時,則在 CSS中對應的設置語法是.divID。 若是 id="divID"這個層中包括了一個<img></img>,則這個img在CSS中對應 的設置語法應該是#divID img {},一樣,若是是包含在class="divID"這個層 中時,則設置語法應該是.divID img {},這一點但願你們要分清楚了。 另外,HTML中的一切元素都是能夠定義的,例如table、tr、td、th、form、 img、input...等等,若是你要在CSS中設置它們,則直接寫入元素的名稱加上 一對大括號{}就能夠了。全部的CSS代碼都應該寫在大括號{}中。 按照上面的介紹,咱們先在css.css中寫入如下代碼: #menu ul {list-style:none;margin:0px;} #menu ul li {float:left;} 解釋一下: #menu ul {list-style:none;margin:0px;} list-style:none,這一句是取消列表前點,由於咱們不須要這些點。 margin:0px,這一句是刪除UL的縮進,這樣作可使全部的列表內容都不縮進。 ----------------------- Page 10----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. #menu ul li {float:left;} 這裏的 float:left 的左右是讓內容都在同一行顯示,所以使用了浮動屬性 (float)。 到這一步,建議你們先保存預覽一下效果,咱們再添加下面的內容,效果以下: 這時,列表內容是排列在一行,咱們在#menu ul li {}再加入代碼margin:0 10px #menu ul {list-style:none;margin:0px;} #menu ul li {float:left;margin:0 10px} margin:0 10px的做用就是讓列表內容之間產生一個20像素的距離(左:10px, 右:10px),預覽的效果以下: 如今,雛形已經出來了,咱們再來固定菜單的位置,把代碼改爲以下: #menu {padding:20px 20px 0 0} /*利用padding:20px 20px 0 0來固定菜單位置*/ #menu ul {float:right;list-style:none;margin:0px;} /*添加了float:right使得菜單位於頁面右側*/ #menu ul li {float:left;margin:0 10px} 這時,位置已經肯定了,但是構思圖中,菜單選項之間還有一條豎線,怎麼辦 呢? 別忘了,咱們早就已經留好了一個空的<li class="menuDiv"></li>,要想加入 豎線就使用它了。 按照上面說的方法,咱們再添加如下代碼: .menuDiv {width:1px;height:28px;background:#999} 保存預覽一下,豎線是否已經出來了?關於這段代碼就很少講了,應該是很容 易理解的。 ----------------------- Page 11----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 不過,菜單選項的文字卻在頂部,咱們再修改爲如下代碼: #menu ul li {float:left;margin:0 10px;display:block;line-height:28px} 關於display:block;line-height:28px 你們能夠去參閱一下手冊,我就很少講 了。 效果基本上已經實現了,剩下的就是修改菜單的超連接樣式,在css.css中添 加如下代碼: #menu ul li a:link,#menu ul li a:visited {font-weight:bold;color:#666} #menu ul li a:hover{} 這個也很少說了,沒什麼好說的了,最後的效果以下: 這一節裏面,主要就是想告訴你們如何使用好border 和clear 這兩個屬性。 首先,若是你曾用過table製做網頁,你就應該知道,若是要在表格中繪製一 條虛線該如何作,那須要製做一個很小的圖片來填充,其實咱們還有更簡單的 辦法,只要在<td></td>中加入這麼一段就能夠了,你能夠試試: <div style="border-bottom:1px dashed #ccc"></div> 你們能夠再次參考手冊,而後你就能明白dashed、solid、dotted...等的做用, 利用它們你能夠製做出許多效果來,實線、虛線、雙線、陰影線等等。 <div id="banner"></div> 以上代碼即可以實現設計草圖中的banner,在css.css中加入如下樣式: #banner { background:url(banner.jpg) 0 30px no-repeat; /*加入背景圖片*/ width:730px; /*設定層的寬度*/ margin:auto; /*層居中*/ height:240px; /*設定高度*/ border-bottom:5px solid #EFEFEF; /*畫一條淺灰色實線*/ clear:both /*清除浮動*/ } 經過border很容易就繪製出一條實線了,而且減小了圖片下載所佔用的網絡資 ----------------------- Page 12----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 源,使得頁面載入速度變得更快。 另外一個要說明的就是clear:both,表示清除左、右全部的浮動,在接下來的 局中咱們還會用這個屬性:clear:left/right。在這裏添加clear:both是因爲 以前的ul、li元素設置了浮動,若是不清除則會影響banner層位置的設定。 <div id="pagebody"><!--頁面主體--> <div id="sidebar"><!--側邊欄--> </div> <div id="mainbody"><!--主體內容--> </div> </div> 以上是頁面主體部分,咱們在css.css中添加如下樣式: #pagebody { width:730px; /*設定寬度*/ margin:8px auto; /*居中*/ } #sidebar { width:160px; /*設定寬度*/ text-align:left; /*文字左對齊*/ float:left; /*浮動居左*/ clear:left; /*不容許左側存在浮動*/ overflow:hidden; /*超出寬度部分隱藏*/ } #mainbody { width:570px; text-align:left; float:right; /*浮動居右*/ clear:right; /*不容許右側存在浮動*/ overflow:hidden } 爲了能夠查看到效果,建議在#sidebar和#mainbody中加入如下代碼,預覽完 成後能夠刪除這段代碼: border:1px solid #E00; height:200px 保存預覽效果,能夠發現這兩個層完美的浮動,在達到了咱們佈局的要求,而 兩個層的實際寬度應該160+2(border)+570+2=734px,已經超出了父層的寬度, 因爲clear的緣由,這兩個層纔不會出現錯位的狀況,這樣可使咱們佈局的 ----------------------- Page 13----------------------- Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 頁面不會由於內容太長(例如圖片)而致使錯位。 而以後添加的overflow:hidden則可使內容太長(例如圖片)的部份自動被 隱藏。一般咱們會看到一些網頁在載入時,因爲圖片太大,致使佈局被撐開, 直到頁面下載完成才恢復正常,經過添加overflow:hidden就能夠解決這個問 題。 CSS中每個屬性運用得當,就能夠解決許多問題,或許它們與你在佈局的頁 並無太大的關係,可是你必須知道這些屬性的做用,在遇到難題的時候,可 以嘗試使用這些屬性去解決問題。 若是對您有幫助,請頂一個!文章來源:藍色理想,感謝做者的無私奉獻,現 在的互聯網上淨化愈來愈少。