美文网首页
display:inline-block 元素之间空隙的产生原因

display:inline-block 元素之间空隙的产生原因

作者: 扫地僧练级 | 来源:发表于2023-12-17 10:14 被阅读0次

    display:inline-block 元素之间空隙的产生原因和解决办法

    原因

    元素被当成行内元素排版的时候,元素之间的空白符(空格、回车换行等)都会被浏览器处理,根据 white-space 的处理方式(默认是 normal,合并多余空白),原来 HTML 代码中的回车换行被转成一个空白符,在字体不为 0 的情况下,空白符占据一定宽度,所以 inline-block 的元素之间就出现了空隙。这些元素之间的间距会随着字体的大小而变化,当行内元素 font-size:16px 时,间距为 8px。

    尝试 1: 解决元素之间的空白符

    <!-- 将所有子元素写在同一行 -->
    <div class="parent">
      <div class="child">child1</div><div class="child">child2</div>
    </div>
    

    分析: 代码风格一保存立马换行, 不可行

    尝试 2: 父元素中设置 font-size: 0,子元素上重置正确的 font-size

    <div class="parent" style="font-size: 0px">
      <div class="child" style="font-size: 16px">child1</div>
      <div class="child" style="font-size: 16px">child2</div>
    </div>
    

    分析: inline-block 必须设置字体, 不然不显示, 还增加了代码量, 不可行

    尝试 3: inline-block 元素添加样式 float:left

    分析: 用 float 可能有高度塌陷问题

    尝试 4: 子元素 margin 值为负数

    .parent  .child {
      margin-left: -2px
    }
    

    分析: 间距与字体大小有关, 不同浏览器下间距也不同, 不可行

    最优解,设置父元素,display:table 和 word-spacing

    .parent{
    display: table;
    word-spacing:-1em; /_兼容其他浏览器_/
    }
    ```
    

    相关文章

      网友评论

          本文标题:display:inline-block 元素之间空隙的产生原因

          本文链接:https://www.haomeiwen.com/subject/zhqogdtx.html