Для работы с библиотекой Isotope первым шагом является создание
экземпляра объекта, который управляет сеткой элементов. Isotope
предоставляет гибкий API для фильтрации, сортировки и анимации элементов
на веб-странице. Экземпляр создаётся через конструктор
Isotope, который принимает два параметра: контейнер
элементов и объект опций.
var iso = new Isotope( '.grid', {
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
Пояснение параметров:
.grid — CSS-селектор контейнера, содержащего элементы
сетки.itemSelector — CSS-класс элементов, которые будут
управляться Isotope.layoutMode — режим расположения элементов. Наиболее
распространённые: masonry, fitRows,
vertical.После инициализации экземпляра важно сохранить ссылку на объект Isotope. Эта ссылка позволяет вызывать методы для обновления, фильтрации и сортировки элементов. Например:
var grid = document.querySelector('.grid');
var iso = new Isotope(grid, {
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
Теперь переменная iso содержит полноценный экземпляр, с
которым можно работать далее.
Если экземпляр уже был создан, а доступ к нему нужен в другом месте
кода, Isotope предоставляет метод data через jQuery или
прямой доступ к свойству Isotope.data:
// С использованием jQuery
var iso = $('.grid').data('isotope');
// Без jQuery
var iso = Isotope.data(grid);
Метод data возвращает объект Isotope, связанный с
конкретным контейнером. После этого доступны все методы экземпляра:
arrange, shuffle, reloadItems и
другие.
В случае нескольких сеток на странице каждый контейнер инициализируется отдельно:
var iso1 = new Isotope('.grid-1', { itemSelector: '.item', layoutMode: 'fitRows' });
var iso2 = new Isotope('.grid-2', { itemSelector: '.item', layoutMode: 'masonry' });
Каждый экземпляр управляет только своими элементами. Для получения
доступа к конкретному экземпляру необходимо использовать правильный
контейнер при вызове Isotope.data.
При работе с динамическим контентом важно после добавления новых
элементов вызывать метод appended или
reloadItems:
var newItems = document.querySelectorAll('.grid-item-new');
iso.appended(newItems);
iso.layout();
Метод appended обновляет внутренние структуры Isotope, а
layout выполняет перерасчёт позиции элементов. Сохранённый
экземпляр iso остаётся тем же объектом, что позволяет не
создавать новый экземпляр при каждом изменении сетки.
new Isotope(container, options).Isotope.data(container) или
jQuery.data('isotope').appended, remove, reloadItems,
layout.Экземпляр Isotope является центральным объектом для всех операций с сеткой: фильтрация, сортировка и анимация выполняются только через него, поэтому правильное его получение и хранение критически важно для стабильной работы интерфейса.