Создание равных колонок в 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 — погрузитесь в тему доступности, изучите как обеспечить совместимость контента с экранными читалками.