Для минимальной конфигурации достаточно подключить библиотеку Isotope и подготовить контейнер с элементами, которые будут управляться. Основной синтаксис инициализации выглядит следующим образом:
// Инициализация Isotope на контейнере с классом .grid
var elem = document.querySelector('.grid');
var iso = new Isotope(elem, {
// Настройки по умолчанию
itemSelector: '.grid-item',
layoutMode: 'fitRows'
});
itemSelector указывает, какие элементы внутри
контейнера будут управляться библиотекой. В простейшем случае это класс
всех элементов сетки. layoutMode определяет способ
расположения элементов; для минимальной конфигурации рекомендуется
fitRows или masonry, которые не требуют
дополнительных настроек.
Контейнер должен содержать элементы, которые будут упорядочиваться. Простейший пример:
<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>
Класс .grid соответствует контейнеру, а
.grid-item — отдельным элементам сетки. В минимальной
конфигурации достаточно использовать только эти классы.
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
itemSelector |
Селектор элементов для управления | '.grid-item' |
layoutMode |
Режим компоновки элементов | 'masonry' |
percentPosition |
Использование процентов для позиционирования | false |
originLeft |
Расположение элементов слева направо | true |
В минимальном варианте достаточно указать itemSelector
и, при необходимости, layoutMode. Остальные параметры можно
оставить по умолчанию.
Isotope автоматически вычисляет позиции элементов при инициализации.
Для fitRows элементы располагаются по строкам с одинаковой
шириной, а для masonry создается «каскадная» сетка, где
высота элементов может различаться. Минимальная конфигурация не требует
указания размеров или отступов — библиотека сама определяет их из
CSS.
Если элементы динамически добавляются на страницу, их нужно зарегистрировать в Isotope после загрузки:
var grid = document.querySelector('.grid');
var iso = new Isotope(grid, { itemSelector: '.grid-item', layoutMode: 'fitRows' });
// Добавление нового элемента
var newItem = document.createElement('div');
newItem.classList.add('grid-item');
newItem.textContent = 'Новый элемент';
grid.appendChild(newItem);
// Обновление Isotope
iso.appended(newItem);
Метод appended позволяет добавить элемент в сетку и
корректно пересчитать позиции.
Даже при минимальной конфигурации стоит задать базовые CSS:
.grid {
display: block;
}
.grid-item {
width: 200px;
margin-bottom: 10px;
float: left; /* Для fitRows необходимо правильное обтекание */
}
Эти стили обеспечивают правильное позиционирование элементов без дополнительных сложных настроек. Ширину элементов можно изменять в зависимости от макета, а Isotope сам подстроит их расположение.
Даже без сложных настроек можно добавить простую фильтрацию по классам:
var filterButtons = document.querySelectorAll('.filter-button');
filterButtons.forEach(function(button) {
button.addEventListener('click', function() {
var filterValue = button.getAttribute('data-filter');
iso.arrange({ filter: filterValue });
});
});
HTML-кнопки фильтрации могут выглядеть так:
<button class="filter-button" data-filter="*">Все</button>
<button class="filter-button" data-filter=".category1">Категория 1</button>
Метод arrange пересчитывает позиции элементов и
отображает только те, которые соответствуют фильтру.
Минимальная конфигурация Isotope включает:
.grid и
.grid-item).itemSelector, layoutMode).appended.arrange.Эта настройка подходит для большинства базовых сеток и служит фундаментом для более сложных конфигураций и анимаций.