如何创建一个有3行的网格布局,使这些行填满整个屏幕,即使这些行是空的?

例如,页眉和页脚的大小分别为100px和50px.中间的网格行(主区域)应该会填满剩余的屏幕.

.grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 100px auto 50px;
}

header {
  grid-column: 1/2;
  grid-row: 1/2;
  background-color: bisque;
}

main {
  grid-column: 1/2;
  grid-row: 2/3;
  background-color: chocolate;
}

footer {
  grid-column: 1/2;
  grid-row: 3/4;
  background-color: darkolivegreen;
}
<body class="grid">

  <header>
    Header
  </header>

  <main>
    Main
  </main>


  <footer>
    Footer
  </footer>

</body>

我在这里读过类似的问题,但没有找到合适的(我也是网页设计的初学者).

enter image description here

推荐答案

有两种解决方案,好的和不好的:

  1. 确定parent div高度并使用1fr
.grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: 100px 1fr 50px;
  min-height: 100vh;
}
  1. go 掉grid-template-rows,分别测定 children 身高
.grid {
  display: grid;
  grid-template-columns: 1fr;
}

header {
  background-color: bisque;
  height: 100px;
}

main {
  background-color: chocolate;
  height: calc(100vh - 250px);
}

footer {
  background-color: darkolivegreen;
  height: 150px;
}

正如我提到的,可以说,第一种解决方案要复杂得多……

Html相关问答推荐

为什么html复选框总是具有只读属性?

在浮动元素旁边垂直居中

为什么XPath返回的元素比我预期的要多?

如何在将文本垂直居中的同时将文本右对齐?

摆动的html标签

如何使不断增长的div不溢出其包含固定div的父级

为什么我得不到有错误的字段?迈克尔·哈特尔教程.7.3.3

如何使用css在响应图像后面添加形状?

使用shinyjqui拖放到网格表中

jquery向单词中的一组字母添加跨度

在选项标签中如何添加Django模板的条件

如何让一个 div 元素粘在另一个元素上?

如何使用动画拆分和对齐文本块

奇怪的幻影 div 命名为

如何将自定义图像插入 Shiny plot header?

单击时 HTML 锚元素不重定向到相对路径

使用 rgba() 的 css 中的边框不透明度不起作用

下拉菜单项在页面加载时显示,需要隐藏直到悬停

我的卡片内容无法在 bootstrap 5 中正确居中

如何计算没有根元素的先前 html 标记(lxml python3)编辑:还获取元素