CSS實(shí)現(xiàn)等分布局的4種方式

等分布局是指子元素平均分配父元素寬度的布局方式,本文將介紹實(shí)現(xiàn)等分布局的4種方式
思路一: float
缺點(diǎn):結(jié)構(gòu)和樣式存在耦合性,IE7-瀏覽器下對(duì)寬度百分比取值存在四舍五入的誤差
【1】float + padding + background-clip
使用padding來實(shí)現(xiàn)子元素之間的間距,使用background-clip使子元素padding部分不顯示背景
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- margin-right: -20px;
- overflow: hidden;
- }
- .child{
- float: left;
- height: 100px;
- width: 25%;
- padding-right: 20px;
- box-sizing: border-box;
- background-clip: content-box;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: lightblue;">1</div>
- <div class="child" style="background-color: lightgreen;">2</div>
- <div class="child" style="background-color: lightsalmon;">3</div>
- <div class="child" style="background-color: pink;">4</div>
- </div>
- </div>
【2】float + margin + calc
使用margin實(shí)現(xiàn)子元素之間的間距,使用calc()函數(shù)計(jì)算子元素的寬度
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- overflow: hidden;
- margin-right: -20px;
- }
- .child{
- float: left;
- height: 100px;
- width: calc(25% - 20px);
- margin-right: 20px;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: lightblue;">1</div>
- <div class="child" style="background-color: lightgreen;">2</div>
- <div class="child" style="background-color: lightsalmon;">3</div>
- <div class="child" style="background-color: pink;">4</div>
- </div>
- </div>
【3】float + margin + (fix)
使用margin實(shí)現(xiàn)子元素之間的間距,通過增加結(jié)構(gòu)來實(shí)現(xiàn)兼容
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- overflow: hidden;
- margin-right: -20px;
- }
- .child{
- float: left;
- width: 25%;
- }
- .in{
- margin-right: 20px;
- height: 100px;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: blue;">
- <div class="in" style="background-color: lightblue;">1</div>
- </div>
- <div class="child" style="background-color: green;">
- <div class="in" style="background-color: lightgreen;">2</div>
- </div>
- <div class="child" style="background-color: orange;">
- <div class="in" style="background-color: lightsalmon;">3</div>
- </div>
- <div class="child" style="background-color: red;">
- <div class="in" style="background-color: pink;">4</div>
- </div>
- </div>
- </div>
思路二: inline-block
缺點(diǎn):需要設(shè)置垂直對(duì)齊方式vertical-align,則需要處理?yè)Q行符解析成空格的間隙問題。IE7-瀏覽器不支持給塊級(jí)元素設(shè)置inline-block屬性,兼容代碼是display:inline;zoom:1;
【1】inline-block + padding + background-clip
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- font-size: 0;
- margin-right: -20px;
- overflow: hidden;
- }
- .child{
- display:inline-block;
- vertical-align: top;
- width: 25%;
- padding-right: 20px;
- box-sizing: border-box;
- background-clip: content-box;
- font-size: 16px;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: lightblue;">1</div>
- <div class="child" style="background-color: lightgreen;">2</div>
- <div class="child" style="background-color: lightsalmon;">3</div>
- <div class="child" style="background-color: pink;">4</div>
- </div>
- </div>
【2】inline-block + margin + calc
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- margin-right: -20px;
- font-size: 0;
- }
- .child{
- display: inline-block;
- vertical-align: top;
- font-size: 16px;
- height: 100px;
- width: calc(25% - 20px);
- margin-right: 20px;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: lightblue;">1</div>
- <div class="child" style="background-color: lightgreen;">2</div>
- <div class="child" style="background-color: lightsalmon;">3</div>
- <div class="child" style="background-color: pink;">4</div>
- </div>
- </div>
【3】inline-block + margin + (fix)
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- margin-right: -20px;
- font-size: 0;
- }
- .child{
- display: inline-block;
- vertical-align: top;
- font-size: 16px;
- width: 25%;
- }
- .in{
- margin-right: 20px;
- height: 100px;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: blue;">
- <div class="in" style="background-color: lightblue;">1</div>
- </div>
- <div class="child" style="background-color: green;">
- <div class="in" style="background-color: lightgreen;">2</div>
- </div>
- <div class="child" style="background-color: orange;">
- <div class="in" style="background-color: lightsalmon;">3</div>
- </div>
- <div class="child" style="background-color: red;">
- <div class="in" style="background-color: pink;">4</div>
- </div>
- </div>
- </div>
思路三: table
缺點(diǎn):元素被設(shè)置為table后,內(nèi)容撐開寬度。若要兼容IE7-瀏覽器,需要改為<table>結(jié)構(gòu)。table-cell元素?zé)o法設(shè)置margin,設(shè)置padding及background-clip也不可行
【1】table + margin負(fù)值
- <style>
- body,p{margin: 0;}
- .parentWrap{
- overflow: hidden;
- }
- .parent{
- display: table;
- width: calc(100% + 20px);
- table-layout: fixed;
- }
- .child{
- display: table-cell;
- height: 100px;
- padding-right: 20px;
- }
- </style>
- <div class="parentWrap">
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: blue;">
- <div class="in" style="background-color: lightblue;">1</div>
- </div>
- <div class="child" style="background-color: green;">
- <div class="in" style="background-color: lightgreen;">2</div>
- </div>
- <div class="child" style="background-color: orange;">
- <div class="in" style="background-color: lightsalmon;">3</div>
- </div>
- <div class="child" style="background-color: red;">
- <div class="in" style="background-color: pink;">4</div>
- </div>
- </div>
- </div>
【2】table + 兄弟選擇器
- <style>
- body,p{margin: 0;}
- .parent{
- display: table;
- width: 100%;
- table-layout: fixed;
- }
- .child{
- display: table-cell;
- height: 100px;
- }
- .child + .child{
- padding-left: 20px;
- }
- </style>
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: blue;">
- <div class="in" style="background-color: lightblue;">1</div>
- </div>
- <div class="child" style="background-color: green;">
- <div class="in" style="background-color: lightgreen;">2</div>
- </div>
- <div class="child" style="background-color: orange;">
- <div class="in" style="background-color: lightsalmon;">3</div>
- </div>
- <div class="child" style="background-color: red;">
- <div class="in" style="background-color: pink;">4</div>
- </div>
- </div>
思路四: flex
- <style>
- body,p{margin: 0;}
- .parent{
- display: flex;
- }
- .child{
- flex:1;
- height: 100px;
- }
- .child + .child{
- margin-left: 20px;
- }
- </style>
- <div class="parent" style="background-color: lightgrey;">
- <div class="child" style="background-color: lightblue;">1</div>
- <div class="child" style="background-color: lightgreen;">2</div>
- <div class="child" style="background-color: lightsalmon;">3</div>
- <div class="child" style="background-color: pink;">4</div>
- </div>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
本文鏈接:http://www.cnblogs.com/xiaohuochai/p/5456695.html
相關(guān)文章
- 這篇文章主要介紹了CSS超出文本指定寬度用省略號(hào)代替和文本不換行的相關(guān)資料,小編覺的實(shí)用性非常,特此分享到腳本之家平臺(tái),供大家參考2016-05-05
- CSS3鼠標(biāo)懸停圖片上顯示文字描述特效源碼是一款當(dāng)鼠標(biāo)滑過圖片時(shí),圖片平滑向上移動(dòng),下方的圖片描述信息被顯示出來。需要的朋友前來下載源碼2016-05-05
- 下面小編就為大家?guī)硪黄狢SS 的簡(jiǎn)寫【新手必看】。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-04
- 下面小編就為大家?guī)硪黄獪\析CSS等高布局的6種方式。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-04
CSS3 Animation 制作動(dòng)畫點(diǎn)擊波效果代碼
CSS3 Animation 制作動(dòng)畫點(diǎn)擊波效果代碼是一款使用CSS3 animation動(dòng)畫來制作點(diǎn)擊波效果,可以在按鈕和圖片等元素上制作點(diǎn)擊波特效。需要的朋友前來下載源碼2016-05-04- 這篇文章主要為大家詳細(xì)介紹了CSS中height和min-height的區(qū)別,從簡(jiǎn)單實(shí)例出發(fā)為大家進(jìn)行分析,感興趣的小伙伴們可以參考一下2016-05-04
- 本文為大家詳細(xì)介紹三列布局,分為兩側(cè)定寬中間自適應(yīng)、兩列定寬一側(cè)自適應(yīng)、中間定寬兩側(cè)自適應(yīng)、一側(cè)定寬兩列自適應(yīng)和三列自適應(yīng)五種情況,感興趣的小伙伴們可以參考一下2016-05-04
網(wǎng)頁(yè)中時(shí)光軸CSS實(shí)現(xiàn)
這篇文章為大家分享了CSS網(wǎng)頁(yè)中時(shí)光軸的簡(jiǎn)單實(shí)現(xiàn)方法,記錄每個(gè)時(shí)間段、時(shí)間點(diǎn)所發(fā)生的事情,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-04- 下面小編就為大家?guī)硪黄恍┏1荒愫雎缘腃SS小知識(shí)【必看】。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-06