CSS网格项溢出包装器

时间:2019-05-15 21:22:13

标签: html css css3 css-grid

有人可以解释一下为什么包装器中使用grid-gap会使项目溢出吗?手册只是说它在项目之间添加了空间,没有以任何方式扩展它们。

CODEPEN: Source

body {
  margin: 0
}

.wrapper {
  display: grid;
  grid-template-columns: 50% 50%;
  grid-gap: 10px;
  border: 1px solid black;
  padding: 10px;
  margin: 0 auto;
  max-width: 800px;
}

.header {
  grid-column: 1/3;
  background: red
}

.footer {
  grid-column: 1/3;
  background: green
}

.item {
  padding: 10px
}

.content {
  height: 180px
}

.image {
  background: yellow
}

.desc {
  background: blue
}

@media screen and (min-width:768px) {
  .content {
    grid-column: 1/3
  }
}
<div class="wrapper">
  <div class="item header">Header</div>
  <div class="item content image">Image</div>
  <div class="item content desc">Description</div>
  <div class="item content image">Image</div>
  <div class="item content desc">Description</div>
  <div class="item footer">Footer</div>
</div>

1 个答案:

答案 0 :(得分:1)

因此,原因实际上是您将列设置为使用父级宽度的50%,其中还包括间隙。对于CSS Grid,最好使用fr单位来指定宽度相等的列。

在您的情况下,如果您使用1fr 1frrepeat(2, 1fr)而不是50% 50%,则实际上是告诉网格将其列设置为可用空间的一小部分,这将考虑到差距并且不会溢出父项。

body {
  margin: 0
}

.wrapper {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-gap: 10px;
  border: 1px solid black;
  padding: 10px;
  margin: 0 auto;
  max-width: 800px;
}

.header {
  grid-column: 1/3;
  background: red
}

.footer {
  grid-column: 1/3;
  background: green
}

.item {
  padding: 10px
}

.content {
  height: 180px
}

.image {
  background: yellow
}

.desc {
  background: blue
}

@media screen and (min-width:768px) {
  .content {
    grid-column: 1/3
  }
}
<div class="wrapper">

  <div class="item header">Header</div>

  <div class="item content image">Image</div>
  <div class="item content desc">Description</div>

  <div class="item content image">Image</div>
  <div class="item content desc">Description</div>

  <div class="item footer">Footer</div>

</div>