兩欄布局和三欄布局

兩欄布局

1、左側(cè)固定寬度,右側(cè)自適應(yīng)

方法一: 左側(cè)設(shè)置float:left,右側(cè)設(shè)置margin-left為左側(cè)的寬度。右側(cè)不能設(shè)置float:left。

<!doctype html>      
<html>      
    <head>      
        <style type="text/css">      
            #left{      
                width:500px;      
                height:300px;      
                float:left;     
                background:red;      
            }      
            #right{      
                height:300px;     
                margin-left:500px;  
                background:blue;      
            }      
        </style>      
    </head>      
    <body>      
        <div id="left"></div>      
        <div id="right"></div>      
    </body>      
</html>

方法二: 左側(cè)設(shè)置float:left,右側(cè)設(shè)置overflow:hidden。
利用的是創(chuàng)建一個新的BFC(塊級格式化上下文)來防止文字環(huán)繞的原理來實(shí)現(xiàn)的。BFC就是一個相對獨(dú)立的布局環(huán)境,它內(nèi)部元素的布局不受外面布局的影響。

<!doctype html>    
<html>    
    <head>    
        <style type="text/css">    
            #left{    
                width:500px;    
                height:300px;    
                float:left;   
                background:red;    
            }    
            #right{    
                height:300px;     
                overflow:hidden;  
                background:blue;    
            }    
        </style>    
    </head>    
    <body>    
        <div id="left"></div>    
        <div id="right"></div>    
    </body>    
</html>   

方法三: 左側(cè)設(shè)置絕對定位,右側(cè)設(shè)置margin-left為左邊的寬度。

<!doctype html>    
<html>    
    <head>    
        <style type="text/css">    
            body{  
                margin:0;  
            }  
            #left{    
                width:500px;    
                height:300px;    
                position:absolute;  
                left:0px;  
                top:0px;  
                background:red;    
            }    
            #right{    
                height:300px;     
                margin-left:500px;  
                background:blue;    
            }    
        </style>    
    </head>    
    <body>    
        <div id="left"></div>    
        <div id="right"></div>    
    </body>    
</html> 

方法四: 父元素設(shè)置display:flex,右側(cè)設(shè)置flex:1

<!doctype html>      
<html>      
    <head>      
        <style type="text/css">      
            body{  
                display:flex;  
            }  
            #left{      
                width:500px;      
                height:300px;    
                background:red;      
            }      
            #right{      
                height:300px;     
                flex:1;  
                background:blue;      
            }      
        </style>      
    </head>      
    <body>      
        <div id="left"></div>      
        <div id="right"></div>      
    </body>      
</html> 

2、右側(cè)固定寬度,左側(cè)自適應(yīng)

方法一: 左側(cè)設(shè)置margin-right為右側(cè)的寬度,右側(cè)設(shè)置float:right。

<!doctype html>  
<html>  
    <head>  
        <style type="text/css">  
            #left{  
                height:300px;  
                margin-right:300px;  
                background:red;  
            }  
            #right{  
                width:500px;  
                height:300px;  
                float:right;  
                background:blue;  
            }  
        </style>  
    </head>  
    <body>  
        <div id="right"></div>  
        <div id="left"></div>  
    </body>  
</html>  

注意:right要放在left的前面,否則會出現(xiàn)right右浮動后內(nèi)容換行下移的問題。出現(xiàn)該問題的原因是非float的元素和float的元素在一起時(shí),如果非float的元素在先,那么float的元素將被排斥到下一行。由于right是float的元素,而left是非float的元素,為避免right內(nèi)容換行下移,需要把right放在left的前面。
方法二: 左側(cè)設(shè)置margin-right為右側(cè)的寬度,右側(cè)采用絕對定位,根據(jù)所需的右側(cè)div與瀏覽器窗口的頂端和右邊的距離分別設(shè)置top和right。

<!doctype html>  
<html>  
    <head>  
        <style type="text/css">  
            body{  
                margin:0;  
            }  
            #left{  
                height:300px;  
                margin-right:500px;  
                background:red;  
            }  
            #right{  
                width:500px;  
                height:300px;  
                position:absolute;  
                top:0;  
                right:0;  
                background:blue;  
        }  
        </style>  
    </head>  
    <body>  
        <div id="left"></div>  
        <div id="right"></div>  
    </body>  
</html>  

此時(shí)left和right的位置前后無關(guān)緊要。
注意:由于body默認(rèn)有margin,對絕對定位的right設(shè)置top:0和right:0會導(dǎo)致左右側(cè)之間有縫隙且不等高,為此,可統(tǒng)一設(shè)置body的margin為0。
方法三: 左側(cè)設(shè)置width為100%,float: left,margin-right為右側(cè)的寬度的負(fù)值,右側(cè)設(shè)置float: right。

<!doctype html>    
<html>    
    <head>    
        <style type="text/css">    
            #left{    
                height:300px;     
                float:left;  
                width:100%;  
                margin-right:-500px;                  
                background:red;    
            }    
            #right{    
                width:500px;    
                height:300px;    
                float:right;    
                background:blue;    
            }    
        </style>    
    </head>    
    <body>     
        <div id="left"></div>    
        <div id="right"></div>   
    </body>    
</html>  

方法四: 父元素設(shè)置display:flex,左側(cè)設(shè)置flex:1。

<!doctype html>        
<html>        
    <head>        
        <style type="text/css">        
            body{    
                display:flex;    
            }    
            #left{              
                height:300px;              
                flex:1;     
                background:red;        
            }        
            #right{        
                width:500px;  
                height:300px;   
                background:blue;        
            }        
        </style>        
    </head>        
    <body>        
        <div id="left"></div>        
        <div id="right"></div>        
    </body>        
</html>  

三欄布局

左右固定寬度,中間自適應(yīng)

方法一:左側(cè)設(shè)置float:left,右側(cè)設(shè)置float:right,中間設(shè)置margin-right為右側(cè)的寬度,margin-left為左側(cè)的寬度。

<!doctype html>  
<html>  
    <head>  
        <style type="text/css">  
            #left{  
                width:200px;  
                height:300px;  
                float:left;  
                background:red;  
            }  
            #middle{  
                height:300px;  
                margin-left:200px;  
                margin-right:500px;  
                background:blue;  
            }  
            #right{  
                width:500px;  
                height:300px;  
                float:right;  
                background:red;  
            }  
        </style>  
    </head>  
    <body>  
        <div id="left"></div>  
        <div id="right"></div>  
        <div id="middle"></div>  
    </body>  
</html>  

注意:right要放在middle的前面,否則會出現(xiàn)right右浮動后內(nèi)容換行下移的問題。出現(xiàn)該問題的原因是非float的元素和float的元素在一起時(shí),如果非float的元素在先,那么float的元素將被排斥到下一行。由于right是float的元素,而middle是非float的元素,為避免right內(nèi)容換行下移,需要把right放在middle的前面。

方法二: 中間設(shè)置margin-right為右側(cè)的寬度,margin-left為左側(cè)的寬度,左側(cè)和右側(cè)采用絕對定位,根據(jù)左側(cè)div所需的left與瀏覽器窗口的頂端和左邊的距離分別設(shè)置top和left,根據(jù)所需的右側(cè)div與瀏覽器窗口的頂端和右邊的距離分別設(shè)置top和right。

<!doctype html>  
<html>  
    <head>  
        <style type="text/css">  
            body{  
                margin:0;  
            }  
            #left{  
                width:200px;  
                height:300px;  
                position:absolute;  
                left:0;  
                top:0;  
                background:red;  
            }  
            #middle{  
                height:300px;  
                margin-left:200px;  
                margin-right:500px;  
                background:blue;  
            }  
            #right{  
                width:500px;  
                height:300px;  
                float:right;  
                position:absolute;  
                right:0;  
                top:0;  
                background:red;  
            }  
        </style>  
    </head>  
    <body>  
        <div id="left"></div>  
        <div id="middle"></div>  
        <div id="right"></div>  
    </body>  
</html>  

此時(shí)middle和right的位置前后無關(guān)緊要。
注意:由于body默認(rèn)有margin,對絕對定位的left設(shè)置top:0和left:0,right設(shè)置top:0和right:0會導(dǎo)致左右側(cè)和中間之間有縫隙且不等高,為此,可統(tǒng)一設(shè)置body的margin為0。
方法三:父元素設(shè)置display:flex,中間設(shè)置flex:1。

<!doctype html>    
<html>    
    <head>    
        <style type="text/css">    
            body{    
                margin:0;    
                display:flex;  
            }    
            #left{    
                width:200px;    
                height:300px;     
                background:red;    
            }    
            #middle{    
                height:300px;    
                flex:1;  
                background:blue;    
            }    
            #right{    
                width:500px;    
                height:300px;  
                background:red;    
            }    
        </style>    
    </head>    
    <body>    
        <div id="left"></div>    
        <div id="middle"></div>    
        <div id="right"></div>    
    </body>    
</html>   
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,796評論 1 92
  • 單列布局水平居中水平居中 水平居中的頁面布局中最為常見的一種布局形式,多出現(xiàn)于標(biāo)題,以及內(nèi)容區(qū)域的組織形式,下面介...
    Osmond_wang閱讀 333評論 0 1
  • 各種純css圖標(biāo) CSS3可以實(shí)現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,666評論 0 8
  • CSS 是什么 css(Cascading Style Sheets),層疊樣式表,選擇器{屬性:值;屬性:值}h...
    崔敏嫣閱讀 1,508評論 0 5
  • 如果云知道 ——讀《浮生六記》有感 當(dāng)?shù)谝豢|春風(fēng)掠過林梢 驚醒了那冬眠的春草 剎那間 風(fēng)含情 草含笑 拂堤楊柳醉春...
    清揚(yáng)在諾閱讀 242評論 0 8