Библиотека Isotope предоставляет мощный механизм для организации элементов на странице в виде динамических сеток с поддержкой фильтрации и сортировки. Одной из ключевых особенностей является возможность адаптивного изменения макета в зависимости от ширины экрана, что особенно важно для современных сайтов с множеством устройств.
Isotope работает с контейнером, в котором находятся элементы сетки. Для изменения расположения элементов на разных экранах используются следующие подходы:
.grid-item {
width: 100%;
}
@media (min-width: 600px) {
.grid-item {
width: 48%;
}
}
@media (min-width: 900px) {
.grid-item {
width: 30%;
}
}
percentPosition В
конфигурации Isotope важно включить percentPosition: true,
чтобы ширины элементов, заданные в процентах, корректно
интерпретировались библиотекой:var grid = document.querySelector('.grid');
var iso = new Isotope(grid, {
itemSelector: '.grid-item',
layoutMode: 'masonry',
percentPosition: true
});
layout вручную для точной
перестройки:window.addEventListener('resize', function() {
iso.layout();
});
Isotope поддерживает несколько типов макета через опцию
layoutMode. На мобильных устройствах часто используется
vertical или fitRows, а на больших экранах —
masonry. Переключение между макетами можно реализовать
динамически:
function updateLayout() {
var width = window.innerWidth;
if (width < 600) {
iso.options.layoutMode = 'fitRows';
} else {
iso.options.layoutMode = 'masonry';
}
iso.layout();
}
window.addEventListener('resize', updateLayout);
updateLayout();
Особенности такого подхода:
layout() после изменения
layoutMode.При адаптивных сетках важны отступы между элементами. В Isotope используются gutter и CSS margin:
.grid-sizer {
width: 5%;
}
.grid-item {
margin: 2.5%;
}
grid-sizer задаёт базовую ширину колонки, на которую
ориентируются остальные элементы.grid-sizer в медиа-запросах позволяет
легко адаптировать количество колонок:@media (min-width: 900px) {
.grid-sizer {
width: 20%;
}
}
Хотя Isotope работает с абсолютным позиционированием для masonry, элементы можно внутри сетки располагать с помощью Flexbox или Grid для внутренних контейнеров. Это упрощает управление вертикальным и горизонтальным выравниванием, а также динамическую подгонку размеров при изменении экрана.
percentPosition: true при работе с
адаптивной шириной.layoutMode через JavaScript для гибкой адаптации.function setColumns() {
var width = window.innerWidth;
if (width < 480) {
document.querySelector('.grid-sizer').style.width = '100%';
} else if (width < 768) {
document.querySelector('.grid-sizer').style.width = '50%';
} else {
document.querySelector('.grid-sizer').style.width = '25%';
}
iso.layout();
}
window.addEventListener('resize', setColumns);
setColumns();
if (window.innerWidth < 600) {
iso.arrange({ filter: '.mobile' });
} else {
iso.arrange({ filter: '*' });
}
Такой подход позволяет управлять видимостью элементов и макетом одновременно, обеспечивая удобное отображение на любых устройствах.
layout() при
изменении размеров окна или конфигурации layoutMode.Эти методы обеспечивают гибкую и устойчивую адаптивность сетки Isotope, позволяя создавать профессиональные интерфейсы, которые корректно отображаются на мобильных, планшетах и десктопах.