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

将3列网格网站模板改为2列并移除<nav>元素,求Grid布局指导

Grid布局问题解答:移除nav元素、改为2列及核心属性解析

一、核心Grid属性直白解析

1. 1fr 到底是什么?

1fr 是Grid的分数单位,专门用来瓜分容器的剩余空间。比如容器总宽度减去所有固定宽度的部分,剩下的空间会按fr的比例分配。举个例子,原来的200px 1fr 200px,就是左右各占200px固定宽度,中间的1fr把剩下的所有宽度全占了。

2. minmax(75px, auto) 怎么理解?

minmax() 就是给元素设置一个尺寸范围:第一个值是最小尺寸,第二个是最大尺寸。minmax(75px, auto) 意思很简单:这个元素的高度至少得有75px,要是里面的内容太多、超过75px了,元素就会自动撑开,跟着内容高度走。

二、彻底移除<nav>元素的操作步骤

要完全删掉nav,必须从HTML和CSS两处彻底清理:

1. HTML部分

直接把整个<nav>标签(包括里面的内容)删掉就行,剩下的结构只留header、main、aside、footer。

2. CSS部分

  • 删掉所有和nav相关的代码:包括.container里的nav网格区域配置,还有单独的nav选择器样式块
  • 修改grid-template-areas,把原来包含nav的区域删掉,重新规划网格布局
  • 把网格列数改成2列,重新分配每列的宽度
  • 媒体查询里的网格配置也要同步删掉nav相关的内容

三、修改后的完整代码

HTML代码

<div class="container">
  <header>
    this is the header
  </header>
  <main>
    this is the main
  </main>
  <aside>
    this is the aside
  </aside>
  <footer>
    this is the footer
  </footer>
</div>

CSS代码

body {
  margin: 0;
  padding: 0;
}

.container {
  display: grid;
  /* 2列布局:header和footer横跨2列,main和aside各占1列 */
  grid-template-areas: 
    "header header" 
    "content side" 
    "footer footer";
  /* 列宽配置:main占剩余全部空间,aside固定200px;也可以用1fr 1fr让两列均分宽度 */
  grid-template-columns: 1fr 200px;
  grid-template-rows: auto 1fr auto;
  grid-gap: 10px;
  height: 100vh;
}

header {
  grid-area: header;
  background: #baffc9;
  height: 100px;
}

main {
  grid-area: content;
}

aside {
  grid-area: side;
  margin-right: 0.5rem;
  background: #ffdfba;
}

footer {
  grid-area: footer;
  background: #bae1ff;
  height: 100px;
}

@media (max-width: 768px) {
  .container {
    /* 移动端改单列,去掉nav的位置 */
    grid-template-areas: 
      "header" 
      "content" 
      "side" 
      "footer";
    grid-template-columns: 1fr;
    grid-template-rows: 
      auto /* Header */
      1fr /* Content */
      minmax(75px, auto) /* Sidebar */
      auto; /* Footer */
  }
  aside {
    margin: 0;
  }
}

四、额外调整提示

  • 要是想让移动端的侧边栏保持最小高度,保留minmax(75px, auto)就行,它会保证侧边栏至少75px高,内容多了自动撑开
  • 2列布局的列宽可以按需改,比如用300px 1fr让main固定宽度,aside占剩余空间,或者1fr 1fr让两列均分宽度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:23:17