【发布时间】:2019-01-22 01:45:27
【问题描述】:
这听起来可能是一个过时的话题,因为由于 flex-box 和 grid 没有人仍然使用 inline-block 属性,但我想知道它,我想询问一下。
当创建两个 div 并将它们都分配为显示为 inline-block 然后在其中一个中添加任何元素时,结果很奇怪,其中包含该元素的 div 会滑到另一个 div 的底部减去添加元素的高度。
div {
display: inline-block;
width: 100px;
height: 150px;
background: gray;
}
<div id="left">
<span>Text</span>
</div>
<div id="right"></div>
要解决这个问题,只需将 div 垂直对齐到顶部就足够了,但奇怪的是,即使我们对齐另一个不受影响的 div 而不对齐受影响的 div,我们也会得到相同的结果,那又如何呢?这里到底发生了什么?
div {
display: inline-block;
width: 100px;
height: 150px;
background: gray;
}
#left{
vertical-align: baseline;
}
#right{
vertical-align: top;
}
<div id="left">
<span>text</span>
</div>
<div id="right"></div>
更新:
为了进一步澄清,我删除了子元素并在两个 div 之外添加了一个文本,并添加了另外两个 div,现在所有 div 都没有流内容,但前两个都有一个 top 属性,而最后一个两个是不同的,一个是top,一个是baseline:
div {
display: inline-block;
width: 100px;
height: 150px;
background: gray;
}
.right{
vertical-align:baseline;
}
.left{
vertical-align:top;
}
Text
<div class="right"></div>
<div class="left"></div>
<br>
Text
<div class="left"></div>
<div class="left"></div>
在第一种情况下,文本与顶部对齐,下一个与 div 的基线对齐,即使它们没有流内容。
【问题讨论】:
-
尝试将 max-width 和 max-height 添加到 textarea textarea { margin: 0;填充:0;宽度:50px;高度:50px;边框:0;最大宽度:100%;最大高度:100%; }
-
因为 IE 还没有死掉(还)
inline-block仍然有它的位置,因为即使在最新版本的 IE(不是边缘)中,grid和flex也有问题(充其量) -
这不是错误,它是垂直对齐,默认为
baseline -
我并没有完全偏离主题,这正是您需要的答案。您的行为是由于基线对齐,这解释了一切。我添加了更多重复项,以便您了解这种逻辑行为
-
阅读重复项,您会明白 :) 关闭为重复项的目的.. 我无法在 cmets 中解释这种行为