效果图
HTML代码
VSCode快速生成
div.container>div.line3>div.item10
<div class="container">
<div class="line">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="line">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<div class="line">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
CSS代码
body {
/* 边距不设为0,左移的元素会加宽 */
margin: 0;
--ww: calc(100vw / 9);
}
.container {
overflow: hidden;
}
.line {
display: flex;
}
/* 偶数行左移 */
.line:nth-child(even) {
margin-left: calc(var(--ww) / -2);
}
/* 第1行之后的元素上移 */
.line:nth-child(1)~.line {
margin-top: -1.5vw;
}
.item {
width: var(--ww);
height: var(--ww);
background: #000;
/* 六边形裁剪 */
clip-path: polygon(50% 0%, 95% 25%, 95% 75%, 50% 100%, 5% 75%, 5% 25%);
/* 静态盒子取消压缩 */
flex-shrink: 0;
}