通過(guò)實(shí)例學(xué)習(xí)CSS布局網(wǎng)頁(yè)

11.1.9 一個(gè)典型的網(wǎng)頁(yè)布局實(shí)例
本節(jié)綜合前面學(xué)習(xí)的布局知識(shí),制作比較典型的網(wǎng)頁(yè)布局實(shí)例,先分析這個(gè)例子布局的要求。這個(gè)例子要求頁(yè)面有上下4行區(qū)域,分別用作廣告區(qū)、導(dǎo)航區(qū)、主體區(qū)和版權(quán)信息區(qū)。而主體區(qū)又分為左右2個(gè)大區(qū),左區(qū)域用于文章列表,右區(qū)域用于8個(gè)主體內(nèi)容區(qū)??瓷先ゲ季謪^(qū)域比較多,用表格布局需要很多行代碼才能完成。利用div和CSS可以很好地完成,并且代碼比較簡(jiǎn)練。
根據(jù)實(shí)例要求作圖,并分析布局的結(jié)構(gòu),從而方便編寫(xiě)div布局的結(jié)構(gòu)代碼,筆者做分析圖如圖11.13所示,并在每個(gè)區(qū)域做了id命名(#符號(hào)開(kāi)頭),以方便div編寫(xiě)。
圖11.13 網(wǎng)頁(yè)布局結(jié)構(gòu)分析
從分析圖可以看出整個(gè)頁(yè)面的結(jié)構(gòu),其中,#top代表廣告區(qū)、#nav代表導(dǎo)航區(qū)、#mid代表主體區(qū)、#left代表#mid所包含的左區(qū)域、#right代表#mid所包含的右邊區(qū)域、#bt代表版權(quán)信息區(qū)。
#right區(qū)域包含8個(gè)具體內(nèi)容區(qū),由于這些內(nèi)容區(qū)的尺寸相同,所以在實(shí)例中將會(huì)使用class選擇符作為統(tǒng)一樣式,對(duì)這個(gè)8個(gè)區(qū)域進(jìn)行CSS樣式指定。根據(jù)結(jié)構(gòu)分析圖可以編寫(xiě)XHTML部分的結(jié)構(gòu)代碼,編寫(xiě)如下:
<div id="top">頂部廣告區(qū)</div>
<div id="nav">導(dǎo)航區(qū)</div>
<div id="mid">
<div id="left">縱向?qū)Ш絽^(qū)</div>
<div id="right">
<div class="content">內(nèi)容A</div>
<div class="content">內(nèi)容B</div>
<div class="content">內(nèi)容C</div>
<div class="content">內(nèi)容D</div>
<div class="content">內(nèi)容E</div>
<div class="content">內(nèi)容F</div>
<div class="content">內(nèi)容G</div>
<div class="content">內(nèi)容H</div>
</div>
</div>
<div id="footer">底部版權(quán)區(qū)</div>
筆者在8個(gè)具體內(nèi)容區(qū)用了同一個(gè)class名稱(chēng)的選擇符,用于在CSS中指定統(tǒng)一的樣式。在D:\web\目錄下創(chuàng)建網(wǎng)頁(yè)文件(XHTML1.0),命名為div_page.htm,編寫(xiě)div_page.htm文件代碼如代碼11.13所示。
代碼11.13 div網(wǎng)頁(yè)布局: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>網(wǎng)頁(yè)布局實(shí)例</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">導(dǎo)航區(qū)</div>
<div id="mid">
<div id="left">縱向?qū)Ш絽^(qū)</div>
<div id="right">
<div class="content">內(nèi)容A</div>
<div class="content" id="content2">內(nèi)容B</div>
<div class="content">內(nèi)容C</div>
<div class="content" id="content2">內(nèi)容D</div>
<div class="content" id="content2">內(nèi)容E</div>
<div class="content">內(nèi)容F</div>
<div class="content" id="content2">內(nèi)容G</div>
<div class="content">內(nèi)容H</div>
</div>
</div>
<div id="footer">底部版權(quán)區(qū)</div>
</body>
</html>
筆者稍微修改了XHTML部分的代碼,選了4個(gè)具體內(nèi)容區(qū)加上了id名稱(chēng)為content2的屬性,這是為了使這4個(gè)區(qū)域有不同的背景色。在瀏覽器地址欄輸入http://localhost/ div_page.htm,瀏覽效果如圖11.13所示。
本例綜合了前面的布局知識(shí),如居中等。不過(guò),而由CSS代碼可得,主體內(nèi)容區(qū)(id名稱(chēng)為mid)的寬度是500像素,高度是300像素。通過(guò)分析圖可以觀察得出以下關(guān)系公式:
主體內(nèi)容區(qū)寬度=縱向?qū)Ш絽^(qū)寬度+具體內(nèi)容區(qū)寬度×4
主體內(nèi)容區(qū)高度=縱向?qū)Ш絽^(qū)高度=具體內(nèi)容區(qū)高度×2
在CSS代碼中,縱向?qū)Ш絽^(qū)(id名稱(chēng)為left)的寬度只有98像素,高度為298像素。而右邊具體內(nèi)容區(qū)(class名稱(chēng)為content)的寬度也只有98像素,高度為148像素,可得:
縱向?qū)Ш絽^(qū)寬度+具體內(nèi)容區(qū)寬度×4=490(像素)
縱向?qū)Ш絽^(qū)高度=298(像素)
具體內(nèi)容區(qū)高度×2=296(像素)
主體內(nèi)容區(qū)(id名稱(chēng)為mid)的寬度與高度為什么會(huì)與內(nèi)含的div寬度有偏差?這涉及瀏覽器解析CSS時(shí)對(duì)寬度和高度的計(jì)算方法,IE7.0瀏覽器和FireFox瀏覽器解析div的寬度和高度設(shè)置值并不包括邊框。由CSS代碼可得,縱向?qū)Ш絽^(qū)(id名稱(chēng)為left)和具體內(nèi)容區(qū)(class名稱(chēng)為content)的邊框?yàn)?像素粗,所以關(guān)系公式應(yīng)該進(jìn)一步修改為:
圖11.14 網(wǎng)頁(yè)布局實(shí)例
主體內(nèi)容區(qū)寬度=縱向?qū)Ш絽^(qū)寬度+縱向?qū)Ш絽^(qū)邊框×2+具體內(nèi)容區(qū)寬度×4+具體內(nèi)容區(qū)邊框×8
主體內(nèi)容區(qū)高度=縱向?qū)Ш絽^(qū)高度+縱向?qū)Ш絽^(qū)邊框×2=具體內(nèi)容區(qū)高度×2+具體內(nèi)容區(qū)邊框×4
寬度和高度的計(jì)算是合理布局頁(yè)面的很重要的基礎(chǔ),一旦計(jì)算有誤將導(dǎo)致頁(yè)面布局混亂。并且針對(duì)不同瀏覽器有不同計(jì)算辦法,本書(shū)示例使用IE7.0瀏覽器,本書(shū)后面章節(jié)將學(xué)習(xí)不同瀏覽器的兼容性解決辦法。
— 注意:在寬度和高度的計(jì)算中,IE6.0以前版本的瀏覽器解析div的寬度和高度設(shè)置值包括邊框,如果讀者使用的是IE6.0以前版本的瀏覽器,嘗試修改寬度值以達(dá)到圖11.14的效果。
相關(guān)文章
- 本文主要介紹了css九宮格布局的五種方法,內(nèi)容包括grid布局、flex布局、table布局、float浮動(dòng)定位、inline-block+letter-spacing屬性這五種方法的實(shí)現(xiàn),感興趣的可以了解下2023-09-18
- 在Web開(kāi)發(fā)中,經(jīng)常會(huì)遇到需要將元素水平和垂直居中的情況,今天,將為大家分享幾種CSS方法,讓你的元素輕松居中,讓頁(yè)面更美觀吸引人,感興趣的小伙伴可以自己動(dòng)手試一試2023-09-08
- 相信大家在面試的時(shí)候也會(huì)經(jīng)常碰到css實(shí)現(xiàn)元素居中的方法,下面我介紹6種方法給大家,歡迎大家評(píng)論區(qū)交流2023-09-07
flex布局中使用flex-wrap實(shí)現(xiàn)換行的項(xiàng)目實(shí)踐
最近需要做個(gè)換行的布局,本文主要介紹了flex布局中使用flex-wrap實(shí)現(xiàn)換行的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需2022-06-16CSS布局之浮動(dòng)(float)和定位(position)屬性的區(qū)別
今天看到有朋友留言問(wèn)浮動(dòng)和定位有什么區(qū)別,如何使用?今天找了篇文章,講的比較通俗易懂,供大家參考2021-09-23- 這篇文章主要介紹了css實(shí)現(xiàn)元素居中的N種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
div水平布局兩邊對(duì)齊的三種實(shí)現(xiàn)方法
這篇文章主要介紹了div水平布局兩邊對(duì)齊的三種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起2021-01-21waterfall瀑布流布局+動(dòng)態(tài)渲染的實(shí)現(xiàn)
這篇文章主要介紹了waterfall瀑布流布局+動(dòng)態(tài)渲染的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起2021-01-19頁(yè)面中有間隔的方格布局如何完美實(shí)現(xiàn)方法
這篇文章主要介紹了頁(yè)面中有間隔的方格布局如何完美實(shí)現(xiàn)方法。文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)2020-11-27css實(shí)現(xiàn)六種自適應(yīng)兩欄布局方式
這篇文章主要介紹了css實(shí)現(xiàn)六種自適應(yīng)兩欄布局方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)2020-10-28