序
display有幾種屬性:
inline是內聯對象,比如<a/> 、 <span/>標簽等,可以“堆在一起”顯示,寬高由內容決定,不能設置;
block是塊對象,比如<div/>、<p/>標簽等,要占一整行,但是寬高可以自定義;為了彌補inline和block的不足,又擴充了inline-block屬性;
inline-blcok可以將對象呈遞為內聯對象,而內容作為塊對象呈遞。
通俗點講就是“可定寬高的堆在一起”顯示

為什么會有間隙
inline-blcok塊之間的不可見符號會被保留父層字體的1/3大小的空間
解決方案
知道了原因,方案就好找了,我把它分為以下幾種

原始狀態
<ul> <li>item1</li> <li>item2</li> <li>item3</li> <li>item4</li> <li>item5</li></ul>
1、改變書寫結構
<ul> <li>item1</li><li>item2</li><li>item3</li><li>item4</li><li>item5</li></ul><ul> <li> item1</li><li> item2</li><li> item3</li><li> item4</li><li> item5</li></ul><ul> <li>item1</li ><li>item2</li ><li>item3</li ><li>item4</li ><li>item5</li></ul><ul> <li>item1</li><!-- --><li>item2</li><!-- --><li>item3</li><!-- --><li>item4</li><!-- --><li>item5</li></ul>

效果圖
以上幾種均可以完美的達到去除間隙的作用
但是,從代碼的可讀性上看,或多或少有一些不足
2、打包工具
使用打包工具或者自寫腳本,在上線前將響應HTML代碼打包成一行,即可
3、丟失結束標簽
<ul> <li>item1 <li>item2 <li>item3 <li>item4 <li>item5</ul>
此方法雖然可以解決此問題,但是在Doctype為xhtml時將報錯,所有方法是否適用須視情況而定。
4、css hack
知道間隙的產生原因和間隙的大小后,動手寫一個css hack也是一種很好的方法
1、將父容器的字體大小設置為0,可解決絕大多數瀏覽器(老版本safari不支持)
2、針對不支持上條的瀏覽器設置字塊或字符間間隙letter-spacing/word-spacing,推薦letter-spacing,因為此屬性不會產生負間隙,但需要注意,要在子元素上設置letter-spacing:0
3、如果你轉化但是塊對象,那需要為低版本瀏覽器設置inline兼容,不讓樣式會亂掉
總結以上幾點給出以下代碼
.parent { letter-spacing: -.3333em; font-size: 0;}.child { display: inline; display: inline-block;}以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答