簡單學(xué)習(xí)CSS網(wǎng)頁布局(初學(xué)者)
發(fā)布時間:2009-03-02 22:17:43 作者:佚名
我要評論

網(wǎng)頁制作Webjx文章簡介:XHTML主要用div標(biāo)簽進(jìn)行網(wǎng)頁的布局,而控制布局的工具是CSS代碼,以使網(wǎng)頁符合Web標(biāo)準(zhǔn)。所以很多網(wǎng)頁設(shè)計師把這種布局方法的網(wǎng)頁叫做“Div+CSS”網(wǎng)頁。其實這是不太準(zhǔn)確的說法,因為Web標(biāo)準(zhǔn)不太被行外人士所熟識,導(dǎo)致“Div+CSS&rdquo
XHTML主要用div標(biāo)簽進(jìn)行網(wǎng)頁的布局,而控制布局的工具是CSS代碼,以使網(wǎng)頁符合Web標(biāo)準(zhǔn)。所以很多網(wǎng)頁設(shè)計師把這種布局方法的網(wǎng)頁叫做“Div+CSS”網(wǎng)頁。其實這是不太準(zhǔn)確的說法,因為Web標(biāo)準(zhǔn)不太被行外人士所熟識,導(dǎo)致“Div+CSS”的概念取代了Web標(biāo)準(zhǔn)。
11.1.8 一些高級的div布局技巧
為了滿足更多布局的要求,本節(jié)特別選擇幾個常用布局技巧。
(1)右邊div元素寬度自適應(yīng)。本例為并排2個div,其中左邊的div為固定寬度,右邊div為自適應(yīng)寬度。常用于文章列表和文章內(nèi)容的頁面布局。在D:\web\目錄下創(chuàng)建網(wǎng)頁文件(XHTML1.0),命名為div_demo.htm,編寫div_demo.htm文件代碼如代碼11.11所示。
代碼11.11 右邊div元素寬度自適應(yīng):div_demo.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>右邊div元素寬度自適應(yīng)</title>
<style type="text/css">
*{margin:0px;
padding:0px;
}
#one{width:70%;
height:200px;
background-color:#eee;
border:1px solid #000;
float:right;
}
#two{width:50px;
height:200px;
background-color:#eee;
border:1px solid #000;
float:right;
}
</style></head>
<body>
<div id="one">第1個div</div>
<div id="two">第2個div</div>
</body>
</html>
為了更方便看到div的表現(xiàn),筆者給div設(shè)置了淺灰色背景色和黑色邊框。在瀏覽器地址欄輸入http://localhost/div_demo.htm,瀏覽效果如圖11.11所示。
筆者特意把2個div設(shè)置為向右浮動,第1個div元素為自適應(yīng)寬度,而第2個div元素為固定寬度。本例為了防止讀者的一個錯覺,即前面的div浮動后一定在左邊,其實左右方向取決于div元素浮動屬性的值。
(2)div內(nèi)容居中。這是很多網(wǎng)站需要用到的居中示例,即保持div包含內(nèi)容的水平和垂直居中。在D:\web\目錄下創(chuàng)建img目錄,放入一個jpg格式圖片文件,并命名為cs.jpg,在D:\web\目錄下創(chuàng)建網(wǎng)頁文件(XHTML1.0),命名為div_demo2.htm,編寫div_demo2.htm文件代碼如代碼11.12所示。

圖11.11 右邊div元素寬度自適應(yīng)
代碼11.12 div內(nèi)容居中:div_demo2.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>div內(nèi)容居中</title>
<style type="text/css">
*{margin:0px;
padding:0px;
}
body,html{height:100%;}
.center{width:300px;
height:250px;
text-align:center;
line-height:250px;
background-color:#eee;
border:1px solid #000;
float:left;
}
</style></head>
<body>
<div class="center">
我在中間
</div>
<div class="center">
<img src="img/cs.jpg" width="120" height="120" />
</div>
</body>
</html>
為了更方便看到div的表現(xiàn),筆者給div設(shè)置了淺灰色背景色和黑色邊框。在瀏覽器地址欄輸入http://localhost/div_demo2.htm,瀏覽效果如圖11.12所示。

圖11.12 div內(nèi)容居中
筆者在這里用了text-align屬性,即內(nèi)含內(nèi)容水平居中,也用了line-height屬性,這是行距屬性,當(dāng)設(shè)置為div的高度時,其所含內(nèi)容就垂直居中了。

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

