秋風(fēng)的蕭瑟 又見湖邊木葉飛

          歡迎來到梁良 | LonBlog,這里記錄下了我生活點點滴滴。

          用CSS的float和clear創(chuàng)建三欄液態(tài)布局的方法

          三欄布局是目前最常見的網(wǎng)頁布局,主要頁內(nèi)容放在中間一欄,邊上的兩欄放置導(dǎo)航鏈接之類的內(nèi)容。基本布局一般是標題之下放置三欄,三欄占據(jù)整個頁面的寬度,最后在頁的底端放置頁腳,頁腳也占據(jù)整個頁面寬度。
                 絕大多數(shù)網(wǎng)頁設(shè)計者都熟悉傳統(tǒng)的網(wǎng)頁設(shè)計技術(shù),用這些技術(shù)可以生成帶有表格、創(chuàng)建固定寬度布局或者“液態(tài)”(它可以根據(jù)用戶瀏覽器窗口寬度自動伸縮)布局的網(wǎng)頁。

          現(xiàn)在,我們都開始拋棄基于表格的布局技術(shù),許多網(wǎng)絡(luò)設(shè)計者正在從XHTML標記和CSS格式這一新范例中尋找創(chuàng)建三欄布局的方法。用絕對定位的方法從CSS中得到固定寬度的布局并不困難;但是得到液態(tài)布局就有點困難了。因此,本文介紹一種用CSS的float和clear屬性來獲得三欄液態(tài)布局的方法。

          基本方法

          基本的布局包含五個div,即標題、頁腳和三欄。標題和頁腳占據(jù)整個頁寬。左欄div和右欄div都是固定寬度的,并且用float屬性來把它們擠壓到瀏覽器窗口的左側(cè)和右側(cè)。中欄實際上占據(jù)了整個頁寬,中欄的內(nèi)容在左、右兩欄之間“流淌”。由于中欄div的寬度并不固定,因此它可以根據(jù)瀏覽器窗口的改變進行必要的伸縮。中欄div的左側(cè)和右側(cè)的填充(padding)屬性保證內(nèi)容安排在一個整齊的欄中,甚至當它伸展到邊欄(左欄或者右欄)的底端也是這樣。

          三欄布局的一個例子

          請看看用本文所介紹的技術(shù)進行三欄布局的例子。這個例子用鮮艷的顏色來區(qū)分布局的各個div。下面是XHTML代碼: 
          XML/HTML代碼
                
          1. <body>    
          2.     
          3. <div id="header">    
          4.     
          5.     <h1>Header</h1>    
          6.     
          7. </div>    
          8.     
          9. <div id="left">    
          10.     
          11.     Port side text...    
          12.     
          13. </div>    
          14.     
          15. <div id="right">    
          16.     
          17.     Starboard side text...    
          18.     
          19. </div>    
          20.     
          21. <div id="middle">    
          22.     
          23.     Middle column text...    
          24.     
          25. </div>    
          26.     
          27. <div id="footer">    
          28.     
          29.     Footer text...    
          30.     
          31. </div>    
          32.     
          33. </body>    

          下面是CSS代碼:

          XML/HTML代碼
                
          1. body {    
          2.     
          3.     margin: 0px;    
          4.     
          5.     padding: 0px;    
          6.     
          7. }    
          8.     
          9. div#header {    
          10.     
          11.     clear: both;    
          12.     
          13.     height: 50px;    
          14.     
          15.     background-color: aqua;    
          16.     
          17.     padding: 1px;    
          18.     
          19. }    
          20.     
          21. div#left {    
          22.     
          23.     float: left;    
          24.     
          25.     width: 150px;    
          26.     
          27.     background-color: red;    
          28.     
          29. }    
          30.     
          31. div#right {    
          32.     
          33.     float: right;    
          34.     
          35.     width: 150px;    
          36.     
          37.     background-color: green;    
          38.     
          39. }    
          40.     
          41. div#middle {    
          42.     
          43.     padding: 0px 160px 5px 160px;    
          44.     
          45.     margin: 0px;    
          46.     
          47.     background-color: silver;    
          48.     
          49. }    
          50.     
          51. div#footer {    
          52.     
          53.     clear: both;    
          54.     
          55.     background-color: yellow;    
          56.     
          57. }    

          代碼說明

                 HTML代碼中各部分出現(xiàn)的順序是非常重要的。左欄和右欄div必須在中欄之前出現(xiàn)。這樣才可以讓這兩個邊欄浮動到它們的位置上(屏幕兩側(cè)),并讓中欄的內(nèi)容將“流”入它們之間的空間。如果瀏覽器在一個或者兩個邊欄div之前先發(fā)現(xiàn)中欄,那么中欄將占據(jù)屏幕的一側(cè)或者兩側(cè),這樣浮動的部分就會跑到中欄的下面而不是中欄的旁邊了。 

                 div#header和div#footer樣式(style)中的clearoth申明用來確保這浮動部分不會占據(jù)標題和頁腳的空間。div#header樣式中的padding:1px申明用來消除頁頭背景色中的異常邊,如果padding設(shè)置為零,那么在Netscape瀏覽器中就會看到這個異常。

                 div#left樣式中的float:left申明是用來把左欄擠壓到左側(cè)。width:150px申明用來設(shè)置欄的固定寬度,不過你也可以把它的寬度設(shè)置為其它具體值。類似的,div#right樣式中的float:right申明用來把右欄div擠壓到右側(cè)。在本例中,float把左欄和右欄完全擠壓到瀏覽器窗口的左邊緣和右邊緣。然而,如果這些div被其它div包含,那么float將會把它們擠壓到包含它們的div的邊緣。

                   在div#middle樣式中,clear申明允許中欄的內(nèi)容“流淌”在兩個邊欄之間。padding:0px 160px 5px 160px申明設(shè)置了到左欄和右欄的填充,這樣允許150象素寬度的欄div,在加上10象素的間距。

                 這個例子非常粗糙和簡單,但是它很好的演示了用浮動div來創(chuàng)建三欄液態(tài)布局的邊欄這一基本技術(shù)。


          本文地址: http://www.vxxp.com/archives/2.html

          posted on 2010-06-09 14:06 梁良 閱讀(254) 評論(0)  編輯  收藏 所屬分類: HTML

          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          公告

              歡迎光臨

          常用鏈接

          隨筆分類

          隨筆檔案

          相冊

          .我的網(wǎng)站.

          友情博客

          開源社區(qū)

          科技博客

          資料網(wǎng)站

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          Powered by:
          LonLeung
          Copyright © 梁良

          本頁生成時間:毫秒

          主站蜘蛛池模板: 通榆县| 定安县| 融水| 仙居县| 柏乡县| 安塞县| 田阳县| 东源县| 外汇| 信阳市| 南投市| 稷山县| 霞浦县| 缙云县| 东丰县| 荣成市| 宝丰县| 上饶市| 修武县| 来凤县| 铅山县| 杭锦后旗| 太湖县| 长白| 南充市| 温宿县| 宜都市| 信阳市| 宁海县| 镇康县| 林甸县| 石屏县| 哈尔滨市| 图木舒克市| 阜宁县| 砀山县| 万盛区| 长武县| 石景山区| 永新县| 龙川县|