Gridstack.js поддерживает плавающий режим (floating mode), позволяющий виджетам перемещаться свободно внутри сетки, занимая минимально возможное пространство, не оставляя пустых промежутков между элементами. В обычном режиме сетка фиксирует элементы по рядам и колонкам, тогда как плавающий режим делает размещение динамическим, оптимизируя расположение блоков.
Для активации плавающего режима необходимо задать опцию
float при инициализации сетки:
const grid = GridStack.init({
float: true
});
Ключевые моменты:
float: true — элементы могут свободно «плыть» вверх при
наличии свободного пространства.float: false (значение по умолчанию) элементы
остаются в строгих рядах, даже если выше есть свободное место.В плавающем режиме Gridstack.js перераспределяет виджеты так, чтобы каждый блок занимал максимально верхнюю позицию, доступную в сетке. Это особенно важно при динамическом добавлении или удалении элементов.
Пример добавления нового виджета с автоматическим позиционированием:
grid.addWidget({
width: 2,
height: 2,
content: '<div class="grid-stack-item-content">Новый блок</div>'
});
При включенном float виджет автоматически поднимется
вверх, если выше есть свободное место, а соседние блоки сдвинутся для
оптимального заполнения пространства.
Плавающий режим влияет на алгоритм drag & drop:
grid.float(false); // временно фиксируем элементы
После завершения операций можно вернуть плавающий режим:
grid.float(true);
Gridstack.js предоставляет методы для оптимизации расположения виджетов:
grid.compact() — вручную инициирует
сжатие элементов вверх, что особенно полезно после массового удаления
блоков.grid.update() — обновляет позиции
элементов и сохраняет текущее состояние сетки.В плавающем режиме вызов compact() гарантирует
отсутствие пустых промежутков:
grid.compact();
Для улучшения визуального восприятия движения виджетов рекомендуется использовать CSS-анимацию при смене позиции. Gridstack.js автоматически применяет классы для перемещения блоков, но можно задать свои правила:
.grid-stack-item {
transition: all 0.2s ease-in-out;
}
Это делает процесс «плавания» элементов более естественным и динамичным.
cellHeight и
фиксированные размеры элементов.Плавающий режим особенно полезен для:
float: true при инициализации
сетки, если требуется свободное перемещение блоков.compact() после массовых изменений для
оптимизации расположения.Плавающий режим Gridstack.js превращает статичную сетку в динамичную и адаптивную структуру, позволяя автоматически оптимизировать пространство при изменении контента.