ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Создание равных колонок в CSS Grid: динамичная настройка

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для создания колонок равной ширины с использованием CSS Grid, примените функцию repeat() совместно с единицами 1fr:

CSS
Скопировать код
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* Вот и весь фокус! */
}

Такая запись позволяет создать три колонки одинаковой ширины. Меняя числовое значение внутри repeat(), вы можете управлять количеством колонок без сложных математических вычислений.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Магия динамических колонок

При создании автоматически настраиваемой сетки колонок используйте свойство grid-auto-columns.

CSS
Скопировать код
.grid-container {
  display: grid;
  grid-auto-flow: column; /* Позволим колонкам трансформироваться */
  grid-auto-columns: 1fr; /* Это касается каждой из них */
}

В данном случае новые колонки автоматически подстраиваются так, чтобы занять порцию ширины контейнера, соответствующую их доле. Для точного контроля ширины колонок в пределах заданного минимума и максимума, примените функцию minmax:

CSS
Скопировать код
.grid-container {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(100px, 1fr); /* Устанавливаем границы изменения ширины */
}

При такой настройке каждая колонка будет иметь ширину не менее 100 пикселей, но сможет расшириться и равномерно распределить доступное пространство между собой и другими колонками.

Разбираемся с единицами fr и процентами

Единицы fr – это отличный инструмент для гибкого распределения пространства сетки. В отличие от процентов, fr не учитывает отступы и границы элементов при расчете доступного пространства:

CSS
Скопировать код
.grid-container {
  display: grid;
  grid-template-columns: 50% 50%; /* Может обмануть, учитывая padding и border */
  grid-template-columns: 1fr 1fr; /* Этот способ безупречен! Он корректно учтет и отступы, и границы элементов */
}

Используйте fr, чтобы элементы всегда занимали равное пространство, вне зависимости от изменения размеров контейнера.

Держим руку на пульсе браузеров

Большинство современных браузеров уже поддерживают CSS Grid, но не стоит забывать о совместимости:

  • Следите за обновлениями браузеров.
  • Используйте директиву @supports для поддержки устаревших версий.

Соблюдаем доступность

Учтите, что ваша сетка должна быть доступна для всех пользователей. Для этого:

  • Используйте чистую и семантическую HTML-структуру.
  • Проверьте работоспособность сетки с помощью экранных читалок.
  • Правильно примените ARIA роли.

Визуализация

Для представления CSS-сетки можно взять воображаемый чистый лист в клетку, где каждая линия соответствует одной колонке:

Markdown
Скопировать код
До: |-|-|-|-|
    |-|-|-|-|

После использования `grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));`

После: |-|-|-|-|
        |-|-|-|-|

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

CSS Grid и Flexbox

CSS Grid идеально подходит для создания двухмерных макетов, в то время как Flexbox предназначен для работы с одномерными структурами:

  • flex-grow в Flexbox тоже распределяет пространство, но он не всегда удобен для создания колонок равной ширины.
  • CSS Grid прост и понятен, а применение единиц 1fr значительно облегчает создание колонок одинаковой ширины.

Попробуйте на практике!

Ознакомьтесь с практическим примером использования CSS Grid:

Выравнивание колонок

Для выравнивания элементов внутри сетки может пригодиться следующий "фокус" для выравнивания элементов на одной линии:

CSS
Скопировать код
.item {
  grid-row: 1; /* Все на одной линии */
}

Лучшие практики

  • Используйте семантический HTML: только чистый и ясный код.
  • Планируйте сетку заранее, перед началом кодирования.
  • Создавайте адаптивные макеты: с помощью медиа-запросов и адаптивных единиц измерения добивайтесь гибкости дизайна.

Полезные материалы

  1. Макет сетки CSS на MDN — обстоятельное руководство от MDN по освоению макета сетки CSS.
  2. Полное руководство по CSS Grid в CSS-Tricks — детальное руководство для глубокого понимания CSS Grid.
  3. Основные концепции макета сетки на MDN — простое введение в ключевые понятия макета сетки CSS.
  4. Поддержка браузеров без Grid на Smashing Magazine — конкретные советы по обеспечению совместимости с браузерами, не поддерживающими CSS Grid.
  5. Grid by Example — множество практических примеров работы с CSS Grid.
  6. Создание продакшн-готовых CSS Grid макетов на Smashing Magazine — полезные рекомендации по созданию макетов для производства на основе CSS Grid.
  7. CSS в действии: невидимый контент на WebAIM — погрузитесь в тему доступности, изучите как обеспечить совместимость контента с экранными читалками.