css 蛇形排序
先看效果

需求:
一个【 4 * ?】的网格布局,奇数行 布局 从左往右,偶数行 布局 从右往左。
思路1:
js将数组按4个每份进行分割,将偶数份进行反向,然后再将分割后的数据,重新组装。( 太麻烦,劝退。)
思路2:
flex布局,然后用order属性来更改排列顺序。
补充:
order 属性 : 控制 flex 子项目 的排列顺序 ; 主要是修改前后顺序 , 原来是 1 - 2 - 3 排列顺序 , 可以将其改为 2 - 1 - 3 排列顺序 ;
默认值 : order 子项目属性 的默认值为 0 ;
属性值 是数值 , 数值越小 , 排列越靠前 ;
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<title>蛇形排序</title>
<meta charset="UTF-8" />
<meta name="Author" content="" />
<meta name="Keywords" content="" />
<meta name="Description" content="" />
</head>
<body>
<div class="list">
<div class="item" style="--i: 0"><span> 1 </span></div>
<div class="item" style="--i: 1"><span> 2 </span></div>
<div class="item" style="--i: 2"><span> 3 </span></div>
<div class="item" style="--i: 3"><span> 4 </span></div>
<div class="item" style="--i: 4"><span> 5 </span></div>
<div class="item" style="--i: 5"><span> 6 </span></div>
<div class="item" style="--i: 6"><span> 7 </span></div>
<div class="item" style="--i: 7"><span> 8 </span></div>
<div class="item" style="--i: 8"><span> 9 </span></div>
<div class="item" style="--i: 9"><span> 10 </span></div>
<div class="item" style="--i: 10"><span> 11 </span></div>
<div class="item" style="--i: 11"><span> 12 </span></div>
</div>
<style type="text/css">
.list {
display: flex;
width: 100%;
gap: 40px;
flex-wrap: wrap;
}
.item {
width: calc((100% - 120px) / 4);
aspect-ratio: 3/1;
background: royalblue;
color: #fff;
font-size: 30px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
order: var(--i);
}
.item:nth-child(8n + 5) {
order: calc(var(--i) + 3);
}
.item:nth-child(8n + 6) {
order: calc(var(--i) + 1);
}
.item:nth-child(8n + 7) {
order: calc(var(--i) - 1);
}
.item:nth-child(8n + 8) {
order: calc(var(--i) - 3);
}
</style>
</body>
</html>

浙公网安备 33010602011771号