为什么 `font-size : 0` 会以某种方式影响 `line-height`

roo*_*mir 1 html css font-size

我今天在设计中遇到了一个奇怪的行为。让我先向您展示我的代码,然后再讨论它

*,
*:after,
*::before {
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
body,
html {
  height: 100%;
  padding: 0;
}
#all-content,
#content-outer,
#content-inner {
  height: 100%;
  position: relative;
}
#content-inner {
  overflow-y: scroll;
}
.block {
  display: inline-block;
  font-size: 0;
  background-color: yellow;
  width: 50px;
  height: 50px;
  border: 3px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<div id="all-content">
  <div id="content-outer">
    <div id="content-inner">
      <div id="main-field">
        <div class="block">text</div>
        <div class="block">text</div>
        <div class="block">text</div>
        <div class="block">text</div>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,在这段代码中,#main-field元素上应用了一个奇怪的顶部填充。有两种方法可以解决此问题。要么对类应用line-height : 50px规则.block,要么将字体大小更改为非零的值。我想知道为什么会发生这种情况,因为我从未遇到过像这种行为这样奇怪的事情。

Alv*_*dez 5

这就是为什么你不使用“hack”来删除块内联元素之间的空间。即使字体大小为 0,文本仍然具有行高,并且可能不知道如何表现,它占用了“块”上方的空间。

如果您仍然想使用代码,一个简单的解决方案是添加:

vertical-align:top
Run Code Online (Sandbox Code Playgroud)

到你的块元素:FIDDLE

注意:使用浮动:)