Оболочка элементов CSS Grid - PullRequest
2 голосов
/ 16 мая 2019

Может кто-нибудь объяснить мне, почему использование зазора в сетке переполняет элементы?В руководстве просто говорится, что ДОБАВЛЯЕТ пространство между предметами, не расширяя их каким-либо образом или чем-то подобным.

CODEPEN: Источник

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 Ответ

1 голос
/ 16 мая 2019

Таким образом, причина в том, что вы устанавливаете столбцы для использования 50% ширины родительского элемента, который также включает пробелы. Для CSS Grid было бы лучше использовать fr единицы для указания столбцов равной ширины.

В вашем случае, если вы используете 1fr 1fr или repeat(2, 1fr) вместо 50% 50%, вы фактически указываете сетке установить для ее столбцов 1 фракцию доступного пространства , это займет пробелы во внимание и не переполняют родителя.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...