如何构建元素直接上下对齐的网格 实现仪表板布局块紧密堆叠
解决方案
你要实现的紧凑卡片堆叠属于典型的瀑布流网格布局,使用CSS Grid可以原生实现该效果,无需引入额外脚本。修改代码如下:
核心修改点
- 替换原有的浮动布局为Grid布局,新增/修改如下CSS规则:
/* 新增grid容器规则 */ .dashboard_flex { display: grid; grid-template-columns: repeat(5, var(--w1)); gap: var(--p); padding: 0 var(--p); } /* 给宽度类新增跨列配置 */ .w1 { width: 100%; grid-column: span 1; } .w2 { width: 100%; grid-column: span 2; } .w3 { width: 100%; grid-column: span 3; } .w4 { width: 100%; grid-column: span 4; } /* 给高度类新增跨行配置 */ .h1 { height: 100%; grid-row: span 1; } .h2 { height: 100%; grid-row: span 2; } .h3 { height: 100%; grid-row: span 3; } .h4 { height: 100%; grid-row: span 4; } .h5 { height: 100%; grid-row: span 5; } /* 调整widget样式,移除冗余规则 */ .widget { border-radius: 5px; background: var(--dashboard_bg); display: flex; align-items: center; justify-content: center; }
- 删除原有冗余规则:
- 移除
.widget选择器中的margin: var(--p)属性,卡片间距已通过Grid的gap属性统一控制 - 移除
.dashboard_flex .widget选择器中的float: left属性
修改后Grid会自动计算空间填充位置,卡片F会直接排列在A的正下方,卡片G会排列在B、C的正下方,不会出现多余空白间隙。
内容的提问来源于stack exchange,提问作者Houy Narun
相关产品推荐
相关产品推荐

