Gridstack.js предоставляет мощный инструмент для построения интерактивных, сеточных интерфейсов с возможностью перетаскивания и изменения размера элементов. Статический режим является ключевой функциональностью, позволяющей зафиксировать сетку и её виджеты в неизменном состоянии, отключив любые действия пользователя.
Для активации статического режима используется параметр конфигурации
staticGrid. Его можно установить при инициализации
сетки:
const grid = GridStack.init({
staticGrid: true
});
true — сетка становится полностью статической, элементы
нельзя перемещать или изменять их размеры.false — стандартное поведение сетки с возможностью
интерактивного управления виджетами.Статический режим можно включать и динамически для уже существующей сетки:
grid.setStatic(true);
Аналогично, отключение статического режима выполняется:
grid.setStatic(false);
При staticGrid: true Gridstack.js автоматически
блокирует следующие возможности:
Важно отметить, что эти ограничения действуют только на интерфейс пользователя, программное добавление, удаление или изменение виджетов через API остаётся возможным:
grid.addWidget('<div class="grid-stack-item"><div class="grid-stack-item-content">Новый элемент</div></div>', {x:0, y:0, width:2, height:2});
Gridstack.js поддерживает responsive-сетки. В статическом режиме сетка остаётся адаптивной: виджеты сохраняют свои позиции и размеры при изменении ширины контейнера, но пользователь не может изменять их вручную. Это особенно полезно для:
Некоторые события Gridstack.js зависят от интерактивности:
dragstart, dragstop — не вызываются для
виджетов в статическом режиме.resizestart, resizestop — также не
активны.added, removed, change —
остаются доступными, если виджеты изменяются программно через API.Пример подписки на изменение сетки в статическом режиме:
grid.on('change', function(event, items) {
console.log('Изменения сетки', items);
});
Даже если пользователь не может перемещать элементы, можно обновлять их позиции и получать уведомления о таких изменениях.
Статический режим может быть применён не только к всей сетке, но и к
отдельным элементам с помощью опции noMove и
noResize при добавлении виджета:
grid.addWidget('<div class="grid-stack-item"><div class="grid-stack-item-content">Элемент</div></div>', {
x:0, y:0, width:2, height:2, noMove: true, noResize: true
});
Таким образом, можно комбинировать:
Дашборды для просмотра данных Отображение информации, где пользователь не должен изменять расположение графиков.
Сервисы с готовыми шаблонами Возможность подготовить макет, который остаётся фиксированным для всех пользователей.
Отчётные страницы Фиксированные таблицы и панели, где интерактивность не нужна, но адаптивность требуется.
staticGrid для случаев, когда изменение
структуры сетки пользователем не требуется.staticGrid и опции
noMove/noResize на отдельных виджетах.Статический режим Gridstack.js обеспечивает полный контроль над поведением сетки, позволяя фиксировать макет без потери возможностей программного управления виджетами через API.