Метод removeComplete является важным инструментом для
управления элементами сетки в библиотеке Packery. Он позволяет безопасно
удалять элементы из сетки, одновременно обеспечивая корректное
обновление внутренних структур Packery и плавную анимацию удаления.
// Удаление элемента из Packery с завершением анимации
pckry.removeComplete( itemElements );
Параметры:
itemElements — один элемент DOM или массив элементов
DOM, которые должны быть удалены из сетки.Метод не возвращает значения, но гарантирует, что Packery завершит удаление элемента и обновит расположение оставшихся элементов.
removeМетод remove удаляет элемент из сетки, но не
гарантирует завершение анимации и может привести к визуальным
артефактам, если используется вместе с анимацией или последующей
перестройкой сетки.
removeComplete выполняет все действия
remove, а также:
items).layout() после удаления,
обеспечивая правильное позиционирование оставшихся элементов.var pckry = new Packery('.grid', {
itemSelector: '.grid-item',
gutter: 10
});
var item = document.querySelector('.grid-item:nth-child(1)');
// Удаление элемента с завершением анимации
pckry.removeComplete(item);
var itemsToRemove = document.querySelectorAll('.grid-item.remove');
pckry.removeComplete(itemsToRemove);
В этом случае все выбранные элементы будут плавно удалены из сетки, а оставшиеся автоматически перестроятся.
Packery интегрируется с библиотекой Draggabilly и CSS-анимациями. Для
плавного исчезновения элементов при removeComplete
рекомендуется использовать CSS-переходы:
.grid-item {
transition: transform 0.4s, opacity 0.4s;
}
.grid-item.removing {
opacity: 0;
transform: scale(0.8);
}
var item = document.querySelector('.grid-item');
// Добавление класса для анимации
item.classList.add('removing');
// После небольшой задержки вызвать removeComplete
setTimeout(function() {
pckry.removeComplete(item);
}, 400);
layout() — после удаления элементов вызов
layout() не обязателен, так как removeComplete
сам перестраивает сетку.stamp() — если элемент был «штампован», его необходимо
сначала удалить с помощью unstamp(), иначе
removeComplete не удалит его корректно.destroy() — при уничтожении всей сетки удаление
элементов через removeComplete не требуется, так как все
DOM-элементы удаляются вместе с контейнером.items:
внутренний массив Packery корректно обновляется, предотвращая ошибки при
последующих вызовах layout() или
getItemElements().Метод removeComplete является предпочтительным для всех
сценариев, когда требуется безопасное и анимированное удаление элементов
из сетки Packery, обеспечивая стабильность и плавность интерфейса.