

新闻资讯
技术学院推荐用 fr 单位和 minmax() 写 grid-template-columns/rows,避免像素百分比导致响应断裂;fr 适配弹性空间,minmax(200px,1fr) 保最小宽均分;IE 需 -ms-grid 回退。
直接用像素或百分比写列宽,容易在响应式场景下断裂。推荐优先用 fr 单位分配剩余空间,配合 minmax() 控制弹性范围。
grid-template-columns: 1fr 2fr 表示两列按 1:2 比例均分容器宽度grid-template-columns: repeat(3, minmax(200px, 1fr)) 创建至少 200px 宽、最多均分的三列,适配缩放auto 和固定值(如 100px auto 100px),auto 可能因内容撑开导致意外溢出fr,若需兼容,得用 display: -ms-grid 回退方案(但已不推荐)前两者控制**网格项(grid item)在单元格内的对齐**,后两者控制**整个网格容器(grid container)在父容器中的对齐及行/列间距**。
justify-items: center → 所有子项水平居中于各自单元格内align-content: space-between → 当有多行且高度未填满时,各行沿块轴(垂直方向)等距分布justify-content 调整整体水平位置,但对 align-content 无效(因为只有一行)grid-auto-rows: 100px 但内容超长,align-items: start 会让内容从顶部开始溢出,不是裁剪用命名区域 + grid-template-areas 是最直观的方式,尤其适合语义化结构(header / main / aside / footer)。
body {
display: grid;
grid-template-areas:
"hd hd hd"
"sd mn mn"
"ft ft ft";
grid-template-
rows: 60px 1fr 40px;
grid-template-columns: 200px 1fr 1fr;
}
header { grid-area: hd; }
aside { grid-area: sd; }
main { grid-area: mn; }
footer { grid-area: ft; }
main-nav ❌),可用下划线(main_nav ✅). 占位(如 "hd . mn"),但注意 . 不是“透明”,而是“无区域”——那里不会渲染任何元素Header 和 header 是两个不同区域Grid 项之间的 margin 默认不会叠加(不像 Block 流),但**相邻项的外边距也不会合并(collapse)**;真正常见问题是:你设了 margin,却发现没效果——大概率是因为用了 justify-self 或 align-self,它们会覆盖 margin 的对齐作用。
margin: auto 仍可居中单个子项(水平+垂直),但仅当该方向上有剩余空间时才生效gap 属性替代了旧式 margin hack,它只作用于网格轨道之间,不影响子项自身 marginmargin 依然起作用,但不会影响 Grid 的轨道计算grid-container 加 outline: 1px solid red,再给子项加 background: rgba(0,0,0,0.1),能快速看清实际占位与 margin 是否被压缩auto,可能让内容挤成一团。务必用 grid-auto-rows 或 grid-auto-columns 显式约束。