gpt4 book ai didi

html - flexbox wrap 忽略最大宽度

转载 作者:搜寻专家 更新时间:2023-10-31 08:50:44 25 4
gpt4 key购买 nike

我的 flex 容器奇怪地(在我看来)忽略了 max-widthwrap

目的是在左边有一个(始终)大的元素,在那个元素旁边或下面有零个、一个、两个或三个较小的元素。如果只有一个,应该显示在右边,如果有两个或三个,应该都到下一行(等距)。

0) -------------------------------
| large item |
-------------------------------
1) -------------------------------
| large item | small |
-------------------------------
2) -------------------------------
| large item |
-------------------------------
| small | small |
-------------------------------
3) -------------------------------
| large item |
-------------------------------
| small | small | small |
-------------------------------

我原以为 flexbox 会“只需要这样做”。但现在它不会按预期包装。右边的元素(应该在第二行)刚好溢出 flexbox。

谁能看出我做错了什么?非常感谢!

示例在这里:Codepen

.container {
display: flex;
flex-wrap: wrap; /* ? */

background-color: #ccc;
padding: 10px 0;
max-width: 1024px;
margin: 0 auto;
}

.item_large {
flex: 1 0 450px;
background-color: green;
height: 40px;
border-radius: 2px;
}

.container_2 {
display: flex;
flex-wrap: nowrap;
flex: 1 0 190px;
margin: 0 -12px;
}

.item_small {
flex: 1 0 190px;
background-color: blue;
height: 40px;
border-radius: 2px;
margin: 0 12px;
}

@media screen and (max-width: 719px) {
.container_2 {
flex-wrap: wrap;
}

.item_small {
flex: 1 0 320px;
}
}

@media screen and (min-width: 720px) {

.item_small:first-child:nth-last-child(1) {
margin-left: 36px;
}
}
<div class="container">
<div class="item_large"></div>
</div>
</div><br /><br />
<div class="container">
<div class="item_large"></div>
<div class="container_2">
<div class="item_small"></div>
</div>
</div><br /><br />
<div class="container">
<div class="item_large"></div>
<div class="container_2">
<div class="item_small"></div><div class="item_small"></div>
</div>
</div><br /><br />
<div class="container">
<div class="item_large"></div>
<div class="container_2">
<div class="item_small"></div><div class="item_small"></div><div class="item_small"></div>
</div>
</div>

最佳答案

您需要更好地理解 flex 网格。这是一篇好文章Flex Docs .

您遇到的主要问题 id flex-grow: 1

  .container {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1em;
}

.item_large {
flex: 1;
background-color: green;
}

.item_small {
flex: 0 0 190px;
background-color: steelblue;
}

[class^="item_"] {
height: 2em;
border-radius: 5px;
margin: 0.5em;
display: flex;
align-items: center;
}
<div class="container">
<div class="item_large"></div>
</div>
<div class="container">
<div class="item_large"></div>
<div class="item_small">190px</div>
</div>
<div class="container">
<div class="item_large"></div>
</div>
<div class="container">
<div class="item_large"></div>
<div class="item_large"></div>
</div>
<div class="container">
<div class="item_large"></div>
</div>
<div class="container">
<div class="item_large"></div>
<div class="item_large"></div>
<div class="item_large"></div>
</div>

您可能想了解更多关于 flex grid 的知识,以便将来制作您想要的任何网格。您可以在 .item_small 上使用相同的想法来制作网格 item_1 --> 10% | item_2 --> 20% |等等……

关于html - flexbox wrap 忽略最大宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49832202/

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