【发布时间】:2018-04-10 21:48:40
【问题描述】:
我想要一个包含文本的 div 和一个自动缩放的图像,以适应文本在 div 中没有占据的剩余空间。我得出的结论是,缩放 img 元素的最常见方法是通过 max-height/max-width 样式。但该值是相对于父元素的,根据设计,我不会知道它的空间大小。
因此,在自动缩放的 div 上使用“背景图像”样式似乎是要走的路。 Flex-box 似乎也是要走的路。
HTML:
<div class="item">
<div class="item-img" style="background-image:url('images/piano.jpg')"/>
<div class="item-desc"> A Piano. This text will break it if too long</div>
</div>
CSS:
.item {
display: flex;
flex-direction: column;
height: 100vh;
}
.item-img {
background-size: contain;
background-position: center;
background-repeat: no-repeat;
flex: 1;
}
.item-desc {
flex: 1;
}
除非描述文本太长,否则这很好用。然后,由于某种原因,图像分隔线不会缩小为文本腾出空间。我看到了有关使用“object-fit”的解决方案,但我认为必须有一个 flex-box 解决方案。似乎答案应该是 flex-shrink 和 flex-grow 的某种组合。我可能会弄明白,但这个问题有足够多有趣的东西和主要概念,我认为值得发布,而且我在这个网站上的任何地方都看不到它们。
【问题讨论】:
-
您应该发布足够的代码来重现该问题。包括图片。