如何处理网格溢出?

时间:2019-07-18 01:00:20

标签: html css css-grid

我创建了一个Codepen来说明我现在面临的问题 https://codepen.io/marcdaframe/pen/qeBWNd

<div>
 123 abc
  <div class="container">
<div class="wrapper">
   <div>One</div>
   <div>Two</div>
   <div>Three</div>
   <div>Four</div>
   <div>Five</div>
   <div>Six</div>
   <div>Seven</div>
   <div>Eight</div>
  </div></div>
Hello World
</div>
* {box-sizing: border-box;}
.container{
  height: 25%;
  overflow-y: scroll;
}
.wrapper {
    border: 2px solid #f76707;
    border-radius: 5px;
    background-color: #fff4e6;
}

.wrapper > div {
    border: 2px solid #ffa94d;
    border-radius: 5px;
    background-color: #ffd8a8;
    padding: 1em;
    color: #d9480f;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
  grid-auto-rows: 100px 200px;
}

我有一个容器,该容器的高度以百分比定义(它确实可以设置绝对值,但是我无法使用绝对值或vh),该网格的div高度为25%,并且任何溢出都应滚动,但div中的网格不尊重这一点。

2 个答案:

答案 0 :(得分:1)

使用高度:25%时,您需要定义高度的25%。 因此,要使25%的工作有效,您需要为所有父容器赋予100%的高度,直到body和html。

有效地使25%的人工作所需的其他样式是:

html,body {
   height:100%;
}
body > div {
  height:100%;
}

注意:仅“容器” div的父div需要上述div样式。 希望它能帮助您理解问题。

答案 1 :(得分:0)

您可以将整体高度设置为100%,然后将子DIV设置为整体高度的百分比。请注意,笔中的第一个DIV也必须具有设定的高度。 这是经过编辑的笔: https://codepen.io/witnauer/pen/LwYPMx

* {box-sizing: border-box;height: 100%}
.outermost {
  height: 25%;
}
.container{
  height:25%;
  overflow-y: scroll;
}
.wrapper {
    border: 2px solid #f76707;
    border-radius: 5px;
    background-color: #fff4e6;
}

.wrapper > div {
    border: 2px solid #ffa94d;
    border-radius: 5px;
    background-color: #ffd8a8;
    padding: 1em;
    color: #d9480f;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
  grid-auto-rows: 100px 200px;
}

<div class="outermost">
 123 abc
  <div class="container">
<div class="wrapper">
   <div>One</div>
   <div>Two</div>
   <div>Three</div>
   <div>Four</div>
   <div>Five</div>
   <div>Six</div>
   <div>Seven</div>
   <div>Eight</div>
  </div></div>
Hello World
</div>