Создание равных колонок в CSS Grid: динамичная настройка
Быстрый ответ
Для создания колонок равной ширины с использованием CSS Grid, примените функцию repeat() совместно с единицами 1fr:
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr); /* Вот и весь фокус! */
}
Такая запись позволяет создать три колонки одинаковой ширины. Меняя числовое значение внутри repeat(), вы можете управлять количеством колонок без сложных математических вычислений.

Магия динамических колонок
При создании автоматически настраиваемой сетки колонок используйте свойство grid-auto-columns.
.grid-container {
display: grid;
grid-auto-flow: column; /* Позволим колонкам трансформироваться */
grid-auto-columns: 1fr; /* Это касается каждой из них */
}
В данном случае новые колонки автоматически подстраиваются так, чтобы занять порцию ширины контейнера, соответствующую их доле. Для точного контроля ширины колонок в пределах заданного минимума и максимума, примените функцию minmax:
.grid-container {
display: grid;
grid-auto-flow: column;
grid-auto-columns: minmax(100px, 1fr); /* Устанавливаем границы изменения ширины */
}
При такой настройке каждая колонка будет иметь ширину не менее 100 пикселей, но сможет расшириться и равномерно распределить доступное пространство между собой и другими колонками.
Разбираемся с единицами fr и процентами
Единицы fr – это отличный инструмент для гибкого распределения пространства сетки. В отличие от процентов, fr не учитывает отступы и границы элементов при расчете доступного пространства:
.grid-container {
display: grid;
grid-template-columns: 50% 50%; /* Может обмануть, учитывая padding и border */
grid-template-columns: 1fr 1fr; /* Этот способ безупречен! Он корректно учтет и отступы, и границы элементов */
}
Используйте fr, чтобы элементы всегда занимали равное пространство, вне зависимости от изменения размеров контейнера.
Держим руку на пульсе браузеров
Большинство современных браузеров уже поддерживают CSS Grid, но не стоит забывать о совместимости:
- Следите за обновлениями браузеров.
- Используйте директиву
@supportsдля поддержки устаревших версий.
Соблюдаем доступность
Учтите, что ваша сетка должна быть доступна для всех пользователей. Для этого:
- Используйте чистую и семантическую HTML-структуру.
- Проверьте работоспособность сетки с помощью экранных читалок.
- Правильно примените ARIA роли.
Визуализация
Для представления CSS-сетки можно взять воображаемый чистый лист в клетку, где каждая линия соответствует одной колонке:
До: |-|-|-|-|
|-|-|-|-|
После использования `grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));`
После: |-|-|-|-|
|-|-|-|-|
Каждая колонка займет равную часть пространства, обеспечивая унифицированное заполнение всей страницы.
CSS Grid и Flexbox
CSS Grid идеально подходит для создания двухмерных макетов, в то время как Flexbox предназначен для работы с одномерными структурами:
flex-growв Flexbox тоже распределяет пространство, но он не всегда удобен для создания колонок равной ширины.- CSS Grid прост и понятен, а применение единиц
1frзначительно облегчает создание колонок одинаковой ширины.
Попробуйте на практике!
Ознакомьтесь с практическим примером использования CSS Grid:
Выравнивание колонок
Для выравнивания элементов внутри сетки может пригодиться следующий "фокус" для выравнивания элементов на одной линии:
.item {
grid-row: 1; /* Все на одной линии */
}
Лучшие практики
- Используйте семантический HTML: только чистый и ясный код.
- Планируйте сетку заранее, перед началом кодирования.
- Создавайте адаптивные макеты: с помощью медиа-запросов и адаптивных единиц измерения добивайтесь гибкости дизайна.
Полезные материалы
- Макет сетки CSS на MDN — обстоятельное руководство от MDN по освоению макета сетки CSS.
- Полное руководство по CSS Grid в CSS-Tricks — детальное руководство для глубокого понимания CSS Grid.
- Основные концепции макета сетки на MDN — простое введение в ключевые понятия макета сетки CSS.
- Поддержка браузеров без Grid на Smashing Magazine — конкретные советы по обеспечению совместимости с браузерами, не поддерживающими CSS Grid.
- Grid by Example — множество практических примеров работы с CSS Grid.
- Создание продакшн-готовых CSS Grid макетов на Smashing Magazine — полезные рекомендации по созданию макетов для производства на основе CSS Grid.
- CSS в действии: невидимый контент на WebAIM — погрузитесь в тему доступности, изучите как обеспечить совместимость контента с экранными читалками.


