Разрыв строки заполняет фоновый цвет первым столбцом - PullRequest
0 голосов
/ 04 мая 2020

Я начал изучать CSS Сетка сегодня, и у меня есть сомнения. При использовании свойства gap вторая строка прекрасно отображает пробелы, но пробел первой строки заполняется цветом фона первого столбца. Я не понимаю почему.

div {
  height: 50px;
  text-align: center;
  font-weight: 600;
}

div:nth-child(1) {
  background-color: blueviolet;
}
div:nth-child(2) {
  background-color: coral;
}
div:nth-child(3) {
  background-color: darkgoldenrod;
}
div:nth-child(4) {
  background-color: darksalmon;
}
div:nth-child(5) {
  background-color: deeppink;
}
div:nth-child(6) {
  background-color: gold;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Flexbox</title>
    <link rel="stylesheet" href="./index.css" />

    <style>
      .container {
        display: grid;
        grid-template-columns: 100px auto 100px;
        grid-template-rows: 50px 50px;
        gap: 3px;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>5</div>
      <div>6</div>
    </div>
  </body>
</html>
ВЫХОД: Output

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Поскольку div:nth-child(6) 1 также применяется к вашему элементу контейнера, поскольку это шестой ребенок, рассматривающий другие элементы внутри тела.

enter image description here

Сделайте ваш селектор более точным c и нацеливайте только на div внутри .container, чтобы избежать такой проблемы:

div {
  height: 50px;
  text-align: center;
  font-weight: 600;
}

.container > div:nth-child(1) {
  background-color: blueviolet;
}
.container > div:nth-child(2) {
  background-color: coral;
}
.container > div:nth-child(3) {
  background-color: darkgoldenrod;
}
.container > div:nth-child(4) {
  background-color: darksalmon;
}
.container > div:nth-child(5) {
  background-color: deeppink;
}
.container > div:nth-child(6) {
  background-color: gold;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Flexbox</title>
    <link rel="stylesheet" href="./index.css" />

    <style>
      .container {
        display: grid;
        grid-template-columns: 100px auto 100px;
        grid-template-rows: 50px 50px;
        gap: 3px;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>5</div>
      <div>6</div>
    </div>
  </body>
</html>

Обратите внимание, что он не будет вести себя одинаково везде. Здесь во фрагменте :nth-child(6) применяется, но с использованием другого инструмента может применяться другой селектор в зависимости от того, как сгенерированы элементы.

1 В ваших выходных данных nth-child(1) применяется, потому что вы вероятно, выполняется локальное тестирование, где код не изменится, и ваш контейнер останется первым дочерним элементом.

Related: Как выбрать первого или последнего дочернего элемента с CSS правильным?

0 голосов
/ 04 мая 2020

div {
  height: 50px;
  text-align: center;
  font-weight: 600;
}

.container > div:nth-child(1) {
  background-color: blueviolet;
}
.container > div:nth-child(2) {
  background-color: coral;
}
.container > div:nth-child(3) {
  background-color: darkgoldenrod;
}
.container > div:nth-child(4) {
  background-color: darksalmon;
}
.container > div:nth-child(5) {
  background-color: deeppink;
}
.container > div:nth-child(6) {
  background-color: gold;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Flexbox</title>
    <link rel="stylesheet" href="./index.css" />

    <style>
      .container {
        display: grid;
        grid-template-columns: 100px auto 100px;
        grid-template-rows: 50px 50px;
        gap: 3px;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
      <div>5</div>
      <div>6</div>
    </div>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...