【发布时间】:2021-07-08 05:53:00
【问题描述】:
我正在尝试构建使用 React 映射的项目的视图。目标是有一个 3 列布局,其中项目按列方向排列。每个面板内部都有一个隐藏的 div,一旦单击面板,就会展开 div。这样做的想法是,这只会将该列中的内容下推。
我已经尝试过网格版本,目前正在尝试使用百分比的传统row, col flex 属性进行引导。
为方便起见,我做了两个例子,只是使用 jquery 来模拟点击功能。
首先是网格:https://jsfiddle.net/lharby/vmaut95L/
基本的CSS:
.container {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
gap: 2em 2em;
grid-auto-flow: column;
}
这里的问题是,当您单击具有隐藏内容的项目(面板 3)时,所有面板都会展开到相同的大小。
这里是引导版本:https://jsfiddle.net/lharby/u83L6tph/
这样更好,但是当我将 flex 方向更改为 column 时,所有内容都显示在一列中,左对齐为 33% 宽度 (col-md-4)。正如小提琴中所见,这是使用标准引导 css。
标记类似,但使用了更多引导实用程序类:
<div class="row exclusive-offers-wrapper">
<div class="col-md-4 mx-n1 p-4">
<div class="item">
</div>
</div>
...
【问题讨论】:
-
理解了这两个例子,但究竟需要什么?您的 css-grid 需要引导程序的功能吗?或者您只是希望您的 css-grid 在单击第 3 项时正确展开?
-
我认为 css 网格会实现我想要的。但经过测试,我认为不会。我假设的网格将始终对齐。我不知道在折叠的容器上设置
height: 0和/或overflow: hidden是否有效。所以我相当肯定我将不得不放弃网格布局并坚持使用引导程序。但我不是 100% 确定。如果可以在网格中完成,那很好。虽然我更喜欢坚持使用引导程序,因为我对它有更好的了解。 -
我想知道一个砖石风格的布局,但这是用 JS 完成的,我想避免。
标签: css bootstrap-4 flexbox css-grid masonry