圖11.13 網(wǎng)頁布局結(jié)構(gòu)分析
從分析圖可以看出整個頁面的結(jié)構(gòu),其中,#top代表廣告區(qū)、#nav代表導(dǎo)航區(qū)、#mid代表主體區(qū)、#left代表#mid所包含的左區(qū)域、#right代表#mid所包含的右邊區(qū)域、#bt代表版權(quán)信息區(qū)。
#right區(qū)域包含8個具體內(nèi)容區(qū),由于這些內(nèi)容區(qū)的尺寸相同,所以在實例中將會使用class選擇符作為統(tǒng)一樣式,對這個8個區(qū)域進(jìn)行CSS樣式指定。根據(jù)結(jié)構(gòu)分析圖可以編寫XHTML部分的結(jié)構(gòu)代碼,編寫如下:
<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個具體內(nèi)容區(qū)用了同一個class名稱的選擇符,用于在CSS中指定統(tǒng)一的樣式。在D:\web\目錄下創(chuàng)建網(wǎng)頁文件(XHTML1.0),命名為div_page.htm,編寫div_page.htm文件代碼如代碼11.13所示。
代碼11.13 div網(wǎng)頁布局: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)頁布局實例</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個具體內(nèi)容區(qū)加上了id名稱為content2的屬性,這是為了使這4個區(qū)域有不同的背景色。在瀏覽器地址欄輸入http://localhost/ div_page.htm,瀏覽效果如圖11.13所示。
本例綜合了前面的布局知識,如居中等。不過,而由CSS代碼可得,主體內(nèi)容區(qū)(id名稱為mid)的寬度是500像素,高度是300像素。通過分析圖可以觀察得出以下關(guān)系公式:
主體內(nèi)容區(qū)寬度=縱向?qū)Ш絽^(qū)寬度+具體內(nèi)容區(qū)寬度×4
主體內(nèi)容區(qū)高度=縱向?qū)Ш絽^(qū)高度=具體內(nèi)容區(qū)高度×2
在CSS代碼中,縱向?qū)Ш絽^(qū)(id名稱為left)的寬度只有98像素,高度為298像素。而右邊具體內(nèi)容區(qū)(class名稱為content)的寬度也只有98像素,高度為148像素,可得:
縱向?qū)Ш絽^(qū)寬度+具體內(nèi)容區(qū)寬度×4=490(像素)
縱向?qū)Ш絽^(qū)高度=298(像素)
具體內(nèi)容區(qū)高度×2=296(像素)
主體內(nèi)容區(qū)(id名稱為mid)的寬度與高度為什么會與內(nèi)含的div寬度有偏差?這涉及瀏覽器解析CSS時對寬度和高度的計算方法,IE7.0瀏覽器和FireFox瀏覽器解析div的寬度和高度設(shè)置值并不包括邊框。由CSS代碼可得,縱向?qū)Ш絽^(qū)(id名稱為left)和具體內(nèi)容區(qū)(class名稱為content)的邊框為1像素粗,所以關(guān)系公式應(yīng)該進(jìn)一步修改為:

圖11.14 網(wǎng)頁布局實例
主體內(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
寬度和高度的計算是合理布局頁面的很重要的基礎(chǔ),一旦計算有誤將導(dǎo)致頁面布局混亂。并且針對不同瀏覽器有不同計算辦法,本書示例使用IE7.0瀏覽器,本書后面章節(jié)將學(xué)習(xí)不同瀏覽器的兼容性解決辦法。
— 注意:在寬度和高度的計算中,IE6.0以前版本的瀏覽器解析div的寬度和高度設(shè)置值包括邊框,如果讀者使用的是IE6.0以前版本的瀏覽器,嘗試修改寬度值以達(dá)到圖11.14的效果。
相關(guān)文章
- 本文主要介紹了css九宮格布局的五種方法,內(nèi)容包括grid布局、flex布局、table布局、float浮動定位、inline-block+letter-spacing屬性這五種方法的實現(xiàn),感興趣的可以了解下2023-09-18
- 在Web開發(fā)中,經(jīng)常會遇到需要將元素水平和垂直居中的情況,今天,將為大家分享幾種CSS方法,讓你的元素輕松居中,讓頁面更美觀吸引人,感興趣的小伙伴可以自己動手試一試2023-09-08
- 相信大家在面試的時候也會經(jīng)常碰到css實現(xiàn)元素居中的方法,下面我介紹6種方法給大家,歡迎大家評論區(qū)交流2023-09-07
flex布局中使用flex-wrap實現(xiàn)換行的項目實踐
最近需要做個換行的布局,本文主要介紹了flex布局中使用flex-wrap實現(xiàn)換行的項目實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需2022-06-16CSS布局之浮動(float)和定位(position)屬性的區(qū)別
今天看到有朋友留言問浮動和定位有什么區(qū)別,如何使用?今天找了篇文章,講的比較通俗易懂,供大家參考2021-09-23- 這篇文章主要介紹了css實現(xiàn)元素居中的N種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
- 這篇文章主要介紹了div水平布局兩邊對齊的三種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起2021-01-21
waterfall瀑布流布局+動態(tài)渲染的實現(xiàn)
這篇文章主要介紹了waterfall瀑布流布局+動態(tài)渲染的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起2021-01-19- 這篇文章主要介紹了頁面中有間隔的方格布局如何完美實現(xiàn)方法。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來2020-11-27
- 這篇文章主要介紹了css實現(xiàn)六種自適應(yīng)兩欄布局方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)2020-10-28