javascript - 重新排序不同容器中的 html 元素
问题描述
我尝试按照特定逻辑重新排序我的项目,但无法使用 css 网格完成。我有这个html结构:
<div class="multi-column-row">
<div class="row">
<div>ITEM 1</div>
<div>ITEM 2</div>
<div>ITEM 3</div>
</div>
<div class="row">
<div>ITEM 4</div>
<div>ITEM 5</div>
<div>ITEM 6</div>
</div>
<div class="row">
<div>ITEM 7</div>
<div>ITEM 8</div>
<div>ITEM 9</div>
</div>
</div>
在桌面上,行是水平显示的,所以它看起来像这样:
ITEM 1 | ITEM 4 | ITEM 7
ITEM 2 | ITEM 5 | ITEM 8
ITEM 3 | ITEM 6 | ITEM 9
现在我想要实现的是当行垂直显示时在移动设备上跟随:
ITEM 1
ITEM 4
ITEM 7
ITEM 2
ITEM 5
ITEM 8
ITEM 3
ITEM 6
ITEM 9
即使列中的项目更多或更少,它也必须工作。在你问为什么我不直接按这个顺序放置项目并且有三行每列 3 列之前:) 是因为在桌面上我需要 3 列,里面有多个项目,就像一个砖石网格。
我感谢每一个帮助,甚至是重新排序 dom 元素的 javascript 解决方案
解决方案
这个答案不能很好地扩展,但可以使用 flexbox,display:contents
然后对.row
div 的内容进行排序。
.multi-column-row {
display: flex;
flex-direction: column;
}
.multi-column-row .row {
display: contents;
}
.multi-column-row .row :nth-child(1) {
order: 1;
}
.multi-column-row .row :nth-child(2) {
order: 2;
}
.multi-column-row .row :nth-child(3) {
order: 3;
}
<div class="multi-column-row">
<div class="row">
<div>ITEM 1</div>
<div>ITEM 2</div>
<div>ITEM 3</div>
</div>
<div class="row">
<div>ITEM 4</div>
<div>ITEM 5</div>
<div>ITEM 6</div>
</div>
<div class="row">
<div>ITEM 7</div>
<div>ITEM 8</div>
<div>ITEM 9</div>
</div>
</div>
推荐阅读
- html - 每当从一个 HTML 转换到另一个 HTML 时,导航栏的大小都会发生变化
- regex - 为 fail2ban 创建一个 cakephp 过滤器
- javascript - 将 async/await 与 for 循环和 mongodb 一起使用
- node.js - 找不到模块 './version' - Azure DevOps 上的 npm 安装失败
- java - 初学者 Java 项目:我的数组有什么问题?
- javascript - 如何基于json创建动态数组?
- python - PySpark 计数 groupby 与 None 键
- python - 从显示为“小时:分钟:秒.毫秒”的列值中获取毫秒作为双精度
- javascript - 有什么方法可以在 React 或 ES6+ 中排序对象?
- php - 将基于 ACF 字段的自定义“添加到购物车”按钮添加到 WooCommerce 单品页面