假设有一个要在网页上显示的图像列表。列表中的图像应分组在同一水平行中(例如,显示:flex),这些组应显示在垂直列中(例如,显示:弯曲;弯曲方向:列)。水平排列的图像组的总高度应该等于视口的高度。整个列表中图像组的数量和组内图像的数量是可变的,但是我使用两组图像(每组两张)作为概念证明。此外,这些图像的原始大小是可变的,因此需要调整它们的大小。
如何调整图像的大小,以保持其纵横比,并适合在网页内没有溢出?
我用下面的CSS编写了下面的HTML代码来实现这个目的。问题是图像的大小根本没有调整到主div的大小,图像组div溢出了主容器。我如何强制图像组div缩小到主容器的高度,图像调整到其父div的高度?
超文本:
<body>
<div class="main-container">
<div class="image-group" id="dup-set-1">
<img src="./images/1.jpg" class="duplicate-image">
<img src="./images/2.jpg" class="duplicate-image">
</div>
<div class="image-group" id="dup-set-2">
<img src="./images/3.png">
<img src="./images/4.jpg">
</div>
</div>
</body>
CSS:
body {
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
}
.main-container {
display: flex;
flex-direction: column;
margin: auto;
width: 100%;
height: 100vh; /* Make the whole container the height of the viewport*/
border: 10px red solid;
}
.image-group {
flex: 1; /* Size the group divs to the height of the main container */
display: flex;
}
.image-group img {
max-height: 100%;
max-width: 100%;
height: 100%; /* Make the image height fit the height of its parent group div */
width: auto; /* Scale the image to keep its original apsect ratio */
}
我看过建议使用flex-grow的this question,和建议使用object-fit的this question;;然而这些问题仅涉及一个图像组(即仅一个中间div),并且似乎没有调整图像组div的大小。
2条答案
按热度按时间p1tboqfb1#
正在工作... (编辑:改进的代码)
flex css属性应使用3个参数:增长、收缩、基础
grow
确定flexbox是否可以占用全部空间(如果有)shrink
如果需要,确定Flexbox是否可以采用更多大小!basis
确定其限制(大小)示例如下:
kgsdhlau2#
这里是问题的解决方案。我使用Unsplash图像为这个演示这些照片不是我的,它只是演示的目的。
"我希望你得到了答案"