Библиотека Masonry в JavaScript предоставляет удобные методы для
динамического управления элементами сетки. Среди них особое место
занимают методы addItems и remove, позволяющие
добавлять новые элементы или удалять существующие с сохранением
корректного расположения сетки.
addItemsМетод addItems используется для добавления одного или
нескольких элементов в Masonry-сетку. Основная цель — интегрировать
новые элементы так, чтобы сетка автоматически перестроилась без
нарушения существующей компоновки.
Синтаксис:
masonryInstance.addItems( elems )
Параметры:
elems — HTML-элемент или массив элементов, которые
необходимо добавить в сетку. Это могут быть как существующие элементы
DOM, так и динамически созданные через
document.createElement.Особенности работы:
append
или добавить элементы вручную в контейнер.masonryInstance.layout() для перерасчета расположения всех
элементов.Пример использования:
// Создание нового элемента
let newItem = document.createElement('div');
newItem.classList.add('grid-item');
newItem.textContent = 'Новый элемент';
// Добавление в Masonry
masonryInstance.addItems(newItem);
// Вставка в DOM и перерасчет сетки
document.querySelector('.grid').appendChild(newItem);
masonryInstance.layout();
Добавление нескольких элементов одновременно:
let items = [];
for(let i = 0; i < 3; i++) {
let item = document.createElement('div');
item.classList.add('grid-item');
item.textContent = `Элемент ${i+1}`;
items.push(item);
document.querySelector('.grid').appendChild(item);
}
masonryInstance.addItems(items);
masonryInstance.layout();
Важно: метод
addItemsсам по себе не управляет DOM, он только сообщает Masonry о появлении новых элементов для корректного позиционирования.
removeМетод remove предназначен для удаления элементов из
Masonry-сетки. После удаления элемент перестает участвовать в расчете
расположения сетки и может быть удален из DOM.
Синтаксис:
masonryInstance.remove( elems )
Параметры:
elems — HTML-элемент или массив элементов, которые
необходимо удалить.Особенности работы:
remove рекомендуется вызывать
masonryInstance.layout() или
masonryInstance.reloadItems() для перерасчета сетки.Пример удаления одного элемента:
let itemToRemove = document.querySelector('.grid-item:nth-child(2)');
masonryInstance.remove(itemToRemove);
masonryInstance.layout(); // перерасчет сетки
Удаление нескольких элементов:
let itemsToRemove = document.querySelectorAll('.grid-item.to-remove');
masonryInstance.remove(itemsToRemove);
masonryInstance.layout();
addItems и remove с другими методамиlayout() — перерасчет расположения
всех элементов. Используется после добавления или удаления.appended() — сочетание добавления и
автоматического перерасчета позиции новых элементов. Позволяет
объединить addItems и layout в один
вызов:let newItem = document.createElement('div');
newItem.classList.add('grid-item');
newItem.textContent = 'Авто-добавление';
document.querySelector('.grid').appendChild(newItem);
masonryInstance.appended(newItem); // автоматически вызывает addItems + layout
prepended() — добавление элементов в
начало сетки с автоматическим перерасчетом.Использование addItems и remove позволяет
создавать динамические сетки, где элементы могут
добавляться или удаляться без полной перезагрузки страницы и с
сохранением оптимального расположения всех блоков.
layout(), чтобы Masonry корректно определял
размеры и позиции.layout().remove не удаляет элементы из DOM автоматически.
Если нужно полностью удалить элемент, используйте сочетание
remove() и element.remove():masonryInstance.remove(item);
item.remove();
masonryInstance.layout();
addItems и remove формируют ядро
динамического управления сеткой в Masonry, обеспечивая гибкость
при работе с изменяющимся контентом и позволяя поддерживать аккуратную,
компактную верстку без лишних затрат на перерасчет всей страницы.