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

HTML元素无法正确跨Grid Template Areas,仅占单个单元格求助

问题排查:Grid Templates元素仅占用单个单元格的原因及修复

你的核心问题是错误地将CSS的grid-area属性当作HTML原生属性使用,浏览器无法识别这个自定义属性,导致网格元素无法匹配到你定义的模板区域,因此默认只占用单个单元格。

修复步骤:

需要通过CSS为网格子元素设置grid-area属性,关联到grid-template-areas中定义的区域名称,而不是在HTML标签里写grid-area="xxx"。

修正后的完整代码:

<html>
  <head>
    <title>Test</title>
    <style>
@media screen {
    .grid-1 {                           /* main grid */
        display: grid;
        grid-template-areas:
        'main main'
        'opt1 opt2'
        'opt3 opt3'
        'subm ...';
        gap: 10px;
    }

    .grid-1 * {
        margin: 0;
        box-sizing: border-box;
        background-color: #ccc;
    }

    /* 关键:为每个元素设置对应的grid-area */
    .main { grid-area: main; }
    .opt1 { grid-area: opt1; }
    .opt2 { grid-area: opt2; }
    .opt3 { grid-area: opt3; }
    .subm { grid-area: subm; }
}

@media screen and (width < 60rem) {
    .grid-1 {
        grid-template-areas:
        'main main'
        'opt1 opt1'
        'opt2 opt2'
        'opt3 opt3'
        'subm ...';
    }
}
    </style>
  </head>
  <body>
    <div class="grid-1">
      <span class="main">Main</span>
      <span class="opt1">Options 1</span>
      <span class="opt2">Options 2</span>
      <span class="opt3">Options 3</span>
      <span class="subm">Submit</span>
    </div>
  </body>
</html>

补充说明:

  • HTML中没有grid-area这个原生属性,你之前写的<span grid-area="main">属于自定义属性,浏览器不会将其与CSS网格系统关联。
  • 必须通过CSS的grid-area属性,将子元素和grid-template-areas里的区域名称绑定,才能让元素跨单元格占据指定区域。
  • 你定义的grid-template-areas语法是正确的,包括用...表示空单元格的写法没问题。

内容的提问来源于stack exchange,提问作者U. Windl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:23:12