淺談display:inline-block元素之間空隙的產(chǎn)生原因和解決辦法

display:inline-block是一種布局方法,它相比于與浮動、定位最大的不同就是其沒有父元素的匿名包裹特性,這使得display:inline-block屬性的使用非常自由,可與文字,圖片混排,可內(nèi)嵌block屬性元素,可以置身于inline水平的元素中。
在CSS布局中,如果我們想要將一些元素在同一行顯示,其中的一種方法就是把要同行顯示的元素設(shè)置display屬性為inline-block。但是你會發(fā)現(xiàn)這些同行顯示的inline-block元素之間經(jīng)常會出現(xiàn)一定的空隙,這就是“換行符/空格間隙問題”。
<!DOCTYPE html> <html> <head> <title>display:inline-block元素之間空隙的產(chǎn)生原因和解決辦法</title> <style type="text/css"> .parent .child { display: inline-block; background-color: #fdfd04; width: 100px; height: 100px; } </style> </head> <body> <div class="parent"> <div class="child">child1</div> <div class="child">child2</div> </div> </body> </html>
頁面效果:注意被設(shè)置display:inline-block的元素之間的間隙
空隙產(chǎn)生的原因
元素被當成行內(nèi)元素排版的時候,元素之間的空白符(空格、回車換行等)都會被瀏覽器處理,根據(jù)white-space的處理方式(默認是normal,合并多余空白),原來HTML代碼中的回車換行被轉(zhuǎn)成一個空白符,在字體不為0的情況下,空白符占據(jù)一定寬度,所以inline-block的元素之間就出現(xiàn)了空隙。這些元素之間的間距會隨著字體的大小而變化,當行內(nèi)元素font-size:16px時,間距為8px。
解決空隙的辦法
辦法一:解決元素之間的空白符
<!-- 將前一個標簽結(jié)束符和后一個標簽開始符寫在同一行 --> <div class="parent"> <div class="child">child1 </div><div class="child">child2 </div> </div> <!-- 將所有子元素寫在同一行 --> <div class="parent"> <div class="child">child1</div><div class="child">child2</div> </div>
缺點:代碼的可讀性變差。
方法二:為父元素中設(shè)置font-size: 0,在子元素上重置正確的font-size
<div class="parent" style="font-size: 0px"> <div class="child" style="font-size: 16px">child1</div> <div class="child" style="font-size: 16px">child2</div> </div>
缺點:inline-block元素必須設(shè)定字體,不然行內(nèi)元素中的字體不會顯示。 增加了代碼量。
方法三:為inline-block元素添加樣式float:left
缺點:float布局會有高度塌陷問題,點我獲取解決辦法
方法四:設(shè)置子元素margin值為負數(shù)
.parent .child + .child { margin-left: -2px }
缺點:元素之間間距的大小與上下文字體大小相關(guān);并且同一大小的字體,元素之間的間距在不同瀏覽器下是不一樣的,如:font-size:16px時,Chrome下元素之間的間距為8px,而Firefox下元素之間的間距為4px。所以不同瀏覽器下margin-right的負值是不一樣的,因此這個方法不通用。
注意:當marigin-right使用相對單位em來表示時,Chrome下可以正常去除間距,而Firefox下元素之間有重疊。
方法五:最優(yōu)解在這,設(shè)置父元素,display:table和word-spacing
.parent{ display: table; word-spacing:-1em; /*兼容其他瀏覽器,題主還未驗證*/ }
點我了解,幾個關(guān)于diaplay:table布局神器的絕妙應(yīng)用場景
解決空隙問題之后的頁面效果:
到此這篇關(guān)于淺談display:inline-block元素之間空隙的產(chǎn)生原因和解決辦法的文章就介紹到這了,更多相關(guān)display:inline-block空隙內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
inline-block空隙之css letter-spacing與字體大小/字體關(guān)系數(shù)據(jù)表
本文提供inline-block空隙--letter-spacing與字體大小/字體關(guān)系數(shù)據(jù)表,需要的朋友可以參考下2012-12-09