CSS-сетка создает пустые строки и столбцы

У меня есть сетка с 2 областями. Он отлично работает с grid-template-areas: "list details". Почему создается сетка 3x2, если я указываю только одну область: grid-template-areas: "list"? И почему он прикрепляет вторую область к нижней правой дорожке?

https://jsfiddle.net/o5txebkc/

#main {
    display: grid;
    grid-template-areas:
        "list";
}

    #main .list {
        background: yellow;
        grid-area: list;
    }

    #main .details {
        background: green;
        grid-area: details;
    }
<main id = "main">
  <article class = "list">
    <ul>
      <li>one</li>
      <li>two</li>
    </ul>
  </article>

  <article class = "details">
    <h3>Details</h3>
    <p>
      some details
    </p>
  </article>
</main>
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
2
0
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это

#main {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
}

#main .list {
    background: yellow;
}

#main .details {
    background: green;
}
<main id = "main">
  <article class = "list">
    <ul>
      <li>one</li>
      <li>two</li>
    </ul>
  </article>

  <article class = "details">
    <h3>Details</h3>
    <p>
      some details
    </p>
  </article>
</main>

ОП спрашивает «почему», а не «как». Между прочим, ответ без объяснения - довольно плохой ответ.

InSync 10.05.2023 21:31

@InSync Я не согласен, но спасибо за ваш комментарий

SteinTheRuler 10.05.2023 21:36

@SteinTheRuler спасибо за ответ, но я действительно искал ПОЧЕМУ :) Я могу делать то, что мне нужно, но хотел бы понять логику CSS, если вы не укажете всех дочерних элементов в областях сетки-шаблона.

John Smith 10.05.2023 21:39

@DenisD вы не определяете какую-либо область сведений. Может быть, поэтому

SteinTheRuler 10.05.2023 21:41

@SteinTheRuler да, потому что я ожидал, что он будет скрыт, если он не определен в областях сетки-шаблона. Может быть, в документах есть что-то, говорящее, что все элементы сетки должны быть указаны...

John Smith 10.05.2023 21:45
Ответ принят как подходящий

Используя инструменты разработчика, чтобы выделить сетку и показать линии, я вижу, что «детали» расположены за пределами явной сетки. (Обратите внимание на отрицательные номера строк.) Это поведение изменится, если вы удалите grid-area: details; из правила класса .details { }.

Поскольку вы определили область сетки для «деталей», но не указали для нее явную позицию в сетке, она помещается в неявную сетку в ближайшую строку и столбец, где она не касается именованных строк.


Неявная и явная сетка

  • Явная сетка: создана с использованием grid-template[-*].
  • Неявная сетка: расширяет заданную явную сетку, когда содержимое размещается за пределами этой сетки, например, в строки, путем рисования дополнительных линий сетки.


Счёт в обратном порядке

Мы также можем считать в обратном направлении от блочного и встроенного конца сетки... Эти строки могут быть адресованы как -1, и вы можете считать в обратном направлении от там – поэтому предпоследняя строка равна -2. Стоит отметить, что final line является последней строкой явной сетки... и не принимает во внимание учитывать любые строки или столбцы, добавленные в неявную сетку за пределами что.


значения «области сетки»

Если имя задано как <custom-ident>, будут доступны только строки с этим именем. подсчитано. Если существует недостаточно строк с таким именем, вся неявная сетка предполагается, что линии имеют это имя с целью нахождения этого позиция.

Вы можете быть на что-то здесь. Однако я четко вижу вертикальные линии 1,2,3,4 и горизонтальные линии 1,2,3,4 (3 и 4 свернуты в одну). pasteboard.co/KitFbtOeEYwW.png

John Smith 11.05.2023 16:28

Но обратите внимание на номера строк. «списки» заканчиваются на -1, а «детали» начинаются на 0

Tim R 11.05.2023 16:50

Я вижу, что ты говоришь. Трудно понять эти номера линий сетки. По сути, мораль этой истории такова: если у вас есть название области, вам лучше использовать его или приготовиться к экзотическому позиционированию.

John Smith 11.05.2023 17:45

Я отредактировал свой ответ, чтобы добавить ясности. В моем предыдущем комментарии я ошибся, сказав, что «подробности» начинаются в строке 0. Явная сетка начинается в строке 1 и заканчивается в строке -1 (для обратного счета). Все, что за ее пределами, является неявной сеткой.

Tim R 12.05.2023 00:42

Другие вопросы по теме