HTML5 обеспечивает API прямого перетаскивания, что очень удобно для достижения эффекта перетаскивания. Для достижения различных функций перетаскивания.
Если вы хотите перетаскивать определенный элемент, вы должны установить свойства Draggable Element на True. Элементы IMG и элементы установлены с перетаскиваемыми атрибутами в True, которые можно напрямую перетаскиваться и отбросить.
ПеретаскиватьИнциденты перетаскивания генерируются различными элементами. Элемент перетаскивается и сбрасывается, и он может в конечном итоге достичь элемента, который он хочет разместить на многих элементах. Здесь я временно ссылаюсь на элемент перетаскивания и падения и элемент процесса, а элемент, который я достиг, называется целевым объектом. Разные объекты имеют разные события перетаскивания.
Исходный объект:
Объект процесса:
Целевой объект:
<div id = source draggable = true> aement </div> <div id = process> b element </div> <div id = target> c element </div> <script> var source = document.getelementbyid '( 'Source'), // element proces = document.getElementbyId ('process'), // b -элемент Target = document.gelementbyId ('target'); События Dragstart генерируются элементом A для генерации console.log ('элемент начинает перетаскиваться');}, false) proces.addeventristener ('dragner', function (ev) {// Событие Dragenter генерируется B Элемент. , False) target.addeventListener ('drop', function (ev) {// Событие Drop генерируется console.log ('a a element для c element');) Document.Ondragover = function (e) {e.preventDefault ( );} </script>Объект DataTransfer
Объект передачи данных Datatransfer представлен во всех событиях перетаскивания -Drop для передачи данных между объектами исходных и целевых объектов. Затем узнайте методы и атрибуты этого объекта, чтобы понять, как он передает данные.
setData ()Этот метод хранится в объекте Datatransfer. Получите два параметра, первый указывает на строку для хранения типа данных, и теперь поддерживает следующее:
Второй параметр - это данные, которые будут сохранены. Например:
event.datatransfer.setData ('text/plain', 'hello world');getData ()
Этот метод считывает данные из объекта Datatransfer. Параметр - это тип данных, указанных в SetData. Например:
event.datatransfer.getData ('text/plain');ClearData ()
Этот метод удаляет данные, хранящиеся в объекте DataTransfer. Параметры являются необязательными для типов данных. Если параметры пусты, очистите все типы данных. Например:
event.datatransfer.cleardata ();setDragimage ()
Этот метод настроен на перетаскивание значков с помощью элементов IMG. Получите три параметра, первым является элемент значка, вторым является смещение оси x элемента значка из указателя мыши, а третьим является смещение оси y из элемента значка из указателя мыши. Например:
Var source = document.getElementById ('Source'), icon = document.createElement ('img'); 10, -10)}, false)Effectalling и Droppecteptients
Эти два атрибута объединены, чтобы установить визуальный эффект перетаскивания.
Стоит отметить, что IE не поддерживает объект Datatransfer. Да, независимо от того, какая версия IE поддерживается.
Реализовать сортировку перетаскиванияИспользование API -интерфейсов перетаскивания уже знакомо с вышеизложенным. Сначала посмотрим на эту идею:
Основной код заключается в следующем:
var source = document.queryselectiverall ('. List'), dragelement = null; ) {dragelement = this;}, false); [i] .AdDeventListener ('DragLeave', function (ev) {if (dragelement! = this) {if (this == this.parentnode.lastelementchildchild || this.parentnod e.lastchild) {this.parentnode.appendchild (dragelement );}}, false)};
Полный кодовый адрес: Drag-Demo
совместимыйОн в основном совместим в т.е., но, по крайней мере, его можно перетащить и отсортировать, по крайней мере, в IE10.
И в моем простом тесте обнаружено, что когда элементы не будут установлены в т.е., событие Dragleave не будет запускается.
Более важным моментом является iOS и Android, что является совершенно несовместимым. К счастью, в мобильном конце есть плавка, чтобы сделать его идеально совместимым.
Адрес подключаемого модуля: iOS-HTML5-DRAG-DROP-SHIM
Вам нужно только представить плагин -в исходном коде, чтобы перетащить его на мобильном терминале.
<script> var iosdragdropshim = {enablenerlave: true} </script> <script src = vendor/ios-drop.js> </script>
Приведенное выше содержимое этой статьи.