【问题标题】:Make a div in a grid stretch to full height使网格中的 div 拉伸到全高
【发布时间】:2022-11-24 23:19:36
【问题描述】:

我有一个非常简单的菜单、标题和内容的网格布局。

我希望内容(蓝色框)垂直拉伸。如您所见,网格元素(黄色框)已经垂直拉伸,但其中的蓝色元素(应该是动态内容)没有。

有没有办法实现这一点 1) 无需将整个网格结构切换为 flexbox 和 2) 无需使用 calc 将蓝色内容 100vh 减去标题高度?

.container {
  height: 100vh;
  display: grid;
  grid-template-rows: min-content 1fr;
  grid-template-columns: min-content 1fr;
  grid-template-areas: "menu header" "menu content";
  box-sizing: border-box;
  overflow: hidden;
}

.mainMenuWrapper {
  grid-area: menu;
  height: auto;
}

.headerWrapper {
  grid-area: header;
  height: auto;
}

.contentWrapper {
  grid-area: content;
  overflow-y: auto;
  height: auto;
  background-color: yellow;
}

.menu {
  height: 100vh;
  background-color: red;
  width: 50px;
}

.header {
  height: 80px;
  background-color: green;
}

.content {
  background-color: blue;
  width: 100%;
  height: ???
}
<div class="container">
  <div class="mainMenuWrapper">
    <div class="menu">
      menu
    </div>
  </div>
  <div class="headerWrapper">
    <div class="header">
      header
    </div>
  </div>
  <div class="contentWrapper">
    <div class="content">
      content
    </div>
  </div>
</div>

图片:

JSFiddle 链接:https://jsfiddle.net/the2sj1n/3/

【问题讨论】:

  • 你试过 height:100%; 吗?

标签: html css css-grid


【解决方案1】:

您可以在那个蓝色框.content上申请height: 100%

body {
  margin: 0; /*Removed unexpected margins from browsers' default styles*/
}

.container {
  height: 100vh;
  display: grid;
  grid-template-rows: min-content 1fr;
  grid-template-columns: min-content 1fr;
  grid-template-areas: "menu header" "menu content";
  box-sizing: border-box;
  overflow: hidden;
}

.mainMenuWrapper {
  grid-area: menu;
  height: auto;
}

.headerWrapper {
  grid-area: header;
  height: auto;
}

.contentWrapper {
  grid-area: content;
  overflow-y: auto;
  height: auto;
  background-color: yellow;
}

.menu {
  height: 100vh;
  background-color: red;
  width: 50px;
}

.header {
  height: 80px;
  background-color: green;
}

.content {
  background-color: blue;
  width: 100%;
  height: 100%; /*The change here*/
}
<div class="container">
  <div class="mainMenuWrapper">
    <div class="menu">
      menu
    </div>
  </div>
  <div class="headerWrapper">
    <div class="header">
      header
    </div>
  </div>
  <div class="contentWrapper">
    <div class="content">
      content
    </div>
  </div>
</div>

【讨论】:

  • OMG 它实际上不应该工作,我当然在我的真实项目中尝试过,但在这里它工作你是对的,对不起我可能做错了什么,我会检查非常感谢
  • 是的,我的链条中有一个额外的 div,所以它不允许 100% 的高度让它拉伸,非常感谢
猜你喜欢
  • 1970-01-01
  • 2011-06-04
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 2019-05-16
  • 2014-06-19
  • 2019-04-07
  • 2018-01-31
相关资源
最近更新 更多