SortableJS предоставляет мощные возможности для организации интерактивного перетаскивания элементов на веб-странице. Одной из ключевых функциональностей является режим swap, который позволяет заменять позиции элементов друг с другом при перетаскивании, вместо обычного перемещения элемента в новую позицию.
В стандартном режиме SortableJS элемент перемещается и вставляется между другими элементами, создавая визуальный зазор. Режим swap меняет логику:
Swap-режим активируется через опцию swap и настраивается
с помощью дополнительных параметров.
new Sortable(listElement, {
swap: true, // включение swap-режима
swapClass: "highlight", // класс для визуального выделения цели обмена
animation: 150 // плавная анимация при обмене
});
Ключевые моменты настроек:
1, что означает полный контакт.Параметр swapThreshold позволяет тонко настроить
чувствительность обмена.
0.5 означает, что перетаскиваемый элемент
должен перекрывать не менее половины цели, чтобы произошёл swap.new Sortable(listElement, {
swap: true,
swapClass: "highlight",
swapThreshold: 0.6
});
В этом примере элемент должен перекрывать 60% другого элемента для срабатывания swap.
SortableJS поддерживает ряд событий, которые полезны для обработки логики обмена:
new Sortable(listElement, {
swap: true,
swapClass: "highlight",
animation: 200,
onSwap: function(evt) {
console.log("Элементы будут обменяны:", evt.dragged, evt.swapTarget);
},
onSwapComplete: function(evt) {
console.log("Обмен завершен:", evt.dragged, evt.swapTarget);
}
});
Параметры события:
evt.dragged – перетаскиваемый элемент.evt.swapTarget – элемент, с которым произойдет
обмен.Для swap-режима важна наглядная индикация, иначе пользователь может
не понять, с каким элементом произойдет обмен. Рекомендуется
использовать CSS-класс swapClass для подсветки:
.highlight {
border: 2px dashed #007bff;
background-color: #e0f0ff;
}
Эффект можно комбинировать с анимацией animation для
плавного перемещения элементов при swap.
Swap хорошо работает с большинством стандартных опций SortableJS:
new Sortable(listElement, {
swap: true,
swapClass: "highlight",
animation: 150,
ghostClass: "dragging",
handle: ".drag-handle"
});
В этом примере элементы меняются местами только при перетаскивании за
.drag-handle, а перетаскиваемый элемент получает прозрачный
фон через ghostClass.
Swap-режим полезен для:
Использование swap позволяет избежать создания лишних промежутков и визуальной нестабильности, сохраняя интерактивность и отзывчивость интерфейса.
При большом числе элементов следует учитывать:
swapClass для наглядного визуального
эффекта.swapThreshold для предотвращения случайных
обменов.onSwap и
onSwapComplete для синхронизации данных.animation и ghostClass для
улучшения UX.Swap в SortableJS представляет собой гибкий инструмент для создания интерфейсов с контролируемым обменом элементов, обеспечивая точное и предсказуемое взаимодействие в интерактивных списках и сетках.