Div+CSS網頁佈局三欄頁CSS float方法

三欄佈局是目前最常見的網頁佈局,主要頁內容放在中間一欄,邊上的兩欄放置導航鏈結之類的內容。基本佈局一般是標題之下放置三欄,三欄佔據整個頁面的寬度,最後在頁的底端放置頁腳,頁腳也佔據整個頁面寬度。
絕大多數網頁設計者都熟悉傳統的網頁設計技術,用這些技術可以生成帶有表格、創建固定寬度佈局或者“液態”(它可以根據用戶流覽器視窗寬度自動伸縮)佈局的網頁。
現在,我們都開始拋棄基於表格的佈局技術,許多網路設計者正在從 XHTML標記和 CSS格式這一新範例中尋找創建三欄佈局的方法。用絕對定位的方法從CSS中得到固定寬度的佈局並不困難;但是得到液態佈局就有點困難了。因此,本文介紹一種用 CSS的 float和 clear屬性來獲得三欄液態佈局的方法。
基本方法:基本的佈局包含五個div,即標題、頁腳和三欄。標題和頁腳佔據整個頁寬。左欄div和右欄div都是固定寬度的,並且用float屬性來把它們擠壓到流覽器視窗的左側和右側。中欄實際上佔據了整個頁寬,中欄的內容在左、右兩欄之間“流淌”。由於中欄div的寬度並不固定,因此它可以根據流覽器視窗的改變進行必要的伸縮。中欄div的左側和右側的填充(padding)屬性保證內容安排在一個整齊的欄中,甚至當它伸展到邊欄(左欄或者右欄)的底端也是這樣。
三欄佈局的一個例子:請看看用本文所介紹的技術進行三欄佈局的例子。這個例子用鮮豔的顏色來區分佈局的各個div。
XHTML代碼:
<body> <div id="header"> <h1>Header</h1> </div> <div id="left"> Port side text... </div> <div id="right"> Starboard side text... </div> <div id="middle"> Middle column text... </div> <div id="footer"> Footer text... </div> </body> |
CSS代碼:
body { margin: 0px; padding: 0px; } div#header { clear: both; height: 50px; background-color: aqua; padding: 1px; } div#left { float: left; width: 150px; background-color: red; } div#right { float: right; width: 150px; background-color: green; } div#middle { padding: 0px 160px 5px 160px; margin: 0px; background-color: silver; } div#footer { clear: both; background-color: yellow; } |
代碼演示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>52css.com</title> <style type="text/css"> body { margin: 0px; padding: 0px; } div#header { clear: both; height: 50px; background-color: aqua; padding: 1px; } div#left { float: left; width: 150px; background-color: red; } div#right { float: right; width: 150px; background-color: green; } div#middle { padding: 0px 160px 5px 160px; margin: 0px; background-color: silver; } div#footer { clear: both; background-color: yellow; } </style> </head> <body> <div id="header"> <h1>Header - poet.930.info</h1> </div> <div id="left"> Port side text... </div> <div id="right"> Starboard side text... </div> <div id="middle"> Middle column text... </div> <div id="footer"> Footer text...poet.930.info </div> </body> </html> |
代碼說明
HTML代碼中各部分出現的順序是非常重要的。
左欄和右欄 div必須在中欄之前出現。
這樣才可以讓這兩個邊欄浮動到它們的位置上(螢幕兩側),並讓中欄的內容將“流”入它們之間的空間。如果流覽器在一個或者兩個邊欄div之前先發現中欄,那麼中欄將佔據螢幕的一側或者兩側,這樣浮動的部分就會跑到中欄的下面而不是中欄的旁邊了。
div#header和 div#footer樣式(style)中的 clear:both申明用來確保這浮動部分不會佔據標題和頁腳的空間。
div#header樣式中的 padding:1px申明用來消除頁頭背景色中的異常邊,如果padding設置為零,那麼在Netscape瀏覽器中就會看到這個異常。
div#left樣式中的float:left申明是用來把左欄擠壓到左側。width:150px申明用來設置欄的固定寬度,不過你也可以把它的寬度設置為其他具體值。類似的,div#right樣式中的float:right申明用來把右欄div擠壓到右側。在本例中,float把左欄和右欄完全擠壓到流覽器視窗的左邊緣和右邊緣。然而,如果這些div被其他div包含,那麼float將會把它們擠壓到包含它們的div的邊緣。
在div#middle樣式中,clear申明允許中欄的內容“流淌”在兩個邊欄之間。padding:0px 160px 5px 160px申明設置了到左欄和右欄的填充,這樣允許150像素寬度的欄 div,在加上 10像素的間距。
這個例子非常粗糙和簡單,但是它很好的演示了用浮動 div來創建三欄液態佈局的邊欄這一基本技術。