CSS Grid布局无法正确对齐 6行2列配置不生效问题求助
问题原因
Grid 布局的 grid-area 规则仅对网格容器的直接子元素生效,你当前的代码存在层级不匹配的问题:
#products、#story、#classes三个区块都是<main>的子元素,不是网格容器#container的直接子节点- 你在
#container中定义的products/story/classes三个网格区域找不到对应生效元素,属于无效配置 - 当前
#container实际只有 5 个直接子元素:<header>、<nav>、<main>、<aside>、<footer>,所以开发者工具只会识别到 5 行,和你配置的 6 行规则不符,同时所有内部区块的布局都会错乱。
解决方案(无需修改HTML)
给 <main> 元素添加 display: contents 属性即可,该属性会让 <main> 本身不渲染成盒子,它的所有子元素会直接参与父级 #container 的网格布局,完全匹配你预设的网格规则。
需要添加的CSS代码如下:
main { display: contents; }
修改后你原来定义的所有 grid-area 规则都会正常生效,6行2列的布局、区块跨列、classes和aside同排的效果都会符合预期。
内容的提问来源于stack exchange,提问作者MonkleBrain
相关产品推荐
相关产品推荐

