You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SASS设置Grid Template Areas不生效,无法实现预期两行网格布局

问题原因及修复方案

核心原因

你写的grid-template-areas属性被划掉,说明存在优先级更高的CSS规则覆盖了你的定义,最常见的场景是:

  • 代码里存在针对小屏幕的响应式媒体查询,其中定义了单列布局的grid-template-areas规则,要么选择器优先级高于你写的桌面端规则,要么书写顺序在你的规则之后,导致全局/对应断点下覆盖了你的原有定义。
  • 额外说明:你当前写的grid-template-areas: "bioimage bio bio" "aw1 aw2 aw3"实际是「2行3列」布局(每行字符串内的命名数量对应列数),并非你预期的6列,这也是预期效果不匹配的原因之一。

修复方法

1. 定位覆盖规则

打开浏览器开发者工具,点击被划掉的grid-template-areas属性旁的来源链接,就能找到生效的覆盖规则。如果是媒体查询内的移动端样式,按以下方式调整即可:

  • 如果你采用桌面端优先的写法,要把媒体查询(移动端适配)写在基础样式的后面,确保只有屏幕宽度小于阈值时才触发单列布局:
/* 桌面端基础样式 */
#about-a .about-info {
  display: grid;
  grid-template-areas: "bioimage bio bio" "aw1 aw2 aw3";
  grid-template-columns: repeat(3, 1fr); /* 明确列宽,避免渲染异常 */
  grid-gap: 1.2rem;
}

/* 小于768px时用单列布局 */
@media (max-width: 767px) {
  #about-a .about-info {
    grid-template-areas:
      "bioimage"
      "bio"
      "aw1"
      "aw2"
      "aw3";
  }
}

2. 调整为预期的2行6列布局

如果需要实现2行6列的效果,修改grid-template-areas和grid-template-columns即可,示例如下:

#about-a .about-info {
  display: grid;
  /* 第一行前2份给bioimage,后4份给bio;第二行每2份对应一个奖项 */
  grid-template-areas: "bioimage bioimage bio bio bio bio"
                        "aw1 aw1 aw2 aw2 aw3 aw3";
  grid-template-columns: repeat(6, 1fr); /* 明确6等宽列 */
  grid-gap: 1.2rem;
}

其他grid-area相关的定义无需修改。


内容的提问来源于stack exchange,提问作者Zayeem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:42:02