Masonry — это популярная JavaScript-библиотека для создания динамических сеток, где элементы располагаются максимально компактно, учитывая их размеры. Одним из самых быстрых способов интеграции Masonry на страницу является подключение через CDN (Content Delivery Network). CDN позволяет загружать библиотеку с удаленного сервера, что снижает нагрузку на хостинг и ускоряет доставку файлов пользователю.
Masonry официально доступен на нескольких популярных CDN:
jsDelivr Ссылка для последней стабильной версии:
<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4/dist/masonry.pkgd.min.js"></script>cdnjs Поддерживает разные версии и позволяет выбирать конкретную:
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"></script>unpkg Автоматически использует последнюю доступную версию:
<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>Использование CDN упрощает управление зависимостями и минимизирует необходимость скачивания файлов вручную.
Masonry подключается с помощью обычного <script>
тега. Важно разместить подключение после загрузки DOM
или использовать событие DOMContentLoaded, чтобы скрипт
инициализировался только после того, как все элементы сетки будут
доступны в документе. Пример подключения:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Пример Masonry через CDN</title>
<style>
.grid {
width: 90%;
margin: 0 auto;
}
.grid-item {
width: 200px;
margin-bottom: 10px;
background-color: #f0f0f0;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div class="grid">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4/dist/masonry.pkgd.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
var grid = document.querySelector('.grid');
var msnry = new Masonry(grid, {
itemSelector: '.grid-item',
columnWidth: 200,
gutter: 10,
fitWidth: true
});
});
</script>
</body>
</html>
В этом примере:
itemSelector — CSS-селектор элементов сетки.columnWidth — ширина колонки. Можно указывать точное
значение в пикселях или выбрать элемент-шаблон для автоматического
расчета.gutter — промежуток между элементами.fitWidth — центрирует сетку при ограниченной ширине
контейнера.defer к <script> позволяет загружать
Masonry после парсинга HTML, предотвращая блокировку рендеринга.Пример асинхронного подключения:
<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4/dist/masonry.pkgd.min.js" defer></script>
Masonry часто используется совместно с imagesLoaded, чтобы корректно учитывать размеры изображений в сетке. Подключение через CDN выглядит следующим образом:
<script src="https://cdn.jsdelivr.net/npm/imagesloaded@4/imagesloaded.pkgd.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
var grid = document.querySelector('.grid');
imagesLoaded(grid, function() {
new Masonry(grid, {
itemSelector: '.grid-item',
columnWidth: 200,
gutter: 10
});
});
});
</script>
Использование imagesLoaded гарантирует, что Masonry
будет правильно позиционировать элементы только после полной загрузки
всех изображений, предотвращая «прыжки» сетки.
Разумное использование columnWidth и
gutter уменьшает количество пересчётов макета.
Для большого числа элементов стоит рассмотреть виртуализацию или lazy-loading, так как Masonry перерасчитывает позиции при изменении DOM.
CDN версии обычно минифицированы, что снижает время загрузки. Для отладки можно использовать неминифицированные версии:
<script src="https://cdn.jsdelivr.net/npm/masonry-layout@4/dist/masonry.js"></script>Подключение Masonry через CDN является самым быстрым и надежным способом начать использовать библиотеку, обеспечивая стабильную загрузку и кросс-браузерную совместимость без необходимости локального хранения скриптов.