Как это сделать в grid?

Ссылка скопирована
1 ответ

Есть такая верстка https://codepen.io/andrku/pen/PoyEgKQ
Есть 3 ряда по 3 элемента
В первом ряду 3 элемента (плитки) и высота отличается от других элементов .Возможно ли сделать так, что
если блок с текстом в элементе больше чем скажем 20px высота элемента увеличивалась до 50px но важно
что-бы и у соседних элементов в РЯДУ тоже увеличивалась высота.Нужно это сделать
динамически возможно скриптом но как? Нужно хотя-бы направление мысли

Дополнительно:

замени просто height на min-height

  • Надо вот так и только в ряду где есть длинный текст,если в ряду нет элементов с длинным текстом то
    высота наименьшая или min-height нужно где-то в grid-template-rows прописать? а не в элементе

    Как это сделать в grid?

  • Ну если без скрипта то приходит в голову разве что сделать карточкам display: contents и расставить grid-row правильно для их детей, получишь сетку где ряд цветных квадратов, ряд текстов, снова ряд квадратов и так далее, тогда вопрос элементарный, грид-ребенок в высоту своей ячейки)
  • imko, может подскажите как со скриптом сделать?возможно проще будет
  • Андрей Кузнецов

    Есть 3 ряда по 3 элемента

    Количество рядов может изменяться?

  • Михаил Р., да рядов может быть гораздо больше и при адаптации в ряду может быть и 2 и 1 элемент
  • Андрей Кузнецов, возможно вам поможет вот этот пример, там как раз про одинаковую высоту блоков по строкам
    snippet
  • Андрей Кузнецов, ну просто после загрузки страницы пройтись по всем блокам с текстом, найти максимум из их высот и либо напрямую его каждому указать либо загнать в сцц-переменную для общего родителя а стилями уже из этой переменной их взять. Не очень хороший подход потому что требует дожидаться загрузки и не может реагировать на изменения текста после того как отработает, нужно будет вешать слушатель ресайза и в общем мороки дофига чтобы достичь того же результата как при использовании моего первого варианта с цсс
  • imko, благодарю за Ваши отклики.Нашел более простое решение
    grid-template-columns: repeat(auto-fit, minmax(000px, 1fr)); работает идеально
  • Андрей Кузнецов, не очень понял как это работает, можно покажете песочницу?)
  • imko, https://codepen.io/andrku/pen/PoyEgKQ
  • Андрей Кузнецов, а понял. Ну в такой ситуации в принципе прокатит, я думал над более универсальным вариантом для любого набора детей карточки чтобы не случалось таких вещей

    Как это сделать в grid?

  • да рядов может быть гораздо больше и при адаптации в ряду может быть и 2 и 1 элемент

    CSS Grid Layout, параметры сетки, включая высоту строк, определяются на уровне родительского контейнера, а не внутри отдельных строк или ячеек.

    Соответственно только js, я ищу блоки с текстом, чекаю их высоту, и при необходимости - увеличиваю минимальную высоту этого блока (150px для наглядности):
    snippet

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Елена Вебер Ответ

    Для создания сетки веб-страниц с использованием CSS Grid, вам следует следовать нескольким шагам:

    1. Определите контейнер сетки, установив для него свойство display: grid. Это можно сделать с помощью следующего CSS кода:

    .grid-container {
      display: grid;
    }

    .grid-container { display: grid; }

    2. Определите количество столбцов и строки в сетке с помощью свойств grid-template-columns и grid-template-rows. Например, чтобы создать сетку с тремя столбцами и двумя строками, используйте следующий CSS код:

    .grid-container {
      display: grid;
      grid-template-columns: auto auto auto;
      grid-template-rows: auto auto;
    }

    .grid-container { display: grid; grid-template-columns: auto auto auto; grid-template-rows: auto auto; }

    3. Разместите элементы в нужные им ячейки с помощью свойства grid-column и grid-row. Например, чтобы разместить элемент во второй столбец и первой строке, используйте следующий CSS код:

    .grid-item {
      grid-column: 2;
      grid-row: 1;
    }

    .grid-item { grid-column: 2; grid-row: 1; }

    4. Для создания отступов между элементами в сетке используйте свойства grid-column-gap и grid-row-gap. Например, чтобы установить отступы в 10 пикселей между столбцами и строками, используйте следующий CSS код:

    .grid-container {
      display: grid;
      grid-template-columns: auto auto auto;
      grid-template-rows: auto auto;
      grid-column-gap: 10px;
      grid-row-gap: 10px;
    }

    .grid-container { display: grid; grid-template-columns: auto auto auto; grid-template-rows: auto auto; grid-column-gap: 10px; grid-row-gap: 10px; }

    5. При необходимости, вы также можете использовать свойство grid-gap для установки одновременно отступов между столбцами и строками. Например:

    .grid-container {
      display: grid;
      grid-template-columns: auto auto auto;
      grid-template-rows: auto auto;
      grid-gap: 10px;
    }

    .grid-container { display: grid; grid-template-columns: auto auto auto; grid-template-rows: auto auto; grid-gap: 10px; }

    Это основные шаги для создания сетки веб-страниц с использованием CSS Grid. Не забудьте поддерживаемость браузеров и при необходимости использовать вендорные префиксы для старых версий браузеров.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно