Vuetify использует систему сеток, основанную на
Flexbox, которая позволяет создавать адаптивные и
гибкие интерфейсы. Вложенные сетки — это способ структурирования сложных
компонентов, когда внутри одного ряда (v-row) размещается
другой ряд или колонка (v-col). Такой подход обеспечивает
высокий контроль над макетом и позволяет создавать сложные, но при этом
отзывчивые интерфейсы.
Базовая структура вложенной сетки в Vuetify выглядит следующим образом:
Основная колонка
Вложенная колонка 1
Вложенная колонка 2
Другая основная колонка
Ключевые моменты:
v-container служит оболочкой для всей сетки и добавляет
внутренние отступы.v-row создает горизонтальный ряд колонок.v-col определяет ширину колонки в 12-колоночной
системе.v-row и v-col могут находиться
внутри любого v-col.В Vuetify используется 12-колоночная сетка. При вложении важно помнить:
cols,
md, sm для адаптивности.Пример:
Родительская колонка
Вложенная колонка 50%
Вложенная колонка 50%
Здесь каждая вложенная колонка занимает половину ширины родителя, который сам может занимать 8 из 12 колонок всего ряда.
Vuetify предоставляет гибкие инструменты для управления расстоянием между элементами:
dense — уменьшает вертикальные и
горизонтальные отступы внутри ряда.no-gutters — убирает промежутки между
колонками.justify и align —
управляют горизонтальным и вертикальным выравниванием
соответственно.Пример вложенной сетки с выравниванием:
Левый блок
Вложенный 1
Вложенный 2
Правый блок
justify="space-between" распределяет колонки по
всей ширине ряда.align="center" выравнивает их по
вертикали.dense, чтобы уменьшить
промежутки.Для обеспечения корректного отображения на разных экранах вложенные сетки используют брейкпоинты:
xs — для экранов <600pxsm — 600–960pxmd — 960–1264pxlg — 1264–1904pxxl — >1904pxПример с адаптивными вложенными колонками:
Родитель
Вложенная колонка A
Вложенная колонка B
На маленьких экранах (xs) вложенные колонки займут всю
ширину родителя, а на экранах sm и выше — по половине
ширины.
Когда контент динамический (например, данные из API), важно учитывать, что высота родительской колонки автоматически подстраивается под высоту вложенных элементов, если не задан фиксированный размер. Для контроля высоты можно использовать:
class="fill-height" — заставляет колонку занимать всю
доступную высоту родителя.style="min-height: 200px" — задает минимальную высоту
для визуальной стабильности.Пример:
Динамический контент
{{ item.name }}
v-col, иначе поведение Flexbox будет
непредсказуемым.
Основная колонка
Верхний левый блок
Вложенный левый
Вложенный правый
Верхний правый блок
Боковая панель
Виджет 1
Виджет 2
Такой подход позволяет создавать комплексные интерфейсы с несколькими уровнями вложенности, при этом сохраняя отзывчивость и контроль над расположением элементов.