Вопросы по оформлению drag'n'drop ??
Сделал простенький драг-дроп, есть вопросы:
1) При перетаскивании элемента он становится полупрозрачным. Вроде это дефолтное поведение для картинок и элементов с draggable="true". Но выглядит это конечно так себе. Можно как-то сделать, чтобы при захвате элемента он оставался самим собой, не становился тусклым?
2) Поставил элементу cursor: pointer, но при его захвате и наведении на Целевую зону у курсора появляется плюсик. Можно как то изменить?
Если обе эти вещи никак не изменить, есть какой-то ещё способ делать drag/drop по другому?
Код: https://codepen.io/Vegan-AK/pen/NWoJZgR
Дополнительно:
Насколько я понимаю - только через preventDefault и написание собственной логики перетаскивания.
Элементы полупрозрачными не становятся.
Я сейчас изложу свое понимание - не сверялся со справочниками и никогда не заморачивался по этому поводу, так что могу ошибаться.
У браузера есть встроенная логика обращения с перетаскиваемыми элементами. Потаскай любую катринку на любом сайте - она потащится. Так же как ссылки, к примеру. Для кастомизации такого рода событий есть event,preventDefault. Ты так отменяешь встроенное действие, а поверх события для этого действия пишешь свою логику. Вот пример. Сгенерирован нейросетью, мне лень дорабатывать. Но логика вполне ясна. Отменил - написал свое. Так что при перетягивании можешь делать абсолютно что угодно.
П.С. - может есть способ переопределить и стандартное поведение браузера при перетаскивании, но я такого никогда не видел.
- Тоесть основной совет - берешь родной драг & дроп и отменяешь его к фигам ? ))) Не, я тоже примерно в том направлении делаю, но сам совет выглядит как-то нетехнологично, согласись, где-то гуглхром что-то делает не то...
- ksnk, ты хотел написать "делает не то что мне хотелось бы"? Это да. А что удивляет? Не нравится по умолчанию? Пишешь новое. Если не удалось написать через css-пишешь через скрипты.
Можно поискать ещё вебкиты на этот случай, но не думаю что такое есть ,по причине невостребованности . - ksnk, и что удивительного в отмене? При сабмите форм вон в 90 процентах случаев отменяют дефолтное поведение ради удобства - и ничего. Контекстное меню ооочень часто свое пишут (опять отмена). Это не значит что разработчики браузера дураки или упустили что-то. Есть скрипты, вот и дописывай поведение.
Ответы:
через эту библиотеку можно сделать разные перетаскивания, не только сортировку. можно перетаскивать меджу разными группами. я даже древовидную структуру на ней делал
https://github.com/SortableJS/Sortable
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для реализации drag'n'drop на веб-странице можно использовать HTML5 Drag and Drop API. Вот пример простой реализации drag'n'drop с помощью JavaScript:
1. Начнем с HTML разметки, где у нас будет два элемента - элемент, который мы будем перетаскивать, и область, куда мы будем его перетаскивать:
<div id="dragElement">Перетащите меня</div> <div id="dropZone">Сюда перетащите</div>
2. Далее, добавим JavaScript код, который будет обрабатывать события drag'n'drop:
// Получаем элементы var dragElement = document.getElementById('dragElement'); var dropZone = document.getElementById('dropZone'); // Обрабатываем событие начала перетаскивания dragElement.addEventListener('dragstart', function(e) { e.dataTransfer.setData('text', e.target.id); }); // Обрабатываем событие окончания перетаскивания dropZone.addEventListener('drop', function(e) { e.preventDefault(); var data = e.dataTransfer.getData('text'); var draggedElement = document.getElementById(data); dropZone.appendChild(draggedElement); }); // Обрабатываем событие перетаскивания над зоной dropZone.addEventListener('dragover', function(e) { e.preventDefault(); });
3. Теперь у нас есть простая реализация drag'n'drop на веб-странице. При перетаскивании элемента "Перетащите меня" в область "Сюда перетащите", элемент будет перемещен в эту область.
Это только базовый пример, и вы можете доработать его, добавив стилизацию, дополнительные функции и т.д. Надеюсь, это поможет вам реализовать drag'n'drop на вашем сайте!