Библиотека Isotope предоставляет мощный механизм для
фильтрации, сортировки и позиционирования элементов на веб-странице.
Инициализация Isotope выполняется через конструктор
new Isotope(), который принимает два аргумента: контейнер
элементов и объект опций. Опции позволяют гибко настроить поведение
сетки, а также внешние эффекты анимации и сортировки.
var iso = new Isotope('.grid', {
itemSelector: '.grid-item',
layoutMode: 'masonry',
percentPosition: true
});
itemSelectorОписание: задаёт CSS-селектор для элементов, которые будут управляться Isotope. Все элементы, соответствующие этому селектору, становятся «item»-ами в сетке.
Пример использования:
itemSelector: '.portfolio-item'
Особенности:
itemSelector.layoutModeОписание: определяет метод расположения элементов в контейнере. Основные режимы:
masonry – элементы располагаются как
кирпичная кладка, оптимально подстраиваясь по высоте.fitRows – элементы выстраиваются в
строки одинаковой высоты, заполняя строку по ширине.vertical – элементы располагаются
вертикально, один под другим.cellsByRow – фиксированные ячейки по
рядам и колонкам.Пример использования:
layoutMode: 'fitRows'
Ключевой момент: режим masonry
автоматически требует установки размеров элементов для корректного
выравнивания, иначе могут появляться пустые пространства между
элементами.
percentPositionОписание: управляет тем, будут ли размеры и позиции
элементов вычисляться в процентах (true) или в пикселях
(false).
Пример использования:
percentPosition: true
Применение:
true,
чтобы элементы корректно масштабировались при изменении ширины
контейнера.false, чтобы
позиции вычислялись строго в пикселях.masonry (объект опций)Описание: специфический объект для режима
masonry, позволяющий детально настраивать поведение
сетки.
Основные свойства:
columnWidth – задаёт ширину колонки (может быть числом
в пикселях или селектором элемента).gutter – расстояние между элементами.fitWidth – центрирует сетку в контейнере, если ширина
элементов меньше ширины контейнера.Пример использования:
masonry: {
columnWidth: '.grid-sizer',
gutter: 20,
fitWidth: true
}
Совет: использование элемента-сайдера
.grid-sizer позволяет гибко управлять шириной колонок без
ручного расчёта пикселей.
sortBy и
getSortDataОписание: задают критерии сортировки элементов внутри контейнера.
sortBy – ключ сортировки (например,
'name', 'date').
getSortData – объект функций, каждая из
которых возвращает значение для сортировки конкретного элемента.
Пример:
sortBy: 'name',
getSortData: {
name: '.name',
price: '.price parseInt'
}
Особенности:
parseInt или
parseFloat.arrange().filterОписание: определяет фильтр для отображаемых элементов сразу после инициализации.
Примеры фильтров:
filter: '.active' // отобразить только элементы с классом .active
filter: function(itemElem) {
return itemElem.dataset.category === 'js';
}
Особенности:
arrange()
для интерактивных интерфейсов.transitionDurationОписание: задаёт длительность анимации при перестроении сетки.
Примеры значений:
transitionDuration: '0.6s'
transitionDuration: 400 // миллисекунды
Ключевой момент:
s,
ms) или числовое значение в миллисекундах.staggerОписание: задаёт задержку между анимацией последовательных элементов, создавая эффект «волны».
Пример:
stagger: 30 // миллисекунды
Применение:
originLeft / originTop –
направление построения сетки (по умолчанию слева направо и сверху
вниз).resizeObserver – включает
автоматическое обновление сетки при изменении размеров контейнера.containerStyle – объект CSS-свойств,
применяемых к контейнеру.containerStyle: {
position: 'relative',
overflow: 'hidden'
}
Эти опции дают полную гибкость в создании адаптивной, анимированной сетки без необходимости вручную управлять позиционированием элементов.
Хотите, я подготовлю следующую главу, посвящённую динамическому обновлению и перестройке сетки с помощью методов Isotope?