CSS圣杯布局,雙飛翼布局

導(dǎo)讀:

  • 主要是最近在簡書上看到了相關(guān)文章覺得確實比較重要登馒,就分出來寫一下,主要說明見代碼注釋馁痴。

1.圣杯布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    * { 
        margin: 0; 
        padding: 0; 
        text-align: center;
    }
    .header, .footer { 
        background-color: skyblue; 
        height: 60px; 
        line-height: 60px;
    }
    .container {
        overflow: hidden;
        padding: 0 100px;
    }
    .main { 
        width: 100%;
        background-color: rgba(255,0,0,0.5); 
        height: 100px; 
        line-height: 100px;
        float: left;
    }
    .left { 
        background-color: rgba(0,255,0,0.5);
        width: 100px; 
        height: 100px; 
        line-height: 100px; 
        float: left;
        margin-left: -100%;
        position: relative;
        left: -100px;
    }
    .right {
        background-color: pink; 
        width: 100px; 
        height: 100px; 
        line-height: 100px; 
        float: left;
        margin-left: -100px;
        position: relative;
        right: -100px;
    }
</style>
</head>
<body>
    <!-- 圣杯布局 -->
    <div class="header">header</div>
    <div class="container">   <!-- 利用左右內(nèi)邊距給左右兩個盒子留位置谊娇,overflow清浮動 -->
        <div class="main">main</div>   <!-- 左浮,寬度100%罗晕,實現(xiàn)中間盒子自適應(yīng)寬度 -->
        <div class="left">left</div>   <!-- 左浮济欢,寬度100px,通過margin-left:-100%使自己處于跟main盒子一行小渊,相對定位占據(jù)container內(nèi)邊距留出的左邊位置 -->
        <div class="right">right</div>   <!-- 左浮法褥,寬度100px,通過margin-left:-100px使自己處于跟main盒子一行酬屉,相對定位占據(jù)container內(nèi)邊距留出的右邊位置 -->
    </div>
    <div class="footer">footer</div>
</body>
</html>
  • 整體效果:


    圣杯布局

2.雙飛翼布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    * { 
        margin: 0; 
        padding: 0; 
        text-align: center;
    }
    .header, .footer { 
        background-color: skyblue; 
        height: 60px; 
        line-height: 60px;
    }
    .container {
        overflow: hidden;
    }
    .main { 
        width: 100%;
        background-color: rgba(255,0,0,0.5); 
        height: 100px; 
        line-height: 100px;
        float: left;
    }
    .inner-main {
        margin-left: 100px;
        margin-right: 100px;
    }
    .left { 
        background-color: rgba(0,255,0,0.5);
        width: 100px; 
        height: 100px; 
        line-height: 100px; 
        float: left;
        margin-left: -100%;
    }
    .right {
        background-color: pink; 
        width: 100px; 
        height: 100px; 
        line-height: 100px; 
        float: left;
        margin-left: -100px;
    }
</style>
</head>
<body>
    <!-- 雙飛翼布局 -->
    <div class="header">header</div>
    <div class="container">   <!-- overflow清浮動 -->
        <div class="main">    <!-- 左浮半等,寬度100%,實現(xiàn)中間盒子自適應(yīng)寬度 -->
            <div class="inner-main">main</div>    <!-- 使用margin來取消左右盒子移上來覆蓋的地方 -->
        </div>   
        <div class="left">left</div>   <!-- 左浮呐萨,寬度100px杀饵,通過margin-left:-100%使自己處于跟main盒子一行 -->
        <div class="right">right</div>   <!-- 左浮,寬度100px谬擦,通過margin-left:-100px使自己處于跟main盒子一行 -->
    </div>
    <div class="footer">footer</div>
</body>
</html>
  • 整體效果:


    雙飛翼布局

總結(jié):

其實兩種布局最終實現(xiàn)的效果是差不多的切距,主要是實現(xiàn)的思路有所不同:

  • 圣杯布局通過設(shè)置 container 的 padding 來為左右欄留出位置,而雙飛翼布局是在中間欄增加子元素惨远,通過內(nèi)層子元素的 margin 來為左右欄留出位置(注意: 雙飛翼布局中 width 和 float 屬性都是設(shè)置在外層 div 上的)谜悟。
  • 圣杯布局中為了使得左右欄分布在最左和最右需要同時使用負(fù) margin 和相對定位實現(xiàn),而雙飛翼布局中不需要使用相對定位北秽。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末葡幸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贺氓,更是在濱河造成了極大的恐慌蔚叨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蔑水,居然都是意外死亡悄泥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門肤粱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厨相,你說我怎么就攤上這事领曼。” “怎么了蛮穿?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵庶骄,是天一觀的道長。 經(jīng)常有香客問我践磅,道長单刁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任府适,我火速辦了婚禮羔飞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘檐春。我一直安慰自己逻淌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布疟暖。 她就那樣靜靜地躺著卡儒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俐巴。 梳的紋絲不亂的頭發(fā)上骨望,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音欣舵,去河邊找鬼擎鸠。 笑死,一個胖子當(dāng)著我的面吹牛邻遏,可吹牛的內(nèi)容都是我干的糠亩。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼准验,長吁一口氣:“原來是場噩夢啊……” “哼赎线!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起糊饱,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤垂寥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滞项,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡狭归,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了文判。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片过椎。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖戏仓,靈堂內(nèi)的尸體忽然破棺而出疚宇,到底是詐尸還是另有隱情,我是刑警寧澤赏殃,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布敷待,位于F島的核電站,受9級特大地震影響仁热,放射性物質(zhì)發(fā)生泄漏榜揖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一抗蠢、第九天 我趴在偏房一處隱蔽的房頂上張望举哟。 院中可真熱鬧,春花似錦物蝙、人聲如沸炎滞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽册赛。三九已至,卻和暖如春震嫉,著一層夾襖步出監(jiān)牢的瞬間森瘪,已是汗流浹背伍宦。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工洽沟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹋辅。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓悴势,卻偏偏與公主長得像窗宇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子特纤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

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