【发布时间】:2021-08-23 15:32:57
【问题描述】:
我正在尝试使用弹性框来构建一个响应式网格,该网格根据展开的项目对其项目进行重新排序。
这是我的 HTML
<div class="flex">
<div class="box1">
Box1
</div>
<div class="box2">
Box2
</div>
<div class="box3">
Box3
</div>
<div class="box4">
Box4
</div>
</div>
这是我的 CSS
.flex
{
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.flex > div
{
flex: 0 0 50%;
text-align: center;
border: 1px #ccc solid;
}
.flex > .box1 {
flex: 0 0 100%;
}
这是一个工作版本 - http://jsfiddle.net/pwr6xnd8/3/
这就是我希望这些盒子发挥作用的方式:
-
当 Box1 展开时,第 1 行应该只有 Box1 展开,第 2 行现在应该有 Box2 和 Box3。第 3 行在 Box2 下应该只有 Box4。
-
当 Box2 展开时,row1 应该只有 Box 2 展开,而 Row 2 应该有 Box1 和 Box3。第 3 行的 Box1 下应该只有 Box4。
-
当 Box3 展开时,第 1 行应该有 Box1 和 Box2,但第 2 行应该只打开 Box3。第 3 行左侧应该只有 Box4。
-
当框 4 展开时,第 1 行应该有 Box1 和 Box2,但第 2 行应该只打开了 Box4。第 3 行的左边应该只有 Box3。
现在,例如,当我打开 Box2 时,只有 Box1 留在第 1 行,而 Box 2 在第 2 行展开,而 Box 3 和 Box 4 在第 4 行,这显然不是我想要的。 不确定是否可以使用 flexbox 完全实现此功能,或者我是否可能需要一些 JS 代码。
有人可以帮忙吗?
【问题讨论】:
标签: html css flexbox styles css-grid