Свойство itemSelector в библиотеке
Isotope отвечает за определение элементов контейнера,
которые будут участвовать в сортировке, фильтрации и позиционировании
сетки. Оно является обязательным для корректной работы всех функций
библиотеки, так как без него Isotope не сможет определить, какие
элементы являются «предметами» (items) внутри контейнера.
Синтаксис свойства выглядит следующим образом:
var iso = new Isotope( '.grid', {
itemSelector: '.grid-item',
layoutMode: 'fitRows'
});
Здесь .grid — контейнер, а .grid-item —
CSS-селектор для элементов, которые будут обрабатываться Isotope.
Селектор может быть любым, соответствующим стандартному синтаксису CSS
(.class, #id, tag или их
комбинации).
Обязательность свойства Без
itemSelector Isotope не сможет распознавать элементы сетки,
и все методы работы с элементами (filter,
sortBy, shuffle) будут бесполезны.
Совместимость с динамическим контентом Элементы,
добавленные в контейнер после инициализации Isotope, должны
соответствовать селектору itemSelector, иначе они не будут
частью сетки. Например, при добавлении элементов через
append или insert:
var newItem = document.createElement('div');
newItem.className = 'grid-item';
iso.appended(newItem);
Если новый элемент не имеет класса .grid-item, Isotope
его проигнорирует.
Гибкость селекторов itemSelector
поддерживает сложные CSS-селекторы. Например:
itemSelector: '.grid-item.active'
В этом случае в сетку будут включены только элементы с обоими
классами .grid-item и .active.
Производительность Выбор селектора напрямую
влияет на производительность. Сложные селекторы, включающие потомков
(.container > .grid-item > span), замедляют работу
библиотеки, особенно при большом количестве элементов.
Фильтрация элементов по классу:
var iso = new Isotope('.grid', {
itemSelector: '.grid-item',
layoutMode: 'fitRows'
});
document.querySelector('#filter-active').addEventListener('click', function() {
iso.arrange({ filter: '.active' });
});
Здесь itemSelector .grid-item определяет
все элементы сетки, а фильтр .active выбирает только
активные элементы.
Сортировка элементов по атрибуту:
var iso = new Isotope('.grid', {
itemSelector: '.grid-item',
layoutMode: 'masonry',
getSortData: {
name: '[data-name]',
price: '[data-price] parseInt'
}
});
iso.arrange({ sortBy: 'price' });
Свойство itemSelector гарантирует, что сортировка
применяется только к .grid-item и игнорирует другие
элементы внутри контейнера, например заголовки или пустые блоки.
itemSelector контейнеры или
родительские элементы, так как это может вызвать некорректное
позиционирование.itemSelector для расчёта позиций элементов при анимации
перемещения. Если элемент не совпадает с селектором, он останется на
месте и не будет анимирован.remove, appended, insert,
stamp и reloadItems учитывают только элементы,
соответствующие itemSelector.itemSelector — это фундаментальная настройка,
определяющая, какие элементы будут частью Isotope-сетки, и напрямую
влияющая на работу фильтров, сортировки и анимаций.