【问题标题】:inline-block div with and without text not vertically aligned带和不带文本的内联块 div 未垂直对齐
【发布时间】:2022-04-25 17:57:42
【问题描述】:

我有两个 divs 并排。两者具有相同的大小和display: inline-block。两者的唯一区别是,第一个有一些文字,第二个是空白的。

HTML:

<div>1</div>
<div></div>

CSS:

div {
    display: inline-block;
    border: 1px solid black;
    width: 50px;
    height: 50px;
}

第一个 div 低于第二个。

我知道所有可能的修复方法,例如在第二个 div 中添加一些文本或 &amp;nbsp;。当然,添加 vertical-align: top 也可以解决此问题。

我想知道的是,有人能解释一下,为什么空白 div 的对齐方式与其中包含一些文本的 div 不同?

JSFiddle

【问题讨论】:

  • 如果添加 2 行文本,您会看到基线对齐方式会发生变化
  • @Huangism 我添加了一条线,对齐方式发生了变化。谢谢你的提示。

标签: html css


【解决方案1】:

默认情况下,内联块框垂直对齐,这样内联块框的基线与渲染它的行框的基线对齐。

具有一行文本的内联块框的基线是该行的基线。更一般地说,内联块的基线是它包含的最后一行文本的基线。但这意味着不包含文本的内联块没有基线。

在这种情况下,一个后备规则开始起作用,并且内联块框的底部放置在其行框的基线上。

【讨论】:

  • 这是一个很好的解释。你有一些文档的指针吗?
  • Adrift 的回答提供了相关规范的链接。
  • 我已经研究过了,但还没有掌握。看来我必须考虑一下。
  • 该链接的最后一段是这里重要的一段。
猜你喜欢
  • 2014-10-16
  • 2014-11-09
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 2023-04-04
  • 2015-11-22
  • 2012-02-16
相关资源
最近更新 更多