Isotope — это мощная библиотека для создания динамических сеток с
фильтрацией, сортировкой и анимацией элементов. При использовании вместе
с jQuery процесс инициализации упрощается за счёт удобного синтаксиса.
Основной шаг — это выбор контейнера и вызов метода
.isotope():
$('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
Пояснение ключевых параметров:
itemSelector — селектор элементов внутри контейнера,
которые будут управляться Isotope.
layoutMode — режим расположения элементов. Самые
популярные:
masonry — сетка с кирпичной выкладкой, автоматически
подстраивающая высоту элементов.fitRows — ровные строки с одинаковой высотой.vertical — вертикальное расположение без учета
ширины.Фильтрация позволяет отображать только элементы, соответствующие
определённым критериям. С jQuery это делается с помощью передачи
селектора в метод .isotope():
$('.filter-button').on('click', function() {
var filterValue = $(this).attr('data-filter');
$('.grid').isotope({ filter: filterValue });
});
Ключевые моменты:
data-filter на кнопках обычно содержит
CSS-селектор элементов, например .category1 или
* для всех элементов..isotope({ filter: filterValue }) автоматически
применяет фильтр с анимацией.'.category1.category2', чтобы показать элементы,
удовлетворяющие нескольким условиям одновременно.Isotope поддерживает сортировку по различным критериям, используя
функцию getSortData. Для этого можно заранее определить, по
каким данным будет проводиться сортировка:
$('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry',
getSortData: {
name: '.name', // текстовый контент элемента
price: '[data-price] parseInt' // значение атрибута data-price как число
}
});
Для вызова сортировки используется метод:
$('.sort-button').on('click', function() {
var sortByValue = $(this).attr('data-sort-by');
$('.grid').isotope({ sortBy: sortByValue });
});
Особенности сортировки:
sortAscending позволяет задавать порядок
сортировки:$('.grid').isotope({ sortBy: 'price', sortAscending: false });
Isotope корректно обрабатывает изменения DOM, что особенно важно при
работе с jQuery. Для добавления новых элементов используется метод
appended:
var $newItems = $('<div class="grid-item new-item">Новый элемент</div>');
$('.grid').append($newItems)
.isotope('appended', $newItems);
Для удаления элементов применяется метод remove с
последующим обновлением Isotope:
var $itemsToRemove = $('.grid-item.remove-me');
$('.grid').isotope('remove', $itemsToRemove)
.isotope('layout');
Замечания по динамическим изменениям:
layout, чтобы пересчитать позиции.Isotope поддерживает плавные анимации при изменении позиций элементов. Основные опции:
$('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry',
transitionDuration: '0.6s'
});
transitionDuration — длительность анимации перемещения
элементов.transform и
opacity для дополнительных эффектов.transitionDuration: 0.jQuery облегчает подписку на события Isotope:
$('.grid').on('arrangeComplete', function(event, filteredItems) {
console.log('Количество элементов после фильтрации:', filteredItems.length);
});
$('.grid').on('layoutComplete', function(event, laidOutItems) {
console.log('Сетка полностью обновлена');
});
Типы событий:
arrangeComplete — вызывается после фильтрации или
сортировки.layoutComplete — срабатывает после завершения
перестройки сетки.removeComplete и appended — события для
удаления и добавления элементов.При использовании Isotope с изображениями необходимо убедиться, что сетка строится после полной загрузки картинок. Для этого используют плагин imagesLoaded:
$('.grid').imagesLoaded(function() {
$('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
});
Это предотвращает неправильное позиционирование элементов из-за задержки загрузки изображений.
Isotope позволяет комбинировать фильтры и сортировку:
$('.filter-button, .sort-button').on('click', function() {
var filterValue = $('.filter-button.active').attr('data-filter');
var sortByValue = $('.sort-button.active').attr('data-sort-by');
$('.grid').isotope({
filter: filterValue,
sortBy: sortByValue
});
});
Такой подход позволяет создавать сложные интерактивные сетки, где элементы одновременно фильтруются и сортируются, сохраняя плавные анимации и корректное расположение.
.isotope(), .append(),
.remove(), .on() позволяют управлять
элементами динамически.Этот набор техник покрывает все ключевые сценарии работы с Isotope через jQuery и обеспечивает стабильное и плавное поведение элементов в динамических интерфейсах.