【发布时间】:2015-07-31 14:08:37
【问题描述】:
我有一个使用 CSS flexbox 缩放到可用高度的 DIV。在这个 DIV 中是一个图像,我想在两个维度上与 DIV 一起缩放。这意味着它应该在保持其纵横比的情况下进行缩放,并且小于相应 DIV 尺寸的尺寸应该居中。
我可以使图像跟随 DIV 的宽度,但不能跟随高度。因此,肖像图像会脱离 DIV 界限。
这是一个jsFiddle 来演示问题。
html, body {
height: 100%;
margin: 0;
}
.container {
display: flex;
flex-direction: column;
height: 100%;
}
.box {
flex: 1 1 auto;
display: flex;
justify-content: center;
align-items: center;
}
.box img {
width: auto;
height: auto;
max-width: 90%;
max-height: 90%;
}
<div class="container">
<div class="box"></div>
<div class="box" style="background: pink;">
<img src="//dummyimage.com/300" />
</div>
<div class="box"></div>
</div>
【问题讨论】:
-
你想让图像适合高度,即使它自然更小? (您在示例中使用了相当大的图片,所以我不确定)
-
我想实现的第一件事是它可以根据需要缩小。
-
不,抱歉,图像应保留其原始纵横比。如果这个与容器的不同,则图像应在调整大小后沿小于容器之一的轴居中。
-
谢谢。改写。使用背景图片可能是最后的手段,因为图片是网站的主要内容,通常应该通过 HTML 来表示,而不是作为样式。但如果没有其他办法......
-
flexbox 布局是因为图像缩放问题而实现的,还是其他原因? (即:是否可以选择更改为阻止 DIV?)