Библиотека Packery реализует динамическое позиционирование элементов сетки, автоматически подстраивая их под размеры контейнера и соседние блоки. По умолчанию Packery работает адаптивно: при изменении ширины контейнера элементы перестраиваются, чтобы заполнить доступное пространство оптимальным образом. В некоторых случаях требуется фиксированная компоновка, где элементы остаются на своих местах независимо от изменений ширины окна. Для этого используется отключение адаптивности.
percentPosition Этот параметр
определяет, будут ли размеры и позиции элементов вычисляться в процентах
относительно контейнера. Если выставлено true, сетка
становится гибкой и адаптируется к размеру родителя. Для отключения
адаптивности необходимо использовать false или опустить
этот параметр, чтобы позиции задавались в пикселях.
var grid = new Packery('.grid', {
itemSelector: '.grid-item',
gutter: 10,
percentPosition: false
});
Важно: при отключении percentPosition
размеры элементов должны быть заданы через CSS в пикселях.
columnWidth Задает ширину столбца
сетки. Для фиксированной компоновки рекомендуется использовать точное
значение в пикселях, а не ссылку на элемент или проценты:
var grid = new Packery('.grid', {
itemSelector: '.grid-item',
columnWidth: 200
});
Это позволяет Packery создавать неизменяемую сетку с фиксированной шириной колонок, не реагирующую на изменение размера окна.
resize Этот флаг определяет, будет
ли Packery реагировать на события изменения окна. По умолчанию он
включен (true). Для полной фиксации расположения элементов
его нужно отключить:
var grid = new Packery('.grid', {
itemSelector: '.grid-item',
resize: false
});
При resize: false перестройка сетки не происходит при
изменении ширины окна, что полностью отключает адаптивность.
var grid = new Packery('.grid', {
itemSelector: '.grid-item',
columnWidth: 150,
gutter: 10,
percentPosition: false,
resize: false
});
Объяснение параметров:
itemSelector – CSS-селектор элементов
сетки.columnWidth – фиксированная ширина
колонок в пикселях.gutter – расстояние между
элементами.percentPosition – отключает вычисление
размеров в процентах.resize – запрещает перестройку сетки
при изменении окна.gutter в пикселях, чтобы сохранялась ровная структура
сетки.layout():grid.layout();
Это позволяет вручную обновить позицию элементов, если динамически
добавляются новые блоки, даже при отключенном resize.
imagesLoaded('.grid', function() {
grid.layout();
});
Без этого сетка может неправильно рассчитать позиции, так как Packery учитывает размеры элементов во время инициализации.
Отключение адаптивности актуально для следующих случаев:
В таких сценариях Packery сохраняет преимущества алгоритма упаковки элементов, но исключает динамическую перестройку при изменении окна, полностью фиксируя расположение блоков.
appended(items) – добавляет новые
элементы в сетку, без автоподстройки всей сетки.prepended(items) – добавляет элементы
в начало, позиции существующих блоков остаются прежними.remove(items) – удаляет элементы, не
меняя расположение остальных.layout() – принудительная перестройка
сетки после любых изменений, если это необходимо.Эти методы позволяют сохранять контроль над сеткой даже при отключенной адаптивности, обеспечивая статичную, но управляемую компоновку элементов.