gpt4 book ai didi

css - 带有 flexbox 的单列画廊,某些 div 一分为二

转载 作者:行者123 更新时间:2023-11-27 23:54:29 28 4
gpt4 key购买 nike

我正在使用一个画廊,它代表一个包含一个或两个的列 <div>跨越整个宽度的元素。包含多个 <div> 的列元素还包含具有不同高度和宽度属性的图像。我希望这些列具有相同的高度,然后在它们之间有额外空间时尽可能填充宽度。

我会使用 flexbox <div>具有固定宽度和 flex-wrap 的元素属性(property)。 <div>跨越整个宽度的元素有一个属性 max-width: 100% .包含多个元素的一行在一个容器内 <div>跨越的元素,然后每个元素都在另一个盒子中 <div>元素。我可以将两个放在同一行上,但由于它们的大小不同,我不希望每个图像的宽度为 50%,因为这样空白区域就会出现在元素的上方和下方,而不是它们之间。

我试过修补 flex-grow , flex-shrinkflex-basis ,但是这些似乎都不准确。我还考虑过切换 <div>包含两个元素的元素 flex-direction: column然后把这些包起来。然而,这对我不起作用。

.column {
width: 600px;
display: flex;
flex-wrap: wrap;
}

.smallContain {
min-width: 100%;
display: flex;
align-content: space-between;
}

.smallBox {
flex: 1 1 50%;
}

.largeBox {
min-width: 100%;
}

img {
max-width: 100%;
}
<body>
<div id="container">
<div class="column">
<div class="smallContain">
<div class="box smallBox">
<img src="#" class="imgS">
</div>
<div class="box smallBox">
<img src="#" class="imgS">
</div>
</div>
<div class="box largeBox">
<img src="#" class="imgL">
</div>
<div class="smallContain">
<div class="box smallBox">
<img src="#" class="imgS">
</div>
<div class="box smallBox">
<img src="#" class="imgS">
</div>
</div>
<div class="box largeBox">
<img src="#" class="imgL">
</div>
<div class="smallContain">
<div class="box smallBox">
<img src="#">
</div>
<div class="box smallBox">
<img src="#">
</div>
</div>
<div class="smallContain">
<div class="box smallBox">
<img src="#" class="imgS">
</div>
<div class="box smallBox">
<img src="#" class="imgS">
</div>
</div>
<div class="box largeBox">
<img src="#" class="imgL">
</div>
</div>
</div>
</body>

(在上面的示例中,.imgS 类指的是小图像,.imgL 类指的是大图像)

Here's an example我希望它看起来像什么。

最佳答案

你的问题有点难懂,不过我试了一下,你看的应该是这样的吧?

.grid {
align-items: stretch;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
width: 100%;
}
.grid .item {
max-height: 400px;
padding: 5px;
}
.grid .item.smallBox {
flex-basis: auto;
flex-grow: 1;
flex-shrink: 1;
}
.grid .item.smallBox img {
object-fit: cover;
object-position: center;
}
.grid .item.largeBox {
flex-basis: 100%;
flex-grow: 1;
flex-shrink: 1;
}
.grid .item img {
height: 100%;
width: 100%;
}
<div class="grid">
<div class="item smallBox">
<img src="http://placeholder.pics/svg/280x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/280x500" alt="">
</div>
<div class="item largeBox">
<img src="http://placeholder.pics/svg/1920x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/480x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/250x500" alt="">
</div>
<div class="item largeBox">
<img src="http://placeholder.pics/svg/1440x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/250x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/480x500" alt="">
</div>
<div class="item largeBox">
<img src="http://placeholder.pics/svg/1440x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/500x500" alt="">
</div>
<div class="item smallBox">
<img src="http://placeholder.pics/svg/150x500" alt="">
</div>
<div class="item largeBox">
<img src="http://placeholder.pics/svg/1440x500" alt="">
</div>
</div>

希望对你有帮助,祝你好运。

关于css - 带有 flexbox 的单列画廊,某些 div 一分为二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56340178/

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