Задать вопрос
@Archi1ect

Css Grid Как правильно делать?

Здравствуйте!

Помогите студенту разобраться с CSS Grid. Первый раз взялся верстать с гридами и появились вопросы:

1. Здесь (на тостере) прочитал, что задать фон (background) grid-ячейке (или набору ячеек) нельзя.

Задать фон нельзя элементу у которого указан display: grid; или дочерним элементам по отношению к элементу у которого указан display: grid;? Или в обоих случаях нельзя? И почему?

2. В Css Grid дочерние элементы не наследуют раскладку прародителя, и приходится делать что то типа такого:

<div class="conteiner">

 <div class="header">
   <h1 class="logo"></h1>
   <form class="search"></form>
 </div>

 <div class="content">
 </div>

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

</div>


.conteiner
{
  display: grid;
  grid-template: 50px 1fr 50px / repeat(10, 1fr); /* Сетка страницы: 3 строки (1-50px, 3-50px, 2-все оставшееся пространство), 10 одинаковых столбцов*/
}

.header
{
  grid-area: 1 / 1 / span 1 / span 10; /* Позиционирование шапки (начинается с первой строки первого столбца и занимает одну строку и 10 столбцов) */
  display: grid;
  grid-template: 50px / 2fr 8fr;  /* Сетка для шапки: 1 строка в 50px, 2 столбца */
}

.logo
{
  grid-area: 1 / 1 / span 1 / span 2; /* Позиционирование логотипа */
}

.search
{
  grid-area: 1 / 3 / span 1 / span 8; /* Позиционирование формы поиска */
}


Т.е. я сначала задаю общую раскладку для страницы в классе conteiner (шапка, контент, футер), а потом для позиционирования элементов (логотипа и поиска) в шапке задаю новую раскладку в классе header.

И так приходится делать постоянно. Для позиционирования элементов внутри блока, приходится блоку задавать новую раскладку, а не пользоваться например родительской.

Правильно ли так делать? И есть ли другие способы?

Спасибо!
  • Вопрос задан
  • 236 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Профессиональная вёрстка на HTML и CSS
    3 месяца
    Далее
  • Stepik
    Основы HTML и CSS
    2 недели
    Далее
  • Бруноям
    Вёрстка на HTML и CSS
    3 месяца
    Далее
Решения вопроса 1
potapchino
@potapchino
1. Здесь (на тостере) прочитал, что задать фон (background) grid-ячейке (или набору ячеек) нельзя.

Задать фон нельзя элементу у которого указан display: grid; или дочерним элементам по отношению к элементу у которого указан display: grid;? Или в обоих случаях нельзя? И почему?
зачем вы задаете этот вопрос, когда можно открыть браузер и самому проверить?

Правильно ли так делать?
правильно

И есть ли другие способы?
есть костыль с display:contents.
еще есть subgrid, но они пока working draft
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Екатеринбург
от 50 000 до 90 000 ₽
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