SortableJS — мощная библиотека для создания
интерактивных списков с поддержкой перетаскивания элементов. Одной из
ключевых возможностей является настройка поведения визуальных эффектов и
реакции элементов на события перетаскивания через опцию
swapClass и связанные параметры.
Опция swapClass позволяет задавать CSS-класс для
элемента, с которым происходит обмен (swap) при перетаскивании. В
отличие от стандартного перемещения элементов, где элемент просто меняет
позицию в DOM, swapClass визуально выделяет элемент, с
которым будет произведен обмен. Это удобно для интерфейсов, где
требуется наглядное отображение замены позиций элементов.
new Sortable(list, {
swap: true,
swapClass: 'highlight-swap',
animation: 150
});
swap: true — включает режим обмена
элементов.swapClass: 'highlight-swap' —
CSS-класс, применяемый к элементу, с которым произойдет обмен.animation: 150 — плавность анимации в
миллисекундах.При наведении перетаскиваемого элемента на другой элемент срабатывает визуальное выделение, делая процесс более понятным для пользователя.
swapThreshold управляет чувствительностью зоны обмена.
Этот параметр задается числом от 0 до 1 и определяет, на какую часть
элемента нужно переместить курсор для срабатывания swap.
new Sortable(list, {
swap: true,
swapClass: 'highlight-swap',
swapThreshold: 0.65
});
Опция swap может принимать объект для более тонкой
настройки:
new Sortable(list, {
swap: {
group: 'myGroup',
animation: 200,
fallbackOnBody: true
},
swapClass: 'highlight-swap',
swapThreshold: 0.5
});
Эта гибкость делает Swap режим идеальным для сложных интерфейсов с несколькими списками и динамически изменяемыми элементами.
Эффект swapClass полностью управляется стилями. Можно
использовать анимации, тени и трансформации:
.highlight-swap {
background-color: #f0f0f0;
border: 2px solid #007bff;
transform: scale(1.05);
transition: all 150ms ease;
}
transform: scale(1.05) увеличивает элемент при
наведении.transition: all 150ms ease обеспечивает плавность
визуального эффекта.Эти стили делают интерфейс динамичным и наглядным, без изменения логики работы библиотеки.
Правильная комбинация этих опций позволяет создавать высокоинтерактивные списки с отзывчивой визуальной обратной связью.
new Sortable(taskList, {
swap: true,
swapClass: 'task-highlight',
swapThreshold: 0.6,
animation: 200,
draggable: '.task-item'
});
new Sortable(cart, {
swap: true,
swapClass: 'cart-highlight',
swapThreshold: 0.7,
animation: 180,
handle: '.drag-handle'
});
Оба примера показывают, как комбинация swapClass и swapThreshold делает интерфейс интуитивно понятным для пользователя, не перегружая код сложной логикой.
Использование swapClass совместно с другими опциями
SortableJS позволяет создавать профессиональные интерфейсы с интуитивно
понятной и красивой визуальной обратной связью при обмене элементов.