Gridstack.js предоставляет возможность управлять размерами виджетов на сетке через установку минимальных и максимальных значений ширины и высоты. Это критично для обеспечения адаптивности интерфейса и предотвращения непредсказуемого поведения при изменении размеров виджетов пользователем.
Минимальные размеры (minWidth и minHeight)
определяют, каких размеров не может достигнуть элемент при
перетаскивании или изменении размера. Например, если виджет
должен оставаться читаемым, можно ограничить его минимальную ширину и
высоту:
const grid = GridStack.init({
minWidth: 1, // минимальная ширина всех виджетов в ячейках
minHeight: 1 // минимальная высота всех виджетов в ячейках
});
grid.addWidget({
x: 0,
y: 0,
w: 3,
h: 2,
minW: 2,
minH: 1
});
Особенности:
minW и minH задаются в ячейках
сетки, а не в пикселях.minW/minH, они переопределяют
глобальные настройки сетки.maxW/maxH.Максимальные размеры (maxWidth и maxHeight)
ограничивают рост виджетов. Это особенно важно для элементов, которые
должны оставаться компактными или не перекрывать соседние виджеты при
растяжении:
grid.addWidget({
x: 0,
y: 0,
w: 2,
h: 2,
maxW: 4,
maxH: 3
});
Особенности:
maxW или maxH, Gridstack.js
автоматически фиксирует размер.minW/minH.Gridstack.js позволяет комбинировать глобальные и локальные ограничения:
minWidth, minHeight,
maxWidth, maxHeight) применяются ко всем
виджетам по умолчанию.minW, minH, maxW,
maxH) задаются для отдельного виджета при добавлении или
динамически через API.Пример динамического изменения размеров после инициализации:
const widget = grid.addWidget({
x: 1,
y: 1,
w: 3,
h: 2
});
// Ограничение размеров после добавления
widget.el.setAttribute('gs-min-w', 2);
widget.el.setAttribute('gs-max-w', 5);
grid.update(widget.el);
Особенности обновления:
gs-min-* и gs-max-*
напрямую на элементе требует вызова grid.update() для
применения.Gridstack.js интегрирует размеры с перетаскиванием и изменением размеров:
Пример использования с включенным ресайзом:
grid.addWidget({
x: 0,
y: 0,
w: 3,
h: 2,
minW: 2,
minH: 1,
maxW: 4,
maxH: 3,
resizable: { handles: 'all' }
});
column или
при адаптивной сетке.grid-auto-rows и
grid-column/grid-row. Неправильное определение
размеров CSS может приводить к визуальным несоответствиям.Gridstack.js предоставляет методы для получения и установки ограничений:
getNode(el) – возвращает объект виджета с
minW, minH, maxW,
maxH.update(el, opts) – обновляет размеры и ограничения
виджета.makeWidget(el, opts) – добавляет новые ограничения при
создании элемента.Пример изменения ограничений через API:
let node = grid.getNode(widget.el);
node.minW = 2;
node.maxW = 6;
grid.update(widget.el, node);
Минимальные и максимальные размеры – фундаментальный инструмент для создания устойчивых, адаптивных и управляемых интерфейсов в Gridstack.js. Они обеспечивают контроль над поведением виджетов и позволяют создавать сложные, интерактивные панели без хаоса в расположении элементов.