В библиотеке Isotope добавление новых элементов в
существующую сетку реализуется через методы
append,
prepend и
insert, которые позволяют динамически
расширять или изменять содержимое контейнера, при этом сохраняя
возможности фильтрации и сортировки. Основная идея заключается в том,
чтобы новые элементы сначала были добавлены в DOM, а затем переданы в
Isotope для корректного позиционирования и анимации.
appendМетод append добавляет элементы в конец
контейнера и автоматически инициирует их размещение с учетом
текущего фильтра и порядка сортировки.
var $grid = $('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry'
});
var $newItems = $('<div class="grid-item">Новый элемент</div>');
$grid.append($newItems)
.isotope('appended', $newItems);
Ключевые моменты:
append добавляет элементы в DOM.isotope('appended', $newItems) сообщает Isotope о
новых элементах, чтобы библиотека рассчитала их позицию.prependМетод prepend вставляет элементы в начало
контейнера, что полезно для реализации “ленивой загрузки”
последних публикаций или свежего контента.
var $newItems = $('<div class="grid-item">Свежий элемент</div>');
$grid.prepend($newItems)
.isotope('prepended', $newItems);
Особенности:
isotope('prepended', ...) для
обновления внутренних данных Isotope.insertМетод insert более универсален и позволяет добавлять
элементы в произвольное место контейнера, например,
перед конкретным элементом или после него.
var $newItem = $('<div class="grid-item">Элемент вставки</div>');
$grid.isotope('insert', $newItem);
Отличия от append и prepend:
После добавления элементов важно учитывать текущие фильтры:
$grid.isotope({ filter: '.active' });
isotope('layout') после добавления
элементов, чтобы пересчитать позиции всех элементов с учетом фильтра и
сортировки.Isotope использует CSS-трансформации для плавного
перемещения элементов. При добавлении новых объектов анимация
осуществляется автоматически, если включен параметр
transitionDuration:
var $grid = $('.grid').isotope({
itemSelector: '.grid-item',
layoutMode: 'masonry',
transitionDuration: '0.6s'
});
append и prepend,
чтобы новые элементы появлялись с эффектом появления и перемещения
других элементов.arrangeComplete или layoutComplete:$grid.on('arrangeComplete', function(event, filteredItems){
console.log('Сетка обновлена, элементов: ', filteredItems.length);
});
При необходимости добавить несколько элементов одновременно
рекомендуется формировать массив элементов и передавать
его в метод appended или insert:
var $newItems = $([
'<div class="grid-item">Элемент 1</div>',
'<div class="grid-item">Элемент 2</div>',
'<div class="grid-item">Элемент 3</div>'
]);
$grid.append($newItems)
.isotope('appended', $newItems);
appended или insert.requestAnimationFrame или таймеры при
постепенной загрузке сотен элементов.Методы append, prepend и
insert позволяют гибко расширять содержимое сетки Isotope,
интегрируя новые элементы в существующую структуру с сохранением
фильтрации, сортировки и плавной анимации. Правильное использование этих
методов обеспечивает динамичное, отзывчивое и визуально привлекательное
размещение контента на странице.