具有内联块的元素中的不同边距

Different margins in elements with inline-block

我正在将 div 从 float:left 切换到 inline-block,但不知道为什么有些 div 会移位,比如它们有一些不可见的边框或其他东西。

这里有float:lefthttps://jsfiddle.net/f7op4dze/

div{
    background-color: red;
    width: calc(25% - 40px);
    height: 50px;
    float:left;
    margin:0 20px;
}

这里还有 inline-block https://jsfiddle.net/dfdxa5hc/

div{
    background-color: red;
    width: calc(25% - 40px);
    height: 50px;
    display:inline-block;
    margin:0 20px;
}

作为解决该问题的一个可能选项,将父项的 font-size 设置为 0

section { font-size: 0; }

您可以恢复子元素上的字体:

div { font-size: 16px; }

演示:https://jsfiddle.net/dfdxa5hc/3/

有关解释和其他可能的解决方案,请在此处查看我的回答:

有一个 space 自动添加了内联元素,这个 space 也应用于 inline-block

如果标记中的元素之间没有白色space(space 或 return),则内联块元素将在没有 [=21 的情况下呈现=].

执行此操作并仍保留最佳格式的最简单方法是在 <div> 元素之间使用注释标记,如下所示: https://jsfiddle.net/orvn/wd0ynq98/2/

<section>
     <div></div><!--
  --><div></div><!--
  --><div></div><!--
  --><div></div>
</section>

(终于)有一个

section {
  display: table;
  word-spacing: -2em;
  width: 100%;
}

div {
  display: inline-block;
  word-spacing: normal;
}