gpt4 book ai didi

html - Flexbox:缩小图像以适合

转载 作者:太空狗 更新时间:2023-10-29 15:07:35 25 4
gpt4 key购买 nike

我正在尝试设计一个具有以下属性的页面,该页面将用作数字标牌:

  • 页面高度是视口(viewport)高度 (100vh),因此无法滚动
  • 页面排列成全宽行
  • 除最后一行之外的所有行都是静态的(具有预定义的内容)
  • 最后一行(将包含图像幻灯片)应填满视口(viewport)中的剩余空间。

这是我目前所拥有的:

body {
margin: 0;
}
div#container {
display: flex;
flex-direction: column;
height: 100vh;
}
div.red {
height: 100px;
background-color: red;
flex: 0 0 auto;
}
div.blue {
height: 150px;
background-color: blue;
flex: 0 0 auto;
}
div.green {
background-color: green;
flex: 0 1 auto;
}
img {
max-height: 100%;
}
<div id="container">
<div class="red"></div>
<div class="blue"></div>
<div class="green">
<img src="http://lorempixel.com/200/300/">
</div>
</div>

https://jsfiddle.net/62qqnx3m/6/

显然这不起作用,因为 flex 没有将图像 div 缩小到正确的大小。

我可以从前两个 div 中删除 flex: 0 0 auto,但它们会缩小。

我如何强制绿色 div/图像占用剩余的空间,不多也不少?

因此,如果提供了更高的图像,它会缩小得更多以适合。

如果图像小于可用空间,它应该简单地显示,背景 div 仍然填充可用空间。

似乎 max-height:100% 很适合这个,但这也行不通。

此外,我已经看到了如何水平执行此操作的示例(我也需要,但遇到的麻烦较少),但我不知道如何将其转换为垂直缩放。

最佳答案

您可以将green block 的位置设置为relative,将图像的位置设置为absolute。还要确保将 green block 的高度设置为 100%(以占用页面的其余高度)。

这应该可以解决问题:

body {
margin: 0;
}

div#container {
display: flex;
flex-direction: column;
height: 100vh;
}

div.red {
height: 100px;
background-color: red;
flex: 0 0 auto;
}

div.blue {
height: 150px;
background-color: blue;
flex: 0 0 auto;
}

div.green {
background-color: green;
flex: 0 1 auto;
position: relative;
height: 100%;
}

img
{
max-height: 100%;
position: absolute;
}
<body>
<div id="container">
<div class="red"></div>
<div class="blue"></div>
<div class="green"><img src="http://lorempixel.com/200/300/"></div>
</div>
</body>

关于html - Flexbox:缩小图像以适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39812393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com