鍍金池/ 問(wèn)答/Java  HTML/ 【質(zhì)問(wèn)阿里】既然「圣杯布局」有缺陷為什么要設(shè)計(jì)「雙飛翼布局」而不是使用絕對(duì)定位

【質(zhì)問(wèn)阿里】既然「圣杯布局」有缺陷為什么要設(shè)計(jì)「雙飛翼布局」而不是使用絕對(duì)定位

大家都知道,「圣杯布局」和「雙飛翼布局」都是為了解決經(jīng)典三欄問(wèn)題的優(yōu)化方案,

因?yàn)椤甘ケ季帧勾嬖趯挾冗^(guò)小導(dǎo)致布局混亂的缺陷(如下圖),阿里淘寶提出了「雙飛翼布局」

clipboard.png

以下是兩個(gè)demo
「圣杯布局」:https://jsfiddle.net/zwwill/p...
「雙飛翼布局」:https://jsfiddle.net/zwwill/5...

但是「雙飛翼布局」增加了 DOM 樹(shù)的層級(jí),因此也會(huì)增加 瀏覽器渲染引擎構(gòu)建布局樹(shù)時(shí)的計(jì)算消耗,來(lái)看一下「雙飛翼布局」的dom部分

<div class="container">
    <div class="header">header</div>
    <div class="wrapper clearfix">
        <div class="main col">
            <div class="main-wrap">main</div>
        </div>
        <div class="left col">left</div>
        <div class="right col">right</div>
    </div>
    <div class="footer">footer</div>
</div>

個(gè)人任務(wù),絕對(duì)定位即可解決此問(wèn)題 https://jsfiddle.net/zwwill/a...
如下:

    <div class="header">header</div>
    <div class="wrapper">
        <div class="main col">
            main
        </div>
        <div class="left col">
            left
        </div>
        <div class="right col">
            right
        </div>
    </div>
    <div class="footer">footer</div>
.wrapper {
  position: relative; 
}
.main {
  margin:0 100px;
}
.left {
 position: absolute;
 left: 0;
 top: 0;
}
.right {
 position: absolute;
 right: 0;
 top: 0;
}

所以,請(qǐng)問(wèn)

既然「圣杯布局」有缺陷為什么要設(shè)計(jì)「雙飛翼布局」而不是使用絕對(duì)定位

回答
編輯回答
脾氣硬

666,一種界面,三種布局,感覺(jué)樓主的布局不錯(cuò),最窄的情況也不會(huì)亂,fork了 順便問(wèn)下樓主,這個(gè)新的叫什么布局

2017年1月14日 15:59
編輯回答
旖襯

https://jsfiddle.net/zwwill/a... 我覺(jué)得這樣就能解決問(wèn)題了。方法簡(jiǎn)單,兼容也還可以


此處做了總結(jié)
https://segmentfault.com/a/11...

2017年7月12日 22:17
編輯回答
生性

應(yīng)該有中間部分高度不確定,兩邊超過(guò)中間高度這種情況

2018年4月29日 14:40