css - 使用 css 网格按类对列中的元素进行排序

标签 css css-grid

我正在尝试使用 css 网格(但不使用 JS)获取按类按列排序的 div 列表。

这是一个 HTML 示例:

<main>
<div class="A">A_1</div>
<div class="A">A_2</div>
<div class="B">B_1</div>
<div class="A">A_3</div>
<div class="D">D_1</div>
<div class="B">B_2</div>
<div class="C">C_1</div>
<div class="A">A_4</div>
<div class="B">B_3</div>
<div class="C">C_2</div>
<div class="A">A_N</div>
<div class="C">C_3</div>
<div class="B">B_4</div>
<div class="C">C_4</div>
<div class="B">B_N</div>
<div class="C">C_N</div>
<div class="D">D_2</div>
<div class="D">D_3</div>
<div class="D">D_4</div>
<div class="D">D_N</div>
</main>

所需的输出应如下所示:

-------------------------
|  A  |  B  |  C  |  D  |
-------------------------
| A_1 | B_1 | C_1 | D_1 |
-------------------------
| A_2 | B_2 | C_2 | D_2 |
-------------------------
| A_3 | B_3 | C_3 | D_3 |
-------------------------
| A_4 | B_4 | C_4 | D_4 |
-------------------------
| A_N | B_N | C_N | D_N |
-------------------------

有没有办法做到这一点?我试过使用 grid-template-areas 但要么我必须一个一个指定,要么 colum 中的元素相互重叠。

如果不能用网格实现,我该怎么做?

谢谢大家!

最佳答案

视觉上这可以通过 order 属性进行管理,但它不可扩展或动态。

main {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(5, 2em); /* number of rows is required - so not dynamic */
  grid-auto-flow: column;
}

.A {
  order: 1;
}

.B {
  order: 2;
}

.C {
  order: 3;
}

.D {
  order: 4;
}
<main>
  <div class="A">A_1</div>
  <div class="A">A_2</div>
  <div class="B">B_1</div>
  <div class="A">A_3</div>
  <div class="D">D_1</div>
  <div class="B">B_2</div>
  <div class="C">C_1</div>
  <div class="A">A_4</div>
  <div class="B">B_3</div>
  <div class="C">C_2</div>
  <div class="A">A_N</div>
  <div class="C">C_3</div>
  <div class="B">B_4</div>
  <div class="C">C_4</div>
  <div class="B">B_N</div>
  <div class="C">C_N</div>
  <div class="D">D_2</div>
  <div class="D">D_3</div>
  <div class="D">D_4</div>
  <div class="D">D_N</div>
</main>

关于css - 使用 css 网格按类对列中的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51844958/

相关文章:

html - 即使有前缀,CSS 网格布局在 IE11 中也不起作用

html - 导航链接不适用于 z-index

javascript - 取消选中时更改复选框样式

css - 如何填充 CSS 网格中的剩余列

css - 在 css 中动态地将 em 转换为 px?

html - CSS Grid 有 flex-grow 功能吗?

html - 使我的 div 可点击

javascript - 如何将元素翻译成里程表

css - 两列布局中的垂直对齐按钮

css - 如何使用具有百分比和未知数量列的 CSS 网格?