亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

css實現三欄布局的幾種方法及優缺點

2024-07-11 08:59:29
字體:
來源:轉載
供稿:網友

前言

三欄布局,顧名思義就是兩邊固定,中間自適應。三欄布局在實際的開發十分常見,比如淘寶網的首頁,就是個典型的三欄布局:即左邊商品導航和右邊導航固定寬度,中間的主要內容隨瀏覽器寬度自適應。

我們不妨假定這樣一個布局:高度已知,其中左欄、右欄寬度各為300px,中間自適應,可以通過幾種方法來實現?以及各自的優缺點是什么?

本文源代碼請猛戳三欄布局源碼,歡迎star和fork

一、浮動布局

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>Layout</title>    <style media="screen">        html * {            padding: 0;            margin: 0;        }        .layout article div {            min-height: 150px;        }    </style></head><body>    <!--浮動布局  -->    <section class="layout float">        <style media="screen">            .layout.float .left {                float: left;                width: 300px;                background: red;            }            .layout.float .center {                background: yellow;            }            .layout.float .right {                float: right;                width: 300px;                background: blue;            }        </style>        <h1>三欄布局</h1>        <article class="left-right-center">            <div class="left"></div>            <div class="right"></div> // 右欄部分要寫在中間內容之前            <div class="center">                <h2>浮動解決方案</h2>                1.這是三欄布局的浮動解決方案; 2.這是三欄布局的浮動解決方案; 3.這是三欄布局的浮動解決方案; 4.這是三欄布局的浮動解決方案; 5.這是三欄布局的浮動解決方案; 6.這是三欄布局的浮動解決方案;            </div>        </article>    </section></body></html>

這種布局方式,dom結構必須是先寫浮動部分,然后再中間塊,否則右浮動塊會掉到下一行。
浮動布局的優點就是比較簡單,兼容性也比較好。但浮動布局是有局限性的,浮動元素脫離文檔流,要做清除浮動,這個處理不好的話,會帶來很多問題,比如父容器高度塌陷等。

二、絕對布局

   <!--絕對布局  -->    <section class="layout absolute">        <style>            .layout.absolute .left-center-right>div{                position: absolute;//三塊都是絕對定位            }            .layout.absolute .left {                left:0;                width: 300px;                background: red;            }            .layout.absolute .center {                right: 300px;                left: 300px;//離左右各三百                background: yellow;            }            .layout.absolute .right {                right: 0;                width: 300px;                background: blue;            }        </style>        <h1>三欄布局</h1>        <article class="left-center-right">            <div class="left"></div>            <div class="center">                <h2>絕對定位解決方案</h2>                1.這是三欄布局的浮動解決方案; 2.這是三欄布局的浮動解決方案; 3.這是三欄布局的浮動解決方案; 4.這是三欄布局的浮動解決方案; 5.這是三欄布局的浮動解決方案; 6.這是三欄布局的浮動解決方案;            </div>            <div class="right"></div>        </article>    </section>

絕對定位布局優點就是快捷,設置很方便,而且也不容易出問題。缺點就是,容器脫離了文檔流,后代元素也脫離了文檔流,高度未知的時候,會有問題,這就導致了這種方法的有效性和可使用性是比較差的。

三、flexbox布局

    <!--flexbox布局-->    <section class="layout flexbox">        <style>            .layout.flexbox .left-center-right{                display: flex;            }            .layout.flexbox .left {                width: 300px;                background: red;            }            .layout.flexbox .center {                background: yellow;                flex: 1;            }            .layout.flexbox .right {                width: 300px;                background: blue;            }        </style>        <h1>三欄布局</h1>        <article class="left-center-right">            <div class="left"></div>            <div class="center">                <h2>flexbox解決方案</h2>                1.這是三欄布局的浮動解決方案; 2.這是三欄布局的浮動解決方案; 3.這是三欄布局的浮動解決方案; 4.這是三欄布局的浮動解決方案; 5.這是三欄布局的浮動解決方案; 6.這是三欄布局的浮動解決方案;            </div>            <div class="right"></div>        </article>    </section>

flexbox布局是css3里新出的一個,它就是為了解決上述兩種方式的不足出現的,是比較完美的一個。目前移動端的布局也都是用flexbox。 flexbox的缺點就是IE10開始支持,但是IE10的是-ms形式的。

四、表格布局

<!--表格布局-->    <section class="layout table">        <style>            .layout.table .left-center-right {                display: table;                height: 150px;                width: 100%;            }            .layout.table .left-center-right>div {                display: table-cell;            }            .layout.table .left {                width: 300px;                background: red;            }            .layout.table .center {                background: yellow;            }            .layout.table .right {                width: 300px;                background: blue;            }        </style>        <h1>三欄布局</h1>        <article class="left-center-right">            <div class="left"></div>            <div class="center">                <h2>表格布局解決方案</h2>                1.這是三欄布局的浮動解決方案; 2.這是三欄布局的浮動解決方案; 3.這是三欄布局的浮動解決方案; 4.這是三欄布局的浮動解決方案; 5.這是三欄布局的浮動解決方案; 6.這是三欄布局的浮動解決方案;            </div>            <div class="right"></div>        </article>    </section>

表格布局的兼容性很好(見下圖),在flex布局不兼容的時候,可以嘗試表格布局。當內容溢出時會自動撐開父元素。

表格布局也是有缺陷:①無法設置欄邊距;②對seo不友好;③當其中一個單元格高度超出的時候,兩側的單元格也是會跟著一起變高的,然而有時候這并不是我們想要的效果。


五、網格布局

    <!--網格布局-->    <section class="layout grid">        <style>            .layout.grid .left-center-right {                display: grid;                width: 100%;                grid-template-columns: 300px auto 300px;                grid-template-rows: 150px;//行高            }            .layout.grid .left {                background: red;            }            .layout.grid .center {                background: yellow;            }            .layout.grid .right {                background: blue;            }        </style>        <h1>三欄布局</h1>        <article class="left-center-right">            <div class="left"></div>            <div class="center">                <h2>網格布局解決方案</h2>                1.這是三欄布局的浮動解決方案; 2.這是三欄布局的浮動解決方案; 3.這是三欄布局的浮動解決方案; 4.這是三欄布局的浮動解決方案; 5.這是三欄布局的浮動解決方案; 6.這是三欄布局的浮動解決方案;            </div>            <div class="right"></div>        </article>    </section>

CSS Grid是創建網格布局最強大和最簡單的工具。就像表格一樣,網格布局可以讓Web設計師根據元素按列或行對齊排列,但他和表格不同,網格布局沒有內容結構,從而使各種布局不可能與表格一樣。例如,一個網格布局中的子元素都可以定位自己的位置,這樣他們可以重疊和類似元素定位。

但網格布局的兼容性不好。IE10+上支持,而且也僅支持部分屬性。

六、總結

通過上面詳細介紹五種布局的優缺點,在實際開發中最優選擇哪種布局?相信讀者心中會有自己的答案。
我覺得flex和grid布局就可以搞定實際開發中的布局,假設瀏覽器都支持這兩個模塊,你將選擇grid還是flexbox來給頁面布局?flexbox是一維布局,他只能在一條直線上放置你的內容區塊;而grid是一個二維布局。前面也簡單說到,你可以根據你的設計需求,將內容區塊放置到任何你想要放的地方。那么不用多說,你應該知道哪一種更適合你的布局。此外,如果要兼容低版本的IE(比如IE8+),可以考慮table布局。

最后問大家一個問題,如果中間部分被內容高度撐開,需要左右欄也撐開,這五種布局哪些布局還可以用?

答案:flex布局和table布局

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美中文在线视频| 国产亚洲精品久久久久久牛牛| 日本久久久久久久久久久| 国产精品激情av电影在线观看| 97超级碰碰碰久久久| 亚洲最新av在线| 成人黄色影片在线| 欧美激情亚洲视频| 国产精品久久久久福利| 欧美午夜精品在线| 欧美电影在线观看高清| 亚洲摸下面视频| 久久99热精品这里久久精品| 中文字幕一区二区精品| 成人xxxxx| 91精品久久久久久久久久久久久| 色天天综合狠狠色| 在线观看亚洲视频| 欧美老女人性生活| 91久久久久久久久久| 国产91色在线|免| 国产精品人成电影在线观看| 精品国产一区二区三区久久| 成人国产精品av| 国产精品激情自拍| 黑人狂躁日本妞一区二区三区| 欧美俄罗斯性视频| 久久久久久久久久久免费| 欧美激情乱人伦| 热久久99这里有精品| 精品久久久久久久大神国产| 97av在线视频免费播放| 国产成人精品免费久久久久| 国产精品久久久久久久app| 欧美成人在线影院| 欧美黄网免费在线观看| 大胆欧美人体视频| 色噜噜狠狠色综合网图区| 欧美视频在线免费看| 亚洲女同精品视频| 97涩涩爰在线观看亚洲| 亚洲成人中文字幕| 国产性色av一区二区| 国产成人精品一区二区在线| 97在线视频一区| 超在线视频97| 亚洲免费高清视频| 国产成人精品av在线| 亚洲r级在线观看| 日韩大陆欧美高清视频区| 亚洲日韩欧美视频| 成人精品网站在线观看| 精品一区精品二区| 日韩经典一区二区三区| 亚洲人成五月天| 欧美电影免费观看高清| 97视频在线观看免费高清完整版在线观看| 国产精品igao视频| 在线看日韩欧美| 色www亚洲国产张柏芝| 欧美中文字幕视频在线观看| 亚洲欧美精品在线| 国产女人18毛片水18精品| 欧美猛男性生活免费| 亚洲女成人图区| 成人乱人伦精品视频在线观看| 亚洲人成电影在线播放| 亚洲精品视频免费| 国产日韩精品电影| 91精品视频在线播放| 久久精品久久久久久| 欧美第一页在线| 性欧美视频videos6一9| 91成人在线播放| 亚洲影视九九影院在线观看| 青青久久av北条麻妃海外网| 亚洲免费福利视频| 美女福利视频一区| 欧美精品免费看| 亚洲欧洲一区二区三区久久| 久久久久久久久久久成人| 亚洲自拍偷拍第一页| 亚洲爱爱爱爱爱| 国产成人精品av| 91在线免费网站| 91久久精品国产91久久性色| 国产精品6699| 亚洲美女视频网站| 亚洲视频在线观看免费| 久久在线免费观看视频| 久久天堂电影网| 色综合久久久久久中文网| 亚洲女性裸体视频| 日韩中文字幕不卡视频| 成人a级免费视频| 亚州成人av在线| 久久婷婷国产麻豆91天堂| 欧美日韩国产中字| 555www成人网| 影音先锋欧美精品| 久久天天躁夜夜躁狠狠躁2022| 一区二区三区日韩在线| 欧美另类99xxxxx| 国产欧美精品一区二区三区-老狼| 全球成人中文在线| 亚洲男人天堂视频| 欧美多人乱p欧美4p久久| 欧美极品xxxx| 亚洲精品自在久久| 亚洲欧美另类自拍| 在线午夜精品自拍| 亚洲第一偷拍网| 亚洲xxxxx电影| 奇米四色中文综合久久| 欧美最猛性xxxx| 国产一区二区三区网站| www.亚洲成人| 国产精品久久国产精品99gif| 色av中文字幕一区| 亚洲精品视频免费| 91高清视频免费| 97视频在线观看亚洲| 亚洲精品国产品国语在线| 久久久国产一区二区三区| 日韩中文有码在线视频| 成人免费网站在线| 久久频这里精品99香蕉| 精品久久久精品| 国产精品无av码在线观看| 九九久久久久99精品| 成人写真福利网| 欧美亚洲视频一区二区| 中文字幕亚洲专区| 亚洲无av在线中文字幕| 亚洲精品有码在线| 九九热这里只有精品免费看| 国产一区二区三区视频在线观看| 国产精品网红福利| 国产欧美一区二区三区久久| 亚洲女人被黑人巨大进入al| 亚洲欧美在线免费| 欧美一级视频在线观看| 欧美成人小视频| 欧美天天综合色影久久精品| 日韩在线观看精品| 最新亚洲国产精品| 亚洲美女性生活视频| 国产成人一区二区三区电影| 国产精品一二区| 欧美国产视频一区二区| 欧美亚洲国产日本| 这里只有精品久久| 欧美国产日韩中文字幕在线| 成人福利在线视频| 一区二区三区视频免费| 成人福利免费观看| 欧美亚洲国产成人精品| 高清一区二区三区日本久| 91亚洲国产成人久久精品网站| 中文字幕欧美日韩在线| www日韩中文字幕在线看| 久久久久久美女| 国产精品久久久久久久久久久久久久| 成人字幕网zmw|