В библиотеке Muuri конструктор Grid
является центральным элементом, отвечающим за создание и управление
сеткой элементов на странице. Создание сетки начинается с вызова
конструктора и передачи ему контейнера, содержащего элементы, которые
должны быть организованы.
const grid = new Muuri('.grid');
В этом примере '.grid' — CSS-селектор контейнера, внутри
которого Muuri найдет все дочерние элементы и превратит их в
items.
Конструктор Grid поддерживает множество опций,
позволяющих тонко настраивать поведение сетки:
items — массив HTML-элементов или объектов
Muuri.Item, которые будут добавлены в сетку при
инициализации.
layout — объект конфигурации для управления размещением элементов:
fillGaps — Boolean, определяет, будет ли сетка
автоматически заполнять пустые места при изменении размеров
элементов.horizontal — Boolean, указывает, будет ли сетка
горизонтальной вместо вертикальной.alignRight / alignBottom — выравнивание
элементов в контейнере.dragEnabled — Boolean, включает или отключает возможность перетаскивания элементов.
dragSort — Boolean или функция, позволяющая автоматически сортировать элементы при перетаскивании.
layoutOnInit — Boolean, указывает, выполнять ли автоматическое выравнивание элементов сразу после создания сетки.
const grid = new Muuri('.grid', {
dragEnabled: true,
layout: {
fillGaps: true
}
});
Конструктор создает объект, который предоставляет широкий набор методов для управления сеткой:
grid.add(document.querySelectorAll('.new-item'));
grid.layout();
Конструктор Grid позволяет подписываться на множество событий для динамического управления сеткой:
Пример подписки на событие:
grid.on('layoutEnd', () => {
console.log('Раскладка завершена');
});
Drag-and-drop — одно из ключевых преимуществ Muuri. Параметры конструктора позволяют гибко управлять поведением:
const grid = new Muuri('.grid', {
dragEnabled: true,
dragSort: true,
dragReleaseDuration: 400,
dragReleaseEasing: 'ease'
});
Конструктор Grid позволяет связывать несколько сеток для перемещения
элементов между ними. Для этого используется опция dragSort
с массивом других сеток:
const grid1 = new Muuri('.grid1', { dragEnabled: true });
const grid2 = new Muuri('.grid2', { dragEnabled: true });
grid1.on('dragReleaseEnd', (item) => {
grid2.add(item.getElement());
});
Метод layout можно вызывать с параметрами для тонкой
настройки анимации:
grid.layout({
instant: false,
onFinish: () => console.log('Новая раскладка завершена')
});
Каждый элемент, добавленный через Grid, оборачивается объектом
Muuri.Item, который предоставляет методы для управления
конкретным элементом:
const items = grid.getItems();
items[0].hide();
queue: true, чтобы минимизировать количество
перерасчетов.Конструктор Grid объединяет:
Эта функциональность делает Muuri Grid гибким инструментом для построения интерактивных и адаптивных интерфейсов.