【发布时间】:2015-12-22 10:27:15
【问题描述】:
我正在尝试将任意大小的元素(在我的情况下为图像)居中放置在一个框内。在 Webkit 浏览器中一切正常,但 Firefox 会拉伸长而不是宽的图像。
为了说明这个问题,我创建了 3 个div 框,每个框都包含不同大小的图像。这些框都设置为固定的宽度和高度,并且应用了一些 flexbox 规则来垂直和水平居中图像。
* {
box-sizing: border-box;
}
.box {
display: flex;
width: 100px;
height: 100px;
border: 1px solid black;
justify-content: center;
align-items: center;
float: left;
margin-right: 50px;
}
.box img {
max-width: 100%;
max-height: 100%;
}
<div class="box">
<img src="http://dummyimage.com/150x150/eeeeee.png">
</div>
<div class="box">
<img src="http://dummyimage.com/300x150/eeeeee.png">
</div>
<div class="box">
<img src="http://dummyimage.com/150x300/eeeeee.png">
</div>
img 应该缩小,以便它们完全填满框(水平或垂直,哪一边更长),但保持纵横比。这正是 Webkit 浏览器中发生的情况。然而,Firefox 只是在垂直方向上拉伸了一个长于高的图像。如何使 Firefox 的行为方式与所有 Webkit 浏览器一样?
【问题讨论】:
-
对我来说,Firefox 和 Chrome 的效果是一样的。
-
对不起,我包含了错误的代码 sn-p。现在已经修复了。
-
我可以确认这种奇怪的行为。似乎 FF 忽略了“align-items: center”,而是使用了“stretch”(这是默认设置)。删除该行(默认)或显式设置“拉伸”时,Chrome 中会实现相同的行为。奇怪的是,[在此消息中](lists.w3.org/Archives/Public/www-style/2012Apr/0719.html)提到了类似的东西,但那是很久以前的......