通過實例學習CSS布局網頁
11.1.9 一個典型的網頁布局實例
本節(jié)綜合前面學習的布局知識,制作比較典型的網頁布局實例,先分析這個例子布局的要求。這個例子要求頁面有上下4行區(qū)域,分別用作廣告區(qū)、導航區(qū)、主體區(qū)和版權信息區(qū)。而主體區(qū)又分為左右2個大區(qū),左區(qū)域用于文章列表,右區(qū)域用于8個主體內容區(qū)??瓷先ゲ季謪^(qū)域比較多,用表格布局需要很多行代碼才能完成。利用div和CSS可以很好地完成,并且代碼比較簡練。
根據實例要求作圖,并分析布局的結構,從而方便編寫div布局的結構代碼,筆者做分析圖如圖11.13所示,并在每個區(qū)域做了id命名(#符號開頭),以方便div編寫。

圖11.13 網頁布局結構分析
從分析圖可以看出整個頁面的結構,其中,#top代表廣告區(qū)、#nav代表導航區(qū)、#mid代表主體區(qū)、#left代表#mid所包含的左區(qū)域、#right代表#mid所包含的右邊區(qū)域、#bt代表版權信息區(qū)。
#right區(qū)域包含8個具體內容區(qū),由于這些內容區(qū)的尺寸相同,所以在實例中將會使用class選擇符作為統(tǒng)一樣式,對這個8個區(qū)域進行CSS樣式指定。根據結構分析圖可以編寫XHTML部分的結構代碼,編寫如下:
<div id="top">頂部廣告區(qū)</div>
<div id="nav">導航區(qū)</div>
<div id="mid">
<div id="left">縱向導航區(qū)</div>
<div id="right">
<div class="content">內容A</div>
<div class="content">內容B</div>
<div class="content">內容C</div>
<div class="content">內容D</div>
<div class="content">內容E</div>
<div class="content">內容F</div>
<div class="content">內容G</div>
<div class="content">內容H</div>
</div>
</div>
<div id="footer">底部版權區(qū)</div>
筆者在8個具體內容區(qū)用了同一個class名稱的選擇符,用于在CSS中指定統(tǒng)一的樣式。在D:\web\目錄下創(chuàng)建網頁文件(XHTML1.0),命名為div_page.htm,編寫div_page.htm文件代碼如代碼11.13所示。
代碼11.13 div網頁布局:div_page.htm
<!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>
<style type="text/css">
* {margin:0px;
padding:0px;
}
#top,#nav,#mid,#footer{width:500px;
margin:0px auto;}
#top{height:80px;
background-color:#ddd;}
#nav{height:25px;
background-color:#fc0;}
#mid{height:300px;}
#left{width:98px;
height:298px;
border:1px solid #999;
float:left;
background-color:#ddd;}
#right{height:298px;
background-color:#ccc;}
.content{width:98px;
height:148px;
background-color:#c00;
border:1px solid #999;
float:left;}
#content2{background-color:#f60;}
#footer{height:80px;
background-color:#fc0;}
</style></head>
<body>
<div id="top">頂部廣告區(qū)</div>
<div id="nav">導航區(qū)</div>
<div id="mid">
<div id="left">縱向導航區(qū)</div>
<div id="right">
<div class="content">內容A</div>
<div class="content" id="content2">內容B</div>
<div class="content">內容C</div>
<div class="content" id="content2">內容D</div>
<div class="content" id="content2">內容E</div>
<div class="content">內容F</div>
<div class="content" id="content2">內容G</div>
<div class="content">內容H</div>
</div>
</div>
<div id="footer">底部版權區(qū)</div>
</body>
</html>
筆者稍微修改了XHTML部分的代碼,選了4個具體內容區(qū)加上了id名稱為content2的屬性,這是為了使這4個區(qū)域有不同的背景色。在瀏覽器地址欄輸入http://localhost/ div_page.htm,瀏覽效果如圖11.13所示。
本例綜合了前面的布局知識,如居中等。不過,而由CSS代碼可得,主體內容區(qū)(id名稱為mid)的寬度是500像素,高度是300像素。通過分析圖可以觀察得出以下關系公式:
主體內容區(qū)寬度=縱向導航區(qū)寬度+具體內容區(qū)寬度×4
主體內容區(qū)高度=縱向導航區(qū)高度=具體內容區(qū)高度×2
在CSS代碼中,縱向導航區(qū)(id名稱為left)的寬度只有98像素,高度為298像素。而右邊具體內容區(qū)(class名稱為content)的寬度也只有98像素,高度為148像素,可得:
縱向導航區(qū)寬度+具體內容區(qū)寬度×4=490(像素)
縱向導航區(qū)高度=298(像素)
具體內容區(qū)高度×2=296(像素)
主體內容區(qū)(id名稱為mid)的寬度與高度為什么會與內含的div寬度有偏差?這涉及瀏覽器解析CSS時對寬度和高度的計算方法,IE7.0瀏覽器和FireFox瀏覽器解析div的寬度和高度設置值并不包括邊框。由CSS代碼可得,縱向導航區(qū)(id名稱為left)和具體內容區(qū)(class名稱為content)的邊框為1像素粗,所以關系公式應該進一步修改為:

圖11.14 網頁布局實例
主體內容區(qū)寬度=縱向導航區(qū)寬度+縱向導航區(qū)邊框×2+具體內容區(qū)寬度×4+具體內容區(qū)邊框×8
主體內容區(qū)高度=縱向導航區(qū)高度+縱向導航區(qū)邊框×2=具體內容區(qū)高度×2+具體內容區(qū)邊框×4
寬度和高度的計算是合理布局頁面的很重要的基礎,一旦計算有誤將導致頁面布局混亂。并且針對不同瀏覽器有不同計算辦法,本書示例使用IE7.0瀏覽器,本書后面章節(jié)將學習不同瀏覽器的兼容性解決辦法。
— 注意:在寬度和高度的計算中,IE6.0以前版本的瀏覽器解析div的寬度和高度設置值包括邊框,如果讀者使用的是IE6.0以前版本的瀏覽器,嘗試修改寬度值以達到圖11.14的效果。
相關文章
本文主要介紹了css九宮格布局的五種方法,內容包括grid布局、flex布局、table布局、float浮動定位、inline-block+letter-spacing屬性這五種方法的實現(xiàn),感興趣的可以了解下2023-09-18- 在Web開發(fā)中,經常會遇到需要將元素水平和垂直居中的情況,今天,將為大家分享幾種CSS方法,讓你的元素輕松居中,讓頁面更美觀吸引人,感興趣的小伙伴可以自己動手試一試2023-09-08
- 相信大家在面試的時候也會經常碰到css實現(xiàn)元素居中的方法,下面我介紹6種方法給大家,歡迎大家評論區(qū)交流2023-09-07

flex布局中使用flex-wrap實現(xiàn)換行的項目實踐
最近需要做個換行的布局,本文主要介紹了flex布局中使用flex-wrap實現(xiàn)換行的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需2022-06-16CSS布局之浮動(float)和定位(position)屬性的區(qū)別
今天看到有朋友留言問浮動和定位有什么區(qū)別,如何使用?今天找了篇文章,講的比較通俗易懂,供大家參考2021-09-23
這篇文章主要介紹了css實現(xiàn)元素居中的N種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
這篇文章主要介紹了div水平布局兩邊對齊的三種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起2021-01-21
waterfall瀑布流布局+動態(tài)渲染的實現(xiàn)
這篇文章主要介紹了waterfall瀑布流布局+動態(tài)渲染的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起2021-01-19
這篇文章主要介紹了頁面中有間隔的方格布局如何完美實現(xiàn)方法。文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來2020-11-27- 這篇文章主要介紹了css實現(xiàn)六種自適應兩欄布局方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習2020-10-28

