【发布时间】:2014-01-08 22:33:18
【问题描述】:
我是 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,每个 div 包含 3 个空的内联框(spans):
- 在第一个 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 中运行它。
【问题讨论】:
-
请注意,小提琴的第三个示例在 IE (11) 中与 Chrome (31) 和 Firefox (25 & 26) 不同。
标签: vertical-alignment html css baseline