HTML | Перетащить и отпустить
Перетаскивание - это очень интерактивная и удобная для пользователя концепция, которая упрощает перемещение объекта в другое место путем его захвата. Это позволяет пользователю щелкнуть и удерживать кнопку мыши над элементом, перетащить его в другое место и отпустить кнопку мыши, чтобы опустить элемент туда. В HTML 5 Drag and Drop намного проще кодировать, и любой элемент в нем можно перетаскивать.
События перетаскивания: существует множество событий перетаскивания, некоторые из них перечислены ниже:
События | Описание |
---|---|
ondragstart | Вызывает функцию перетаскивания (событие), которая указывает, какие данные нужно перетащить. |
ондрагентер | Чтобы определить, должна ли цель перетаскивания принять перетаскивание. Если дроп должен быть принят, то это событие должно быть отменено. |
Ondragleave | Происходит, когда мышь покидает элемент перед допустимой целью перетаскивания во время перетаскивания |
ондраговер | Указывает, куда можно перетащить перетаскиваемые данные |
капля | Указывает, где произошло перетаскивание в конце операции перетаскивания. |
ондрагенд | Происходит, когда пользователь закончил перетаскивать элемент |
Объект передачи данных: свойство передачи данных используется, когда происходит весь процесс перетаскивания. Он используется для удержания перетаскиваемых данных из источника в нужное место. С ним связаны следующие свойства:
Атрибуты | Описание |
---|---|
dataTransfer.setData (формат, данные) | Устанавливает данные для перетаскивания |
dataTransfer.clearData (формат) | Вызов этой функции без аргументов очищает все данные. Вызов его с аргументом формата удаляет только эти конкретные данные. |
dataTransfer.getData (формат) | Возвращает данные указанного формата. Если таких данных нет, возвращает пустую строку. |
dataTransfer.types | Это свойство возвращает массив всех форматов, установленных в событии dragstart. |
dataTransfer.files | Он используется для возврата всех файлов, которые необходимо удалить. |
dataTransfer.setDragImage (элемент, x, y) | Он используется для отображения существующего изображения в качестве перетаскиваемого изображения вместо изображения по умолчанию рядом с курсором. Координаты указывают место падения |
dataTransfer.addElement (элемент) | Добавляет указанный элемент для рисования как изображение обратной связи при перетаскивании |
dataTransfer.effectAllowed (значение) | Сообщает браузеру, что пользователю разрешены только перечисленные типы операций. Для свойства можно задать следующие значения: none, copy, copyLink, copyMove, link, linkMove, move, all и неинициализированный. |
dataTransfer.dropEffect (значение) | Управляет обратной связью, которую пользователь получает во время событий dragenter и dragover. Когда пользователь наводит курсор на целевой элемент, курсор браузера указывает, какой тип операции будет выполняться (например, копирование, перемещение и т. Д.). Эффект может принимать одно из следующих значений: нет, копировать, связывать, перемещать. |
Процедура перетаскивания:
- Шаг 1. Сделайте объект перетаскиваемым
- Сначала установите для атрибута draggable значение true, чтобы этот элемент можно было перетаскивать <img draggable = «true»>
- Затем укажите, что должно произойти при перетаскивании элемента. Атрибут ondragstart вызывает функцию drag (event), которая указывает, какие данные нужно перетащить. Метод dataTransfer.setData () устанавливает тип данных и значение перетаскиваемых данных.
- Слушатель событий ondragstart установит разрешенные эффекты (копирование, перемещение, ссылка или некоторая комбинация).
function dragStart (ev) { ev.dataTransfer.setData ("текст", ev.target.id); }
- Шаг 2: Отбрасываем объект
- Событие ondragover указывает, куда можно перетащить перетаскиваемые данные. По умолчанию данные / элементы нельзя отбрасывать в другие элементы. Чтобы разрешить сброс, он должен предотвратить обработку элемента по умолчанию. Это делается путем вызова метода event.preventDefault ().
- Наконец, событие drop, которое позволяет выполнить фактическое падение.
function dragDrop (ev) { ev.preventDefault (); var data = ev.dataTransfer.getData («текст»); ev.target.appendChild (document.getElementById (данные)); }
Пример 1:
Выход:
Объяснение:
- Начните перетаскивание, установив для свойства draggable элемента, который нужно перетащить, значение true.
- Получите перетаскиваемые данные с помощью метода dataTransfer.getData (). Этот метод вернет любые данные, для которых был задан тот же тип в методе setData ().
- Вызовите метод event.preventDefault (), чтобы разрешить удаление элементов в других элементах, предотвращая обработку элемента по умолчанию.
- Элемент хранится в переменных данных, которые мы добавляем в элемент drop.
Example 2: This example illustrate the image drag and drop.
<!DOCTYPE HTML> < html > < head > < script > function allowDrop(ev) { ev.preventDefault(); } function dragStart(ev) { ev.dataTransfer.setData("text", ev.target.id); } function dragDrop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); } </ script > < style > .div1 { width: 240px; height: 75px; padding: 10px; border: 1px solid black; background-color: #F5F5F5; } p { font-size:20px; font-weight:bold; } .gfg { font-size:40px; color:#009900; font-weight:bold; } </ style > </ head > < body > < div class = "gfg" >GeeksforGeeks</ div > < p >Image Drag and Drop in boxes</ p > < div class = "div1" ondrop = "dragDrop(event)" ondragover = "allowDrop(event)" > < img id = "drag1" src = "https://media.geeksforgeeks.org/wp-content/cdn-uploads/Geek_logi_-low_res.png" draggable = "true" ondragstart = "dragStart(event)" width = "220" height = "70" ></ div > < br > < div class = "div1" ondrop = "dragDrop(event)" ondragover = "allowDrop(event)" ></ div > </ body > </ html > |
Выход: