css上中下佈局自適應中間,左右佈局自適應左側display: table

在css咱們常常用到固定頭部和底部,自適應中間部分,或者固定左側,自適應右側等。在網上看了不少方法,通常都是經過絕對定位完成,position: absolute;具體能夠網上去搜,這樣能夠完成上中下的佈局,可是此次基礎上再作左右佈局浮動會出現問題,具體什麼問題我沒有深究。查閱一些資料後,發現了css的display屬性有個table值,能夠根據這個作自適應,作參考本身寫了一下:css

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        html,
        body,
        #container {
            height:100%;
            overflow:hidden;
            font:small/1.5 "宋體", serif;
        }

        #container{
            width: 100%;
            display: table;
            margin:0 auto;
            background: #00CC00;
        }
        #container > div{
            display: table-row;

        }
        #header,#footer{
            width: 100px;
            background: #cccccc;
        }

        #wrap{
            width: 100%;
            height: 100%;
            display: table;
        }

        #left {
            height: 100%;
            display:table-cell;
            background: #ff2d38;

        }
        #right {
            width: 200px;
            height: 100%;
            display:table-cell;
            background: #1531ff;
        }
    </style>
</head>
<body>
<div id="container">
    <div id="header"></div>
    <div id="content">
        <div id="wrap">
            <div id="left"></div>
            <div id="right"></div>
        </div>
    </div>
    <div id="footer"></div>
</div>
</body>
</html>
這段代碼實現了上下自適應和左右自適應,其中 具備display: table-row;     display:table-cell;屬性的div不固定高度或寬度進行自適應,其中有幾點要注意,
1.請作自適應的時候用div,這樣不指定寬度和高度,它會自動填充父元素,這樣中間層就是div:parent - 100px -100px;
2.若是不加 <div id="wrap">這個div進行包裹,left和right會被識別成和header,footer一個table內的同級別元素,header,footer自會佔用一列;
3.最有一點,請指定html,body height:100,這樣div就能夠獲取到全屏的高度。

經過使用display咱們就能夠任意指定上下和左右自適應,代碼簡單,也不用js.
以上純屬本人觀點,若有錯誤,敬請之處,你們共同進步。html

相關文章
相關標籤/搜索