html - 为什么内联 block div 彼此对齐不均匀?

标签 html css

如何将两个具有 height 属性的 inline-block div 放在同一行?

预期:

#legend#container 应该在同一行。

实际:

#legend 位于 #container 之后。

Fiddle

div {
  display: inline-block;
}

#legend {
  height: 500px;
  border: solid red;
}

#container {
  height: 500px;
  width: 500px;
  border: solid green;
}
<div id="legend">
  <p>Lorem</p>
</div>
<div id="container"></div>

另一方面,如果我们不放置height 属性,它works fine .

最佳答案

行内元素的初始设置是vertical-align: baseline。这意味着 spantextareaimg 等元素的默认 display 值为 inline,将自己与容器的基线对齐。

baseline

The line upon which most letters "sit" and below which descenders extend.

enter image description here

Source: Wikipedia.org

在您的问题中,您已将 div 设置为 display: inline-block。这会激活基线对齐,并且框与彼此的基线垂直对齐。这就是您所看到的。

您可以通过覆盖 vertical-align 的默认值来解决该问题。试试这个:

div {
  display: inline-block;
  vertical-align: bottom;  /* new */
}

#legend {
  height: 500px;
  border: solid red;
}

#container {
  height: 500px;
  width: 500px;
  border: solid green;
}
<div id="legend">
  <p>Lorem</p>
</div>
<div id="container"></div>

或者,只需将一些文本放在空的 div 中(尽管 vertical-align 仍然可以派上用场,以完全平衡对齐)。

div {
  display: inline-block;
}

#legend {
  height: 500px;
  border: solid red;
}

#container {
  height: 500px;
  width: 500px;
  border: solid green;
}
<div id="legend">
  <p>Lorem</p>
</div>
<div id="container">text text text</div>

关于html - 为什么内联 block div 彼此对齐不均匀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47443152/

相关文章:

javascript - 如何在html中自定义柱形图

css - clear :both or overflow:auto,哪个好?

css - 如何在悬停时更改文本链接的背景颜色而不是图像链接

javascript - 如何根据高度在较小的屏幕上滚动粘性菜单

html - 如何在 Material UI 中覆盖 css?

html - 调整大小时如何使四个按钮保持在同一行?

html/templates - 用 <br> 替换换行符

javascript - 将模板的 div 分成单独的模板或使用 ng-if 在具有多个 div 的单个模板中显示 div

javascript - 如何制作已经折叠的表格?

php - 在表中添加新列后,我无法再插入数据