置换元素和几种解决inline-block间隙的方案
有时候我们需要让一些inline-blcok块显示在一行,这时候我们会发现它们之间会存在一个间隙。为什么呢?
inline-blcok块之间的不可见符号会被保留父层字体的1/3大小的空间
还有有时候多张连续的图片排列在一起时,也会出现间隙,而且不知道你们是否发现img标签是行内元素,为什么可以设置宽高呢?
img确实是行内元素 但它也是置换元素 。
置换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内容。例如浏览器会根据标签的src属性的值来读取图片信息并显示出来,而如果查看(X)HTML代码则看不到图片的实际内容;又例如根据input标签的type属性来决定是显示输入框,还是单选按钮等。所以 img input select textarea button label 等,他们被称为可置换元素(Replaced element)。他们区别一般inline元素是:这些元素拥有内在尺寸 内置宽高 他们可以设置width/height属性。他们的性质同设置了display:inline-block的元素一致。
解决方案
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
-
让inline-block代码在一行
- 改变书写结构
<ul> <li>item1</li><li>item2</li><li>item3</li> </ul> <ul> <li>item1</li ><li>item2</li ><li>item3</li </ul>
总之,就是让相邻的inline-block标签不分开,但是从代码的可读性上看,或多或少有一些不足
- 打包工具
使用打包工具把代码打包成一行即可。
-
在标签的父级上写:font-size:0;
<ul style="font-size:0"> <li>item1</li> <li>item2</li> <li>item3</li> </ul>
-
使用letter-spacing属性
<ul style="letter-spacing:-800px"> <li>item1</li> <li>item2</li> <li>item3</li> </ul>