實現(xiàn)三欄布局的幾種方式

引言

最近寫站碰到了三欄布局,這種局平常寫的少一直沒有總結(jié)過正好借這次機會總結(jié)一波,加深一下印象。

  1. 絕對定位布局

    <div class="content">
        <!-- 優(yōu)先渲染內(nèi)容部分 -->
        <div class="content_m">
            內(nèi)容部分
        </div>
        <div class="content_l">
            左側(cè)部分
        </div>
        <div class="content_r">
            右側(cè)部分
        </div>
    </div>
    
    * {
        margin: 0;
        padding: 0;
    }
    
    /* 左右絕對定位 */
    .content {
        position: relative
    }
    
    .content_l,
    .content_r {
        position: absolute;
        width: 100px;
        height: 100px;
        top: 0;
    }
    
    .content_l {
        left: 0;
        background: red;
    }
    
    .content_r {
        background: blue;
        right: 0;
    }
    
    .content_m {
        height: 100px;
        background: yellow;
        padding: 0 100px;
        /* 都可以 */
        /* margin: 0 100px; */
    }
    

    缺點:如果中間欄含有最小寬度限制,或是含有寬度的內(nèi)部元素,當(dāng)瀏覽器寬度小到一定程度,會發(fā)生層重疊的情況

  2. 圣杯布局

    <div class="content">
        <!-- 優(yōu)先渲染 -->
        <div class="content_m">
            內(nèi)容部分
        </div>
        <div class="content_l">
            左側(cè)部分
        </div>
        <div class="content_r">
            右側(cè)部分
        </div>
    </div>
    
    * {
        margin: 0;
        padding: 0;
    }
    
    .content {
        overflow: hidden;
    }
    
    .content>div {
        float: left;
        height: 100px;
    }
    
    .content_l,
    .content_r {
        width: 100px;
    }
    
    .content_m {
        background: yellow;
        width: 100%;
        padding: 0 100px;
        box-sizing: border-box;
    }
    
    .content_l {
        background: red;
        margin-left: -100%;
    }
    
    .content_r {
        background: blue;
        margin-left: -100px
    }
    
  3. 雙飛翼布局

    <div class="content">
        <!-- 優(yōu)先渲染 -->
        <div class="main_con">
            <div class="content_m">
                內(nèi)容部分
            </div>
        </div>
        <div class="content_l">
            左側(cè)部分
        </div>
        <div class="content_r">
            右側(cè)部分
        </div>
    </div>
    
    * {
        margin: 0;
        padding: 0;
    }
    
    .content {
        overflow: hidden;
    }
    
    .content>div {
        float: left;
        height: 100px;
    }
    
    .content_l,
    .content_r {
        width: 100px;
    }
    
    .main_con{
        width: 100%;
        height: 100px;
    }
    
    .content_m {
        background: yellow;
        width: 100%;
        height: 100%;
        margin: 0 100px;
    }
    
    .content_l {
        background: red;
        margin-left: -100%;
    }
    
    .content_r {
        background: blue;
        margin-left: -100px
    }
    
  4. 彈性盒子布局

    <div class="content">
        <div class="content_l">
            左側(cè)部分
        </div>
        <div class="content_m">
            內(nèi)容部分
        </div>
        <div class="content_r">
            右側(cè)部分
        </div>
    </div>
    
    * {
        margin: 0;
        padding: 0;
    }
    
    /* 采用彈性盒子 */
    .content {
        overflow: hidden;
        display: flex;
    }
    
    .content_l,
    .content_r {
        width: 100px;
        height: 100px;
    }
    
    .content_l {
     background: red;
    }
    
    .content_r {
        background: blue;
    }
    
    .content_m {
        flex: 1;
        height: 100px;
        background: yellow;
    }
    
對比圣杯布局和雙飛翼布局
  • 都是左右固定中間自適應(yīng)的布局,中間部分優(yōu)先渲染
  • 解決方案基本一致,都是左浮動,然后解決中間部分別覆蓋的問題。
  • 解決中間部分內(nèi)容覆蓋時,圣杯布局設(shè)置父元素的padding,雙飛翼布局在中間部分嵌套一個div,內(nèi)容設(shè)置margin。實際上,雙飛翼布局就是圣杯布局的改進方案。
總結(jié)
  • pc端用雙飛翼布局更好些
  • 移動端用彈性布局更優(yōu)雅
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,825評論 1 45
  • 各種純css圖標(biāo) CSS3可以實現(xiàn)很多漂亮的圖形,我收集了32種圖形,在下面列出。直接用CSS3畫出這些圖形,要比...
    劍殘閱讀 9,983評論 0 8
  • 1. tab列表折疊效果 html: 能源系統(tǒng)事業(yè)部 崗位名稱: 工作地點 崗位名...
    lilyping閱讀 2,015評論 0 1
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J的外補...
    _Yfling閱讀 14,163評論 1 92
  • 迷走神經(jīng)(vagus nerve)為第10對腦神經(jīng),是腦神經(jīng)中最長,分布最廣的一對,含有軀體感覺纖維、內(nèi)臟感覺纖維...
    蔣望輝閱讀 2,526評論 0 0

友情鏈接更多精彩內(nèi)容