置换元素和几种解决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>
  1. 让inline-block代码在一行

    1. 改变书写结构
    <ul>
        <li>item1</li><li>item2</li><li>item3</li>
    </ul>
    <ul>
        <li>item1</li
        ><li>item2</li
        ><li>item3</li
    </ul>
    

    总之,就是让相邻的inline-block标签不分开,但是从代码的可读性上看,或多或少有一些不足

    1. 打包工具

    使用打包工具把代码打包成一行即可。

  2. 在标签的父级上写:font-size:0;

    <ul style="font-size:0">
        <li>item1</li>
        <li>item2</li>
        <li>item3</li>
    </ul>
    
  3. 使用letter-spacing属性

    <ul style="letter-spacing:-800px">
        <li>item1</li>
        <li>item2</li>
        <li>item3</li>
    </ul>
    
posted @ 2018-12-24 17:08  xlupc  阅读(127)  评论(0编辑  收藏  举报