用 grid-area 或 grid-column/grid-row 可实现元素重叠,无需 absolute 定位;重叠顺序由 HTML 书写顺序决定,z-index 需配合 position: relative 才生效;需注意 overflow 裁剪、层叠上下文及可访问性问题。
直接用grid-area 或 grid-column/grid-row 把多个元素塞进同一网格区域,就能重叠——不需要 position: absolute,也不用手动算偏移。这是最直观的方式,适合语义明确、结构固定的覆盖场景(比如搜索面板盖在主内容上)。
display: grid 和 grid-template-areas,且命名区域要真实存在grid-area 值,例如都设为 "overlay"
z-index: 2;底层元素可设 z-index: 1 或不设(默认为 0)grid-area: "overlay" 若没在 grid-template-areas 里定义,元素会回退到自动定位,可能错位或不显示比命名区域更灵活,适合需要错位覆盖、部分交叠的场景(比如卡片右下角叠加标签)。
.a { grid-row: 1 / 3; grid-column: 1 / 3; }
.b { grid-row: 2 / 4; grid-column: 2 / 4; }
2 / 4),避免只写起点(如 2),后者等价于 2 / 3,容易误判跨度grid-column: -2 / -1 表示倒数第二列到最后一列span 更易维护:grid-column: 2 / span 2 比 2 / 4 更清晰表达“从第 2 列开始占 2 格”Grid 子项默认是 position: static,此时 z-index 被忽略——这不是 bug,是 CSS 层叠规则本身的要求。
position: relative(或 absolute、sticky)position: relative 来“启用”子项的 z-index,子项自己定位即可position: absolute,它会脱离网格轨道尺寸,需手动设宽高或用 inset: 0 填满所在格子z-index 值不用很大,1 和 2 就足够区分层级;负值慎用,可能被父容器裁切重叠本身不会触发裁剪,但常见配置会让内容意外消失。
overflow: hidden 或 clip-path,会直接截掉溢出部分outline: 2px dashed red(不占布局空间)和半透明背景,能快速验证覆盖范围z-index 只在该容器内有效;跨容器覆盖(比如弹窗盖住 Grid 卡片)得靠容器自身的 z-index