Packery — это JavaScript-библиотека для создания динамических и отзывчивых сеток с «кирпичной» компоновкой. Для работы с Packery существует несколько способов подключения, один из самых удобных — через CDN. Использование CDN позволяет быстро интегрировать библиотеку без необходимости скачивания и размещения файлов локально.
<script> и <link>Для использования Packery достаточно добавить в HTML-документ ссылку
на CDN. Обычно подключают две части: сам Packery и библиотеку
imagesLoaded, если планируется работа с элементами,
содержащими изображения, чтобы сетка корректно подстраивалась под
реальные размеры.
<!-- Подключение imagesLoaded -->
<script src="https://unpkg.com/imagesloaded@5/imagesloaded.pkgd.min.js"></script>
<!-- Подключение Packery -->
<script src="https://unpkg.com/packery@2/dist/packery.pkgd.min.js"></script>
Примечание: порядок подключения важен.
imagesLoaded подключается перед Packery, если сетка
содержит изображения, размеры которых влияют на компоновку.
После подключения библиотеки можно создавать сетку, указывая контейнер и настройки:
// Инициализация Packery
const grid = document.querySelector('.grid');
const pckry = new Packery(grid, {
itemSelector: '.grid-item',
gutter: 10,
percentPosition: true
});
// Поддержка корректного отображения изображений
imagesLoaded(grid, function() {
pckry.layout();
});
Ключевые параметры:
itemSelector — CSS-селектор элементов сетки.gutter — расстояние между элементами.percentPosition — использование процентов для ширины и
высоты, удобно для отзывчивой верстки.CDN предоставляет возможность явно указывать версию библиотеки, что важно для стабильности проекта. Например:
<script src="https://unpkg.com/packery@2.1.2/dist/packery.pkgd.min.js"></script>
Если версия не указана, автоматически подключается последняя доступная. Рекомендуется фиксировать версию, чтобы избежать неожиданных изменений поведения при обновлении.
Для корректной работы Packery необходимо, чтобы контейнер и элементы имели соответствующие CSS-правила:
.grid {
display: block; /* Packery не требует flex или grid */
}
.grid-item {
width: 150px;
margin-bottom: 10px;
float: left; /* Packery использует позиционирование элементов */
}
position: absolute применяется библиотекой к
элементам автоматически.float: left или display: block
обеспечивает правильную инициализацию.defer к <script> предотвращает
блокировку рендеринга страницы:<script defer src="https://unpkg.com/packery@2/dist/packery.pkgd.min.js"></script>
Минимизация сетевых запросов: использовать единственный CDN для всех библиотек, когда это возможно.
Кэширование в браузере: большинство CDN автоматически используют заголовки кэширования, ускоряя повторные загрузки.
Packery поддерживает работу с ES6-модулями, что полезно для современных сборщиков:
import Packery from 'https://unpkg.com/packery@2/dist/packery.pkgd.min.js';
const grid = document.querySelector('.grid');
const pckry = new Packery(grid, {
itemSelector: '.grid-item',
gutter: 10
});
Модульный подход упрощает интеграцию с современными фреймворками и позволяет использовать tree-shaking, минимизируя размер итогового бандла.
imagesLoaded при работе с
изображениями.defer для предотвращения блокировки
DOM.Подключение через CDN обеспечивает быструю, надежную и гибкую интеграцию Packery в проект без дополнительных усилий по локальному хранению файлов.