html - 图像调整到父 div 保持比例并尊重图像高度

标签 html css

我想在 div 中显示图片,图片会相应地缩放到高度或宽度,具体取决于哪个较大。

这是一个有问题的小 jsfiddle:https://jsfiddle.net/efbydkLz/1/

  • 第一个方框应该是这样的。 image-width 大于 div-with 并相应缩放。
  • 第二个框显示了问题:图像高度太大,无法缩放。
  • 第三个框显示,“图片”类的 div 已尽可能大。文本可长可短,图片部分占据剩余空间。

图像以某种方式仅忽略父 div 的高度。它对宽度做出正确响应。

有谁知道如何正确缩放图像,使图像始终位于 picture-div 内并且不会忽略 div-height?

提前致谢!

.outer {
  width: 30vw;
  height: 300px;
  border: 2px solid black;
  margin: 10px 10px 10px 10px;
  padding: 5px;
  display: flex;
  flex-flow: column;
}

.picture {
  background: red;
  flex-grow: 1;
}

img {
  max-width: 100%;
  max-height: 100%;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
  <div class="outer">
    <div class="text">
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    </div>
    <div class="picture">
      <img src="https://via.placeholder.com/500x100">
    </div>
  </div>
  <div class="outer">
    <div class="text">
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.
    </div>
    <div class="picture">
      <img src="https://via.placeholder.com/100x500">
    </div>
  </div>
  <div class="outer">
    <div class="text">
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
    </div>
    <div class="picture">
    </div>
  </div>
</div>

最佳答案

当您在图像周围添加额外的包装器 div 时,这会起作用。将picture-inner的背景涂成蓝色,这样可以更好的看到布局效果。

.outer {
  width: 30vw;
  height: 300px;
  border: 2px solid black;
  margin: 10px 10px 10px 10px;
  padding: 5px;
  display: flex;
  flex-flow: column;
}

.picture {
  background: red;
  flex-grow: 1; /* make sure the picture container takes up all remaining space */
  display: flex;
  flex-direction: column;
}

.picture-inner {
  background: blue;
  max-height: 100%; /* img doesnt respect its own max-height rule as expected without this extra wrapper */
}

.picture img {
  max-width: 100%;
  max-height: 100%;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<div class="row">
  <div class="outer">
    <div class="text">
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    </div>
    <div class="picture">
      <div class="picture-inner">
        <img src="https://via.placeholder.com/500x100">
      </div>
    </div>
  </div>
  <div class="outer">
    <div class="text">
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.
    </div>
    <div class="picture">
      <div class="picture-inner">
        <img src="https://via.placeholder.com/100x500">
      </div>
    </div>
  </div>
  <div class="outer">
    <div class="text">
      Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
    </div>
    <div class="picture">
    </div>
  </div>
</div>

关于html - 图像调整到父 div 保持比例并尊重图像高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55837861/

相关文章:

html - 禁用某些元素的 css 样式

html - 在 alt 标签上使用本地语言好吗?

javascript - 通过 HTML 再次将数组转为换行字符串再转为数组

javascript - 如何使用 jQuery 隐藏没有类或 ID 的元素...当父级也没有 ID 时?

javascript - 硬刷新站点后移动 View 中的 owl.carousel 响应错误

jquery - 拖动时在 Safari 和 Chrome 中拖放光标会发生变化

HTML 敏捷包创建新的 HTMLNode

javascript - Jquery onclick 这个删除两个跨度

jquery - 单击时如何获取 FullCalendar 事件的颜色

css - 使用 transition-duration 使动画淡出