В Packery контейнер — это основной элемент, внутри
которого располагаются все сеточные блоки (items). Контейнер играет
ключевую роль, так как от его параметров зависят выравнивание, поведение
при добавлении или удалении элементов, а также взаимодействие с методами
библиотекой. В качестве контейнера может использоваться любой
HTML-элемент, поддерживающий позиционирование элементов внутри себя,
чаще всего это <div>.
Пример инициализации контейнера:
var grid = document.querySelector('.grid');
var pckry = new Packery(grid, {
itemSelector: '.grid-item',
gutter: 10
});
Здесь .grid — контейнер, внутри которого Packery
располагает элементы с классом .grid-item. Параметр
gutter задаёт отступ между элементами.
.grid {
width: 100%;
max-width: 1200px;
margin: 0 auto;
position: relative;
}
Позиционирование Packery использует
absolute для расположения блоков внутри контейнера.
Контейнер должен иметь position: relative или
position: absolute для корректного позиционирования
дочерних элементов. Без этого элементы будут позиционироваться
относительно ближайшего предка с position, что нарушит
сетку.
Гибкость при ресайзе Контейнер лучше выбирать
так, чтобы его ширина могла изменяться динамически (например, в
адаптивной верстке). Packery способен автоматически перерасчитывать
положение элементов при изменении размеров контейнера при вызове метода
layout.
window.addEventListener('resize', function() {
pckry.layout();
});
Правильная структура контейнера обеспечивает корректное поведение Packery:
<div class="grid">
<div class="grid-item">Элемент 1</div>
<div class="grid-item">Элемент 2</div>
<div class="grid-item">Элемент 3</div>
</div>
Ключевые моменты:
grid — контейнер, имеет
position: relativegrid-item — элементы сетки, Packery автоматически
назначает им position: absolute и вычисляет
координаты.appended или layout.var pckry = new Packery(document.querySelector('.grid'), {
itemSelector: '.grid-item',
gutter: 10
});
layout пересчитывает позиции блоков в контейнере:pckry.layout();
var newItem = document.createElement('div');
newItem.className = 'grid-item';
grid.appendChild(newItem);
pckry.appended(newItem);
layout:grid.removeChild(item);
pckry.layout();
resize и вызова layout, иначе сетка будет
некорректной при изменении ширины окна.Контейнер — это фундаментальная единица работы с Packery, от правильного выбора которого зависит стабильность, производительность и визуальная точность сетки. Выбор контейнера с правильными размерами, позиционированием и структурой обеспечивает плавное и предсказуемое размещение элементов, даже при динамическом изменении контента.