Библиотека Masonry для JavaScript обеспечивает динамическое размещение элементов сетки с «кирпичной» структурой. Одной из ключевых возможностей является настройка адаптивных отступов, что позволяет сетке корректно отображаться на экранах различных размеров без нарушения визуальной гармонии.
gutter Параметр gutter
определяет горизонтальное и вертикальное расстояние между элементами.
Может задаваться как в пикселях, так и в процентах. Пример
инициализации:
var elem = document.querySelector('.grid');
var msnry = new Masonry(elem, {
itemSelector: '.grid-item',
gutter: 20 // отступ 20px между элементами
});
Если значение gutter задано в процентах, Masonry
пересчитывает размеры элементов автоматически при изменении ширины
контейнера.
percentPosition Для корректной
работы адаптивных отступов рекомендуется включать
percentPosition: true. В этом случае Masonry рассчитывает
позиции элементов как процент от ширины контейнера:
var msnry = new Masonry(elem, {
itemSelector: '.grid-item',
gutter: 2%,
percentPosition: true
});
Использование процентных значений особенно удобно для сеток с изменяемой шириной элементов.
Masonry позволяет менять параметры gutter после
инициализации через метод layout() с обновлёнными
значениями:
msnry.options.gutter = 30;
msnry.layout();
Такой подход полезен при изменении ширины окна браузера или при переключении между различными макетами (например, мобильная и десктопная версии).
Для полноценной адаптивности часто используют медиазапросы в CSS совместно с Masonry:
.grid-item {
width: 48%; /* два элемента в ряд на планшете */
}
@media (max-width: 768px) {
.grid-item {
width: 100%; /* один элемент в ряд на мобильных устройствах */
}
}
В сочетании с percentPosition: true и корректным
gutter элементы автоматически перестраиваются без
необходимости вручную изменять JavaScript.
Для правильного отображения адаптивных отступов важно учитывать внутренние маргины и паддинги контейнера и элементов:
margin) добавляются к
gutter. Если не учитывать этот момент, сетка может иметь
непредсказуемые зазоры.padding) не влияют на
расчет Masonry напрямую, но меняют видимую ширину сетки.Пример корректного учета маргинов:
.grid-item {
margin-bottom: 20px; /* согласуется с gutter в JS */
}
Если элементы сетки имеют разную высоту, адаптивные отступы играют ключевую роль для сохранения визуального баланса. Masonry автоматически рассчитывает позиции для каждого элемента, учитывая:
offsetHeight),gutter,При изменении размеров экрана или контента можно вызвать метод
layout() для пересчета расположения:
window.addEventListener('resize', function() {
msnry.layout();
});
gutter и
width элементов для плавной адаптивной сетки.percentPosition: true, чтобы Masonry корректно
позиционировал элементы при изменении ширины контейнера.msnry.layout() для корректной перестройки.Адаптивные отступы в Masonry обеспечивают гибкую и визуально
гармоничную сетку, позволяя создавать макеты, которые одинаково хорошо
выглядят на десктопах, планшетах и мобильных устройствах. Правильная
комбинация gutter, percentPosition и
медиазапросов делает сетку полностью отзывчивой и управляемой.