【问题标题】:why does `font-size : 0` somehow affects `line-height`为什么`font-size:0`会以某种方式影响`line-height`
【发布时间】:2015-03-28 01:01:55
【问题描述】:

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

*,
*: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;
}
<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>

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

【问题讨论】:

    标签: html css font-size


    【解决方案1】:

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

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

    vertical-align:top
    

    到您的块元素:FIDDLE

    注意:使用浮动 :)

    【讨论】:

      【解决方案2】:

      你为什么要设置font-size:0?我猜您正在尝试从 inline-block 元素之间删除空格的方法之一,但在这种情况下,您需要在 @987654324 的 parent 上指定 font-size:0 @ 元素(将是 #main-field),然后在 inline-block 元素本身上重新指定字体大小。

      看看你是如何给你的元素一个固定宽度的,那么你可能根本不需要这个技巧,应该只使用float:leftdisplay:block

      【讨论】:

      • 我想对font-size : 0 做的事情是防止collapsing margins 发生,因为它们不再是空块了
      猜你喜欢
      • 2017-01-07
      • 2011-06-28
      • 1970-01-01
      • 2012-09-06
      • 2018-07-05
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多