CSS Flexbox/Grid -将已 Package 项目的列 Package 为多行

pbpqsu0x  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(173)

我有几个按天分组的项目,我想将它们显示在列中,因为这是最可读的方式。问题是,我经常有太多的项目和列在右侧溢出。有没有一种方法可以动态地 Package 列以保持响应性?
下面是我想做的事情:

Day 1   - Item  - Item
- Item  - Item  Day 4
- Item  Day 3   - Item
- Item  - Item  - Item
- Item  - Item  Day 5
Day 2   - Item  - Item
- Item  - Item  - Item

- Item  -Item    ...
- Item  ...
Day 6
- Item
- Item
- Item
- Item

我今天唯一的解决方案是用JS来计数项目并将其拆分成一排排flex Package 的列,这并不美观,有没有办法只用flexbox或grid来实现这一点?
下面是我所拥有的一个近似值:
x一个一个一个一个x一个一个二个x
(关联jsfiddle

jv2fixgn

jv2fixgn1#

你可以使用column-count属性,它不会将column 3中的“溢出”item Package 到column 1中的新row上,就像你希望它表现的那样,而是增加containerheight,并保持items的流不变。
我可以说这在可读性方面做得更好,但是我不知道你为什么希望container有一个max-height,但是如果第一个container开始溢出,你还希望在第一个container下面有一个新的container。这让我很困惑。如果你需要保留max-height,最好的选择是使用JS。
下面是使用column-count的例子。我添加了一个媒体查询的例子来使它响应,在小屏幕上column-count为1。

.back {
  background: red;
  width: 210px;
}

.container {
  column-count: 3;
  column-gap: 0;
}

.container > * {
  width: 100%;
  display: inline-block;
}

@media only screen and (max-width:600px) {
  .container {
    column-count: 1;
  }
}
<div class="back">
  <div class="container">
      <div class="day">Day 1</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="day">Day 2</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="day">Day 3</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="day">Day 4</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="day">Day 5</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="day">Day 6</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
      <div class="item">Item</div>
  </div>
</div>

相关问题