css+div三欄布局 左右固定寬 中間自適應

來源:互聯網
上載者:User

三欄布局,這是一種相對比較常見的頁面配置,這裡提供2種實現方法:

方法1:

使用最新的css3伸縮盒布局屬性,可輕鬆實現(三欄等高,預設就是三欄等高喲!)

 代碼如下 複製代碼
<style>
    .header,.footer{height: 100px;line-height: 40px;font-weight: bold;background-color:
    #bbb;text-align: center;} .main{} .content{overflow: hidden;background-color:
    #a4e88c;} .left{width: 100px;background-color: #E79F6D;} .right{width:
    100px;background-color: #7BD;} .left,.right,.content{min-height: 200px;_height:
    200px;} /*伸縮盒布局*/ .flex-container{display: flex;} .content{flex:1;} .left{order:-1;}
</style>
<div class="header">
    頁頭100px
</div>
<div class="main flex-container">
    <div class="content">
        中間自適應
    </div>
    <div class="left">
        左邊寬100px左邊寬100px左邊寬100px
    </div>
    <div class="right">
        右邊寬150px
    </div>
</div>
<div class="footer">
    頁尾100px
</div>



提示:你可以先修改部分代碼再運行。

方法2:(不考慮三欄載入順序,中間欄不用額外加層)

主要運用的是觸發現代瀏覽器的BFC和觸發舊版ie瀏覽器的haslayout屬性來實現所有瀏覽器全相容的中間欄寬度調適型配置的,源碼如下:

 代碼如下 複製代碼
<!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>
    </head>
    <body>
        <style type="text/css">
            *{margin: 0;padding: 0;} body{min-width: 450px;} .fl{float: left;}.fr{float:
            right;} .clear{clear: both;} .clearfix{overflow: hidden;_zoom: 1;} .clearfix:after{display:block;content:
            "";width: 0;height: 0;overflow: hidden;clear: both;} .header{height: 100px;background-color:
            #0080FF;} .main{overflow: hidden;_zoom:1;} .left,.right,.cont{min-height:
            300px;padding-bottom: 9999px;margin-bottom: -9999px;_height: 300px;} /*
            三列等高 */ .left{width: 150px;background-color: #f00;} .right{width: 150px;background-color:
            #008080;} .cont{overflow: hidden;background-color: #900;_zoom:1;} .footer{height:
            100px;background-color: #0080FF;}
        </style>
        <div class="header">
            這是頭部
        </div>
        <div class="main">
            <div class="left fl">
                left
            </div>
            <div class="right fr">
                right
            </div>
            <div class="cont">
                cont
                <br />
                觸發現代瀏覽器的BFC和觸發舊版ie瀏覽器的haslayout屬性來實現所有瀏覽器全相容的中間欄寬度調適型配置:不考慮三欄載入順序,中間欄不用額外加層
                <br />
                防止.cont被隱藏:body{min-width:2x.left+.right}
            </div>
        </div>
        <div class="footer">
            footer內容
        </div>
    </body>

</html>



提示:你可以先修改部分代碼再運行。

方法3:(傳說中的聖杯/雙飛翼布局,中間自適應欄可優先載入)

主要運用的是浮動float 和margin的結合使用,源碼如下:

 代碼如下 複製代碼
<!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>
    </head>
    <body>
        <style type="text/css">
            *{margin: 0;padding: 0;} body{min-width: 450px;} .fl{float: left;}.fr{float:
            right;} .clear{clear: both;} .clearfix{overflow: hidden;_zoom: 1;} .clearfix:after{display:block;content:
            "";width: 0;height: 0;overflow: hidden;clear: both;} .header{height: 100px;background-color:
            #0080FF;} .main{overflow: hidden;_zoom:1;} .left,.right,.cont_inner{min-height:
            300px;padding-bottom: 9999px;margin-bottom: -9999px;_height: 300px;}/*
            三列等高 */ .cont{width: 100%;} .cont_inner{margin-left: 150px;margin-right:
            150px;background-color: #900;} .left{width: 150px;background-color: #f00;margin-left:
            -100%;} .right{width: 150px;background-color: #008080;margin-left: -150px;}
            .footer{height: 100px;background-color: #0080FF;}
        </style>
        <div class="header">
            這是頭部
        </div>
        <div class="main">
            <div class="cont fl">
                <div class="cont_inner">
                    cont
                </div>
            </div>
            <div class="left fl">
                left
            </div>
            <div class="right fr">
                right
            </div>
        </div>
        <div class="footer">
            footer內容
        </div>
    </body>
</html>



提示:你可以先修改部分代碼再運行。

從原始碼上來看,要不講究欄目載入順序,方法1是比較簡潔的;但要求自適應欄目優先載入,聖杯布局無疑是首選方案!

另外補充下,聖杯布局是比較靈活的一種布局方式:表現為不改動html結構,只調整css樣式,即可實現各種布局,如用下面的任一代碼替換上面方法2的對應部分即可實現不同布局:

.cont_inner{margin-right: 300px;background-color: #900;}
    .left{width: 150px;background-color: #f00;margin-left: -300px;}
    .right{width: 150px;float: left;background-color: #008080;margin-left:-150px;}



.cont_inner{margin-left: 300px;background-color: #900;}
    .left{width: 150px;background-color: #f00;margin-left: -100%;}
    .right{width: 150px;float: left;background-color: #008080;margin-left:-100%;position: relative;left: 150px;}

其它布局,請自行折騰組合 ^_^

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.