ghostClass — это опция в библиотеке
SortableJS, которая позволяет задавать CSS-класс для
элемента, который перемещается в процессе drag-and-drop. Этот класс
применяется к прототипу перетаскиваемого элемента,
когда он находится в состоянии “призрачного” объекта, то есть видимого
при перетаскивании, но не влияющего на структуру DOM до завершения
операции.
ghostClass задается при инициализации экземпляра
Sortable через объект опций:
const sortable = new Sortable(listElement, {
ghostClass: 'sortable-ghost'
});
ghostClass — строка, содержащая имя CSS-класса.ghostClassCSS-класс для ghost-элемента может включать визуальные эффекты, которые делают процесс перетаскивания более наглядным. Например:
.sortable-ghost {
opacity: 0.5;
border: 2px dashed #007bff;
background-color: #f0f8ff;
}
Ключевые моменты:
opacity позволяет выделить движущийся элемент на фоне
остальных.border создаёт контур, показывающий область, которую
займёт элемент.background-color улучшает визуальное восприятие.Ghost-элемент создается клонированием оригинального DOM-элемента. При этом:
ghostClass часто используется вместе с:
animation — плавное перемещение
элементов при сортировке:const sortable = new Sortable(listElement, {
animation: 150,
ghostClass: 'sortable-ghost'
});
chosenClass — класс, применяемый к
элементу в момент выбора (до начала drag):const sortable = new Sortable(listElement, {
chosenClass: 'sortable-chosen',
ghostClass: 'sortable-ghost'
});
Отличие ghostClass от chosenClass:
chosenClass активен только при начале
перетаскивания и исчезает сразу, как элемент начинает
двигаться.ghostClass отображает элемент во время
движения, пока drag не завершен.ghostClassМожно изменять поведение ghost-элемента на лету через события SortableJS:
const sortable = new Sortable(listElement, {
ghostClass: 'sortable-ghost',
onStart: function (evt) {
evt.item.classList.add('dragging');
},
onEnd: function (evt) {
evt.item.classList.remove('dragging');
}
});
onStart вызывается при начале перетаскивания.onEnd — по завершении drag-and-drop.ghostClass только на
период перемещения.transition на свойствах, изменяемых
ghostClass.Ghost-элемент можно кастомизировать через JavaScript, создавая уникальные визуальные эффекты:
const sortable = new Sortable(listElement, {
ghostClass: 'sortable-ghost',
onMove: function (evt, originalEvent) {
const ghost = document.querySelector('.sortable-ghost');
ghost.style.transform = 'rotate(5deg) scale(1.05)';
}
});
onMove срабатывает при каждом перемещении
элемента.ghostClass обеспечивает гибкое управление
визуальной составляющей перетаскиваемых элементов, делает
интерфейс более понятным и интерактивным, повышая удобство работы с
динамическими списками в веб-приложениях.