html - 使图像缩放以在适合 flexbox 时保持其纵横比

标签 html css flexbox object-fit

考虑以下代码:

* {
  box-sizing: border-box;
  margin: 0;
}
.container {
  display: flex;
  flex-direction: column;
  align-items: stretch;

  width: 400px;
  height: 200px;

  padding: 10px;

  background: red;
}
.box {
  flex: 1;
}
.box img {
  object-fit: contain;
}
<div class="container">
  <h1>lorem ipsum</h1>
  <figure class="box">
    <img src="http://lorempixel.com/400/200/">
  </figure>
</div>

我希望 object-fit: contain 使 img 收缩到 .box 中,由 flex 容器自动调整大小。出乎我的意料,它从盒子里溢出来了。我的代码有什么问题?

最佳答案

.box 也应该是 display:flex 以便 img 可以在 .box 中“增长”。

* {
  box-sizing: border-box;
  margin: 0;
}

.container {
  display: flex;
  flex-direction: column;
  width: 400px;
  height: 200px;
  padding: 10px;
  background: red;
}
.box {
  display: flex;
  flex: 1;
  overflow: hidden;
}
.box img {
  object-fit: contain;
}
<div class="container">
  <h1>lorem ipsum</h1>
  <figure class="box">
<img src="http://placehold.it/400x200">
  </figure>
</div>

https://www.codeply.com/go/k0gsZbwwRq

关于html - 使图像缩放以在适合 flexbox 时保持其纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49347967/

相关文章:

css - 相对和绝对定位

javascript - 如何在页面加载/使用 Javascript 时自动打开纯 CSS 弹出窗口?

css - 使一排大图像适合 flexbox

css - 使用 flex-box 均匀间隔

javascript - Html5 视频无法在 bxslider 上播放

javascript - 如何将数组结果显示为html

javascript - 是否可以创建带有可选文本的输入?

html - 有没有更有效的方法来移动 CSS 中的元素?

php - 将 foreach 结果排序为 2 列

javascript - 三列等高,每列对应行