我是 CSS 新手,最近阅读了规范,在理解 vertical-align 属性时遇到了一些问题。
<div style="border: 1px solid black;">
<span style="border: 1px solid red; padding-left: 1px; line-height: 30px;"></span>
<span style="border: 1px solid red; padding-left: 1px;"></span>
<span style="border: 1px solid red; padding-left: 1px; line-height: 40px;"></span>
</div>
<div style="border: 1px solid black;">
<span style="border: 1px solid red; padding-left: 1px; line-height: 30px;"></span>
<span style="border: 1px solid red; padding-left: 1px;"></span>
<span style="border: 1px solid red; padding-left: 1px; line-height: 40px; vertical-align: top"></span>
</div>
<div style="border: 1px solid black;">
<span style="border: 1px solid red; padding-left: 1px; line-height: 30px; vertical-align: bottom"></span>
<span style="border: 1px solid red; padding-left: 1px;"></span>
<span style="border: 1px solid red; padding-left: 1px; line-height: 40px; vertical-align: top"></span>
</div>
上面的代码创建了 3 个 div,每个都包含 3 个空的内联框(跨度):
- 在第一个 div 中,一切似乎都很好。所有 3 个跨度都与线框的基线对齐。
- 在第二个 div 中,在我将
vertical-align
属性设置top
为第三个跨度后,前两个跨度向上移动。而且我从这里迷路了,我不明白为什么他们会按照什么规则向上移动。 - 第三个 div 对我来说更加紧密。我将
vertical-align
属性设置bottom
为第一个跨度,它导致第二个跨度移动略低于第三个跨度(当放大到足够大时会注意到这一点)。
我可以在规范中找到的内容如下所述,但究竟是什么multiple solutions
?任何人都可以更清楚地说明这一点吗?
In case they are aligned 'top' or 'bottom', they must be aligned so as to minimize the line box height. If such boxes are tall enough, there are multiple solutions and CSS 2.1 does not define the position of the line box's baseline.
我还创建了一个fiddle。如果您有兴趣,请在 Firefox 或 Chrome 中运行它。