日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多列布局方案整理

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多列布局方案整理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

了解 CSS 中屬性的值及其特性, 透徹分析問題和需求才可以選擇和設計最適合的布局解決方案。

多列布局在網頁中非常常見(例如兩列布局),多列布局可以是兩列定寬,一列自適應, 或者多列不定寬一列自適應還有等分布局等。

定寬-自適應

有如下布局

<div class="parent"><div class="left"><p>left</p></div><div class="right"><p>right</p><p>right</p></div> </div>

float+margin

.left {float: left;width: 100px;}.right {margin-left: 100px/*間距可再加入 margin-left */}

優點:容易理解
缺點:IE6中會有3像素的BUG, 解決方法可以在.left 加入 margin-left:-3px。
因為left是浮動元素,right是沒有浮動的,如果right內容中有清楚浮動就會產生bug。

改進:float + margin + (fix)

<div class="parent"><div class="left"><p>left</p></div>/*外層在包裹一個容器*/<div class="right-fix"><div class="right"><p>right</p><p>right</p></div></div> </div> <style>.left {float: left;width: 100px;}.right-fix {float: right;width: 100%;margin-left: -100px;}.right {margin-left: 100px/*間距可再加入 margin-left */} </style>

兼容性很好,適用于多版本瀏覽器(包括 IE6)但是多了層right-fix的結構。但left不可選擇,被right-fix蓋住。需要設置left的 position: relative;來提高層級。

float+overflow

.left{ float: left;width: 100px;margin-right: 20px;}.right{ overflow: hidden; //觸發BFC }

overflow:hidden使得div產生了BFC 模式(Block Formatting Context)塊級格式化文本,根據BFC的布局規則之一,div那個產生的BFC區域不會與左邊浮動的元素所重疊。具體什么是BFC可以看看這篇文章

table

.parent {display: table;width: 100%;table-layout: fixed;}.left {display: table-cell;width: 100px;}.right {display: table-cell;/*寬度為剩余寬度*/}

table 的顯示特性為每列的單元格寬度合一定等與表格寬度。 table-layout: fixed; 可加速渲染,也是設定布局優先。

table-cell 中不可以設置 margin 但是可以通過 padding 來設置間距。

flex

.parent{ display: flex ; }.left { width: 100px;margin-right: 20px;}.right{/*等價于flex:1 1 0; 增長因子和收縮因子都為1,基礎寬度為0,那么剩余寬度都分配給right*/flex: 1 ; }

flex-item 默認為內容寬度。
缺點: CSS3 兼容性。根據內容判斷,性能會有問題,做小范圍布局,不適合大范圍布局。

不定寬-自適應

float + overflow

.left{ float: left;width: 200px;margin-right: 20px;}.right{ overflow: hidden; //觸發BFC }

table

.parent{ display:table; width: 100%;}.left, .right { display: table-cell;}.left{ width:0.1%; //寫的夠小就行,不寫1px的原因是IE8會有問題padding-right:20px; }.left p{ width : 200px;} //用內部元素撐開,寬度可以不定

flex

.parent{display:flex;} .left{margin-right:20px;} .right{flex:1;}

三列不定寬 + 自適應 與兩列的做法一樣

等分布局

每一列的寬度和間距均相等。
有如下HTML結構

<div class="parent"><div class="column"><p>1</p></div><div class="column"><p>2</p></div><div class="column"><p>3</p></div><div class="column"><p>4</p></div> </div>

float

.parent{margin-left :-20px; //為父元素增加20px寬度}.column{float : left;width: 25%;padding-left : 20px;box-sizing : border-box;}


缺點:結構和樣式稍微有點耦合性

table

.parent-fix{ margin-left :-20px; //為父元素增加20px寬度 }.parent{ display : table;width : 100%;table-layout : fixed;} .column{float : left;width: 25%;padding-left : 20px;box-sizing : border-box;}

fix

.parent{ display : flex;} .column{flex: 1;}.column+.column{ margin-left: 20px; } //選擇2,3,4

等高需求

table

上面自適應的table布局就具有登高的布局

flex

如上面自適應的例子,flex 天然等高

float

.parent{ overflow : hidden; }.left, .right{padding-bottom : 9999px;margin-bottom : -9999px;}

優點是兼容性比較好
缺點是偽等高 不是正真意義上的登高

總結

以上是生活随笔為你收集整理的多列布局方案整理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。