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

等分布局是指子元素平均分配父元素寬度的布局方式,本文將介紹實現(xiàn)等分布局的4種方式
思路一: float
缺點:結(jié)構(gòu)和樣式存在耦合性,IE7-瀏覽器下對寬度百分比取值存在四舍五入的誤差
【1】float + padding + background-clip
使用padding來實現(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實現(xiàn)子元素之間的間距,使用calc()函數(shù)計算子元素的寬度
- <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實現(xiàn)子元素之間的間距,通過增加結(jié)構(gòu)來實現(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
缺點:需要設(shè)置垂直對齊方式vertical-align,則需要處理換行符解析成空格的間隙問題。IE7-瀏覽器不支持給塊級元素設(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
缺點:元素被設(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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
本文鏈接:http://www.cnblogs.com/xiaohuochai/p/5456695.html
相關(guān)文章
- 這篇文章主要介紹了CSS超出文本指定寬度用省略號代替和文本不換行的相關(guān)資料,小編覺的實用性非常,特此分享到腳本之家平臺,供大家參考2016-05-05
- CSS3鼠標(biāo)懸停圖片上顯示文字描述特效源碼是一款當(dāng)鼠標(biāo)滑過圖片時,圖片平滑向上移動,下方的圖片描述信息被顯示出來。需要的朋友前來下載源碼2016-05-05
- 下面小編就為大家?guī)硪黄狢SS 的簡寫【新手必看】。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-04
- 下面小編就為大家?guī)硪黄獪\析CSS等高布局的6種方式。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-04
- CSS3 Animation 制作動畫點擊波效果代碼是一款使用CSS3 animation動畫來制作點擊波效果,可以在按鈕和圖片等元素上制作點擊波特效。需要的朋友前來下載源碼2016-05-04
- 這篇文章主要為大家詳細(xì)介紹了CSS中height和min-height的區(qū)別,從簡單實例出發(fā)為大家進行分析,感興趣的小伙伴們可以參考一下2016-05-04
- 本文為大家詳細(xì)介紹三列布局,分為兩側(cè)定寬中間自適應(yīng)、兩列定寬一側(cè)自適應(yīng)、中間定寬兩側(cè)自適應(yīng)、一側(cè)定寬兩列自適應(yīng)和三列自適應(yīng)五種情況,感興趣的小伙伴們可以參考一下2016-05-04
- 這篇文章為大家分享了CSS網(wǎng)頁中時光軸的簡單實現(xiàn)方法,記錄每個時間段、時間點所發(fā)生的事情,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-04
- 下面小編就為大家?guī)硪黄恍┏1荒愫雎缘腃SS小知識【必看】。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-06