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

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

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

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

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

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

Пошаговый план для смены профессии

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

При создании автоматически настраиваемой сетки колонок используйте свойство 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 — погрузитесь в тему доступности, изучите как обеспечить совместимость контента с экранными читалками.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как создать колонки равной ширины с использованием CSS Grid?
1 / 5