有基础的朋友能够直接跳过序言,直接看方案
display有几种属性:css
inline是内联对象,好比<a/>
、 <span/>
标签等,能够“堆在一块儿”显示,宽高由内容决定,不能设置;
block是块对象,好比<div/>
、<p/>
标签等,要占一整行,可是宽高能够自定义;
为了弥补inline和block的不足,又扩充了inline-block属性;
inline-blcok能够将对象呈递为内联对象,而内容做为块对象呈递。html
通俗点讲就是浏览器
“可定宽高的堆在一块儿”显示工具
inline-blcok块之间的不可见符号会被保留父层字体的1/3大小的空间
知道了缘由,方案就好找了,我把它分为如下几种字体
<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>
<ul> <li>item1</li><!-- --><li>item2</li><!-- --><li>item3</li><!-- --><li>item4</li><!-- --><li>item5</li> </ul>
以上几种都可以完美的达到去除间隙的做用
可是,从代码的可读性上看,或多或少有一些不足spa
使用打包工具或者自写脚本,在上线前将响应HTML代码打包成一行,便可code
<ul> <li>item1 <li>item2 <li>item3 <li>item4 <li>item5 </ul>
此方法虽然能够解决此问题,可是在Doctype为xhtml时将报错,全部方法是否适用须视状况而定。htm
知道间隙的产生缘由和间隙的大小后,动手写一个css hack也是一种很好的方法
一、将父容器的字体大小设置为0,可解决绝大多数浏览器(老版本safari不支持)
二、针对不支持上条的浏览器设置字块或字符间间隙letter-spacing/word-spacing,推荐letter-spacing,由于此属性不会产生负间隙,但须要注意,要在子元素上设置letter-spacing:0
三、若是你转化可是块对象,那须要为低版本浏览器设置inline兼容,不让样式会乱掉
总结以上几点给出如下代码对象
.parent { letter-spacing: -.3333em; font-size: 0; } .child { display: inline; display: inline-block; }
如发现文字有不妥之处,还请不吝赐教