在没有硬编码行高或字体大小的情况下,如何在纯 CSS 中将 div 的高度表示为其行高的倍数?
背景
我有一个包含状态文本的框(DIV)。文本有时会跨越多行,通常只需要一行。状态每秒更新几(五)次,这会导致底部边框和框下方的所有内容随着框更改大小以适应其内容而上下“跳跃”。
跳跃的一种解决方案是将 DIV 的最小高度设置为两条线的高度。两行以上的状态文本很少见,因此跳跃的程度是可以接受的。
或者,我可以将高度设置为两行的确切高度并使用溢出:隐藏截断文本。这将消除所有以牺牲一些信息为代价的跳跃。
这就提出了一个问题:如何将高度表示为线高的倍数?状态文本从全局样式表继承其外观,不知道字体大小、系列、行高或任何内容。
半解决方案
我可以在不了解字体的情况下使用 em 单位来表示高度,但这仍然会留下行高属性,这也会影响最终的行高。
理想情况下,我更愿意继承行高,但如果我将其覆盖为已知的乘数,那么我可以强制框变得正好有两行高。
.progressStatus
{
line-height: 1.1;
height: 2.2em;
}
该解决方案足以满足我的需求,但我很好奇是否有更好的不涉及 javascript 的解决方案。