【问题标题】:3 column layout with flex column direction具有弹性列方向的 3 列布局
【发布时间】: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


【解决方案1】:

这不是一个完整的答案,但它确实满足了几个要求。我开始检查 Bootstrap 4 Cards:https://getbootstrap.com/docs/4.0/components/card/#card-columns

似乎可以通过一些非常简单的标记来创建砖石风格的布局。现在唯一的问题是,当我单击其中一张卡片以显示隐藏的内容时,其中一些卡片可能会跳来跳去(单击小提琴中的第一项)。

我在这里做了一个 jsfiddle:https://jsfiddle.net/lharby/avfpq1sr/

基本标记:

<div class='card-columns'>
  <div>
    <div class='card item'>
      <h4>A heading</h4>
      <div class="hidden">
        <p class="mt-4 mb-5">Save up to 20% off* your business insurance thanks to....</p>
        <a href="https://www.goodlight.co.uk/wp-content/uploads/2017/07/goodlight-commercial-led-lighting.png" title="View" class="sc-pFZIQ iVCQdF cta btn-primary" target="_blank" rel="noopener noreferrer">View</a>
      </div>
    </div>
  </div>
  <div class='card item'>
    <div>
    ...
    </div>
  </div>
</div>

我尝试在隐藏内容上使用height: 0overflow: hidden 而不是隐藏的display:none,但结果相同。

如果有人对此有任何经验,我想听听。我会看看我是否可以更新问题中的标签。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    相关资源
    最近更新 更多