现象
当两个display值为inline-block的元素并列时,元素之间会出现神秘的间距。
inline元素也有相同现象。
原因
造成「inline-block」元素空隙的本质是HTML中存在的空白符(white space)。由于对于西文来说,是使用空格作为单词之间的分界的,所以在HTML被解析时,inline或者inline-block元素的标签之间的空格或者换行被看成相当于文字间隙,产生了一些看不见的字符,CSS的white-space
属性会作用于这些字符,产生了内容,占据了空间,产生了水平方向上的“间隙”效果;
因此,当inline或者inline-block元素的HTML标签之间存在换行或使用空格分隔的情况下会有间距。
解决方法
假设HTML如下:
1 | <ul> |
方法一:改变HTML结构
既然原因是标签之间的空格(换行)产生的,那么去掉HTML元素之间的空格即可。以下几种结构都是可以的:
1 | <!-- 1 --> |
方法二:父元素的font-size属性设为0
但由于font-size
是继承属性,需要对所有子元素重新设定需要的font-size
方法三:子元素浮动
对于子元素进行浮动,可以消除之间的间距,但是可能会对于布局产生影响。
方法四:设置letter-spacing或者word-spacing
其中letter-spacing
表示字符间距,word-spacing
表示单词间距,随便设定一个较大的值即可。
1 | ul{ |