Gridstack.js предоставляет мощный механизм для построения адаптивных
сеток с возможностью динамического изменения структуры. Одним из
ключевых аспектов управления сеткой является изменение
количества колонок (columns) в реальном
времени, что позволяет создавать интерфейсы, оптимизированные под разные
размеры экранов или пользовательские сценарии.
columnКоличество колонок задаётся через свойство column при
инициализации сетки:
const grid = GridStack.init({
column: 12
});
Здесь сетка создаётся с 12 колонками. Каждая колонка пропорциональна
общей ширине контейнера, а размеры виджетов (grid items)
автоматически подстраиваются под это количество.
Важно: значение column должно быть
положительным целым числом.
Gridstack.js позволяет менять количество колонок после
инициализации сетки с помощью метода
grid.column():
grid.column(8);
Этот вызов изменяет сетку на 8 колонок и автоматически перераспределяет все существующие виджеты.
Ключевые моменты при динамическом изменении:
w, x) и пересчитывает их для новой
сетки.Для создания адаптивного интерфейса можно динамически менять количество колонок в зависимости от ширины окна:
function adjustColumns() {
const width = window.innerWidth;
if (width < 600) {
grid.column(2);
} else if (width < 900) {
grid.column(4);
} else {
grid.column(12);
}
}
window.addEventListener('resize', adjustColumns);
adjustColumns();
В этом примере сетка автоматически переключается между 2, 4 и 12 колонками, обеспечивая адаптивное расположение виджетов на мобильных устройствах, планшетах и десктопах.
При изменении количества колонок размеры виджетов пересчитываются относительно новой ширины сетки.
w – ширина виджета в колонках.x – позиция по оси X.autoPosition – если включено, виджеты автоматически
перемещаются, чтобы заполнить пустые ячейки.Пример сохранения позиции виджетов при смене количества колонок:
grid.batchUpdate(); // приостановка перерисовки
grid.column(6); // изменение количества колонок
grid.commit(); // применение изменений
Использование batchUpdate и commit
предотвращает мерцание интерфейса при массовом обновлении позиций.
Gridstack.js позволяет ограничивать сетку по минимальному и
максимальному числу колонок через опцию minColumn и
maxColumn:
const grid = GridStack.init({
column: 12,
minColumn: 2,
maxColumn: 16
});
Эти параметры полезны для интерфейсов, где недопустимо чрезмерное уменьшение или увеличение количества колонок, чтобы сохранить удобочитаемость и структуру виджетов.
w) для корректного перераспределения при
изменении колонок.resize.minW и maxW для
виджетов, чтобы избежать наложений.batchUpdate и commit, чтобы оптимизировать
производительность.minW,
maxW).autoPosition включён, виджеты автоматически
заполняют свободное пространство.change, added,
removed) корректно вызываются для обновлённого
расположения.Эти механизмы делают Gridstack.js гибким инструментом для построения адаптивных интерфейсов с динамическим количеством колонок.