【发布时间】:2017-04-12 03:03:22
【问题描述】:
继续我的问题Vertically center align divs with unknown height
我有这样的代码:
https://jsfiddle.net/yyjde1gb/
#test {
background: yellow;
display: flex;
align-items: center;
}
#block1 {
background-color: grey;
}
#block2 {
background-color: green;
margin-left: auto;
}
<div id="test">
<div id="block1">
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
<div>test</div>
</div>
<div id="block2">
sample
</div>
</div>
它使用弹性。
问题是:没有 flex(当然也没有 JavaScript)是否有可能获得相同的结果?
重要提示:禁止以像素、ems、百分比等对任何高度或宽度进行硬编码(这使这个问题变得困难)。所有高度和宽度仅由包含的文本隐式形成。这是一个自适应页脚原型。
首先想到的是使用浮点数 - 但这是不可能的,因为“block2” div 的 vertical-align: middle (浮点数仅限 vertical-align: top) - 请参阅 Vertically center align divs with unknown height 中的详细信息。
EDIT1:“测试” div 应该跨越页面的所有宽度,因为它是页脚。
EDIT2:建议的解决方案应尽可能支持最旧的浏览器。
UPDATE1:最佳答案是 @Muhammad Usman。 transform 由 @Nenad Vracar 的回答提出的旧浏览器支持伪元素 :after。谢谢大家!
UPDATE2:在 @Muhammad Usman 的回答中,可能需要添加 line-height 属性 - 如果它在某个父块中声明(从而影响我们的页脚)。我必须将line-height: 0; 添加到零大小的字体块中,并将line-height: 16px; 添加到具有16px 字体大小的块中。
【问题讨论】: