Параметр fitWidth в библиотеке
Masonry предназначен для управления поведением сетки в
горизонтальном направлении. Он позволяет контейнеру сетки автоматически
центрироваться и адаптироваться к ширине содержимого, что особенно важно
при динамическом изменении количества элементов или при адаптивной
верстке.
fitWidthКогда fitWidth установлен в значение
true, Masonry автоматически:
По умолчанию fitWidth равен false, и сетка
растягивается на всю ширину контейнера, заполняя все доступное
пространство.
var elem = document.querySelector('.grid');
var msnry = new Masonry(elem, {
// Селектор элементов внутри контейнера
itemSelector: '.grid-item',
// Расстояние между элементами
gutter: 20,
// Автоматическое центрирование контейнера по ширине содержимого
fitWidth: true
});
В этом примере:
.grid — контейнер сетки..grid-item — отдельные элементы Masonry.gutter задает фиксированный промежуток между
колонками.fitWidth: true заставляет контейнер сетки быть только
такой ширины, которая необходима для всех колонок с элементами.fitWidth
на адаптивностьfitWidth особенно полезен при работе с адаптивными
макетами:
percentPositionДля адаптивного дизайна часто используется комбинация:
percentPosition: true,
fitWidth: true
percentPosition: true позволяет
задавать размеры элементов и колонок в процентах относительно
контейнера, что делает сетку полностью адаптивной.fitWidth: true при этом обеспечивает
центровку и фиксированную ширину контейнера под количество колонок.var msnry = new Masonry('.grid', {
itemSelector: '.grid-item',
gutter: 20,
percentPosition: true,
fitWidth: true
});
При динамическом добавлении элементов (append или
prepend) важно повторно вызывать метод
layout, чтобы Masonry пересчитал ширину
контейнера:
var newItem = document.createElement('div');
newItem.className = 'grid-item';
document.querySelector('.grid').appendChild(newItem);
msnry.appended(newItem);
msnry.layout();
Без повторного вызова layout контейнер может не
адаптироваться к новой ширине, и элементы будут выстраиваться
некорректно.
fitWidth и guttergutter добавляется между колонками, но при
использовании fitWidth ширина контейнера включает в себя и
отступы.gutter слишком большой, контейнер может выходить
за пределы родителя при фиксированной ширине страницы.gutter, учитывая максимальное
количество колонок и доступную ширину контейнера.margin-left:auto и
margin-right:auto для контейнера при
fitWidth:true, что гарантирует центрирование без
дополнительных CSS-свойств.Для корректной работы сетки при изменении ширины окна рекомендуется пересчитывать layout:
window.addEventListener('resize', function() {
msnry.layout();
});
Это позволяет:
fitWidthpercentPosition обеспечивает полностью
адаптивный макет.layout при динамическом
добавлении элементов.gutter.Понимание работы fitWidth позволяет
создавать аккуратные и адаптивные сетки Masonry, которые выглядят
одинаково хорошо на различных разрешениях экранов и при динамическом
изменении содержимого.