Метод filter является одним из ключевых инструментов
библиотеки Muuri, предназначенной для организации и
управления сетками элементов в веб-интерфейсе. Этот метод позволяет
динамически управлять видимостью элементов сетки, скрывая или отображая
их на основании заданных критериев, что особенно полезно для создания
фильтруемых галерей, каталогов товаров или интерактивных
интерфейсов.
grid.filter(filter, options);
Параметры:
filter – функция, строка или массив элементов, определяющий, какие элементы будут отображаться:
true, элемент остаётся видимым,
если false – скрывается.options (необязательный объект) – позволяет настраивать поведение анимации и фильтрации:
layout (boolean, по умолчанию true) –
применять ли перерисовку сетки после фильтрации.sort (boolean, по умолчанию false) –
пересортировать элементы после фильтрации.onFinish (функция) – колбэк, вызываемый после
завершения фильтрации.const grid = new Muuri('.grid');
grid.filter(item => item.getElement().dataset.category === 'books');
В этом примере отображаются только элементы, у которых атрибут
data-category равен 'books'. Остальные
элементы скрываются с анимацией.
grid.filter('.featured');
Скрываются все элементы, кроме тех, которые соответствуют CSS-классу
.featured. Это позволяет быстро фильтровать элементы по
заранее определённым классам.
const itemsToShow = [
document.querySelector('#item1'),
document.querySelector('#item2')
];
grid.filter(itemsToShow);
В этом случае будут отображены только выбранные элементы из массива, а остальные автоматически скрыты.
Метод filter поддерживает гибкую настройку анимации:
grid.filter('.active', {
layout: true,
sort: false,
onFinish: () => console.log('Фильтрация завершена')
});
layout: true – сетка перестраивается после фильтрации.
Это важно для сохранения аккуратного расположения элементов.sort: false – сохраняет текущий порядок элементов.
Можно включить сортировку для динамической перестановки.onFinish – позволяет выполнить дополнительные действия,
например, обновить счётчик видимых элементов или запускать кастомные
эффекты.Фильтры можно комбинировать, используя разные подходы:
grid.filter(item =>
item.getElement().classList.contains('active') &&
item.getElement().dataset.category === 'books'
);
В этом примере одновременно применяются два условия: элемент должен
иметь класс active и принадлежать категории
books. Такой подход позволяет строить сложные динамические
фильтры для интерактивных интерфейсов.
Чтобы вернуть все элементы сетки в исходное состояние, используется
фильтр null:
grid.filter(null);
Это полностью сбрасывает все ранее применённые фильтры и отображает все элементы с плавной анимацией.
onFinish позволяет синхронизировать
внешние интерфейсы с состоянием сетки, например обновлять индикаторы
выбранных категорий.Метод filter является мощным инструментом для управления
видимостью элементов в Muuri. Правильное использование
фильтров с функциями, селекторами или массивами элементов позволяет
создавать динамичные, интерактивные и отзывчивые интерфейсы, сохраняя
при этом плавность анимации и порядок элементов сетки.