我遇到了一个有趣的问题,即带有文本的 DIV 在 Firefox 和 Chrome 中占用空间。我有一个水平扩展的条形图,每个条形图由一个垂直条形和下面的标题组成。
<div class="verticalChart">
<div class="singleBar">
<div class="bar"><!-- contents set by javascript, equal size for all bars--></div>
<div class="title">What is a fraction</div>
</div>
<div class="singleBar">
<div class="bar"></div>
<div class="title">Unit Fractions on Number Line</div>
</div>
[...] <!-- more bars -->
</div>
我将以下 CSS 应用于每个条形下方的标题,以确保它们的底部位于相同的 y 坐标处。我允许文本最多占用 3 行,然后超出可见框:
.verticalChart .singleBar .title {
font-size: 10px;
line-height: 1.0em;
min-height: 3.0em;
max-height: 3.0em;
overflow: hidden;
margin-top: 5px;
text-align: center;
white-space: normal;
}
我基本上需要标题栏的高度始终相同,否则条形将错位。有趣的是,这似乎在 Firefox 中运行良好:
但在 Chrome 上是不行的:
基于摆弄数字,我的怀疑是 Firefox 中的 min-height 与 Chrome 中的 min-height 行为不同:
- 在 Firefox 中,将 min-height 降低到 3em 以下将从标题 div 中删除不需要它的多余行,从而使它们上方的条不对齐。
- 在 Chrome 中,更改 min-height 只会将下方的滚动条推得更近或更远。带有 bar + title 的 div 不会以任何方式相对于彼此移动。
这里到底发生了什么?我是否以错误的方式实现了标题栏的“最小高度”效果?是否有更跨浏览器友好的方法?
非常感谢!
编辑:
JSFiddle 根据大众需求:http: //jsfiddle.net/YJHrY/4/