Учебник по HTML

HTML ГЛАВНАЯ Введение в HTML HTML-редакторы Базовый HTML HTML-элементы HTML-атрибуты HTML-заголовки HTML-абзацы HTML-стили HTML-форматирование HTML-цитаты HTML-комментарии Цвета HTML HTML CSS HTML-ссылки HTML-изображения HTML Фавикон HTML-таблицы HTML-списки Блок HTML и встроенный HTML-классы HTML-идентификатор HTML-фреймы HTML JavaScript Пути HTML-файлов HTML-голова HTML-макет HTML Отзывчивый HTML компьютерный код HTML-семантика Руководство по стилю HTML HTML-сущности HTML-символы HTML-смайлики HTML-кодировка HTML-кодирование URL-адреса HTML против XHTML

HTML -формы

HTML-формы Атрибуты HTML-формы HTML-элементы формы Типы ввода HTML Атрибуты ввода HTML Атрибуты формы ввода HTML

HTML- графика

HTML-холст HTML SVG

HTML- медиа

HTML-медиа HTML-видео HTML-аудио HTML-плагины HTML YouTube

HTML -API

HTML-геолокация Перетаскивание HTML Веб-хранилище HTML Веб-воркеры HTML HTML SSE

HTML- примеры

HTML-примеры HTML-викторина HTML-упражнения HTML-сертификат Резюме HTML Доступность HTML

HTML -ссылки

Список тегов HTML HTML-атрибуты Глобальные атрибуты HTML Поддержка HTML-браузера HTML-события Цвета HTML HTML-холст HTML-аудио/видео Типы документов HTML Наборы символов HTML HTML-кодирование URL-адреса Языковые HTML-коды HTTP-сообщения HTTP-методы Конвертер PX в EM Горячие клавиши

API перетаскивания HTML


В HTML любой элемент можно перетащить.


Пример

W3Школы

Перетащите изображение W3Schools в прямоугольник.


Перетащите

Перетаскивание — очень распространенная функция. Это когда вы «хватаете» объект и перетаскиваете его в другое место.


Поддержка браузера

Цифры в таблице указывают на первую версию браузера, которая полностью поддерживает перетаскивание.

API
Drag and Drop 4.0 9.0 3.5 6.0 12.0

Пример HTML-перетаскивания

Пример ниже представляет собой простой пример перетаскивания:

Пример

<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
  ev.preventDefault();
}

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">

</body>
</html>

Это может показаться сложным, но давайте рассмотрим все различные части события перетаскивания.



Сделать элемент перетаскиваемым

Прежде всего: чтобы сделать элемент перетаскиваемым, установите для draggableатрибута значение true:

<img draggable="true">

Что перетаскивать — ondragstart и setData()

Затем укажите, что должно происходить при перетаскивании элемента.

В приведенном выше примере ondragstartатрибут вызывает функцию drag(event), которая указывает, какие данные следует перетаскивать.

Метод dataTransfer.setData()устанавливает тип данных и значение перетаскиваемых данных:

function drag(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

В этом случае тип данных — «текст», а значение — идентификатор перетаскиваемого элемента («drag1»).


Куда бросить - ондраговер

Событие ondragoverуказывает, куда можно перетащить перетаскиваемые данные.

По умолчанию данные/элементы не могут быть удалены в других элементах. Чтобы разрешить удаление, мы должны запретить обработку элемента по умолчанию.

Это делается путем вызова event.preventDefault()метода для события ondragover:

event.preventDefault()

Сделать падение - ondrop

Когда перетаскиваемые данные удаляются, происходит событие перетаскивания.

В приведенном выше примере атрибут ondrop вызывает функцию drop(event):

function drop(ev) {
  ev.preventDefault();
  var data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));
}

Объяснение кода:

  • Вызовите preventDefault(), чтобы предотвратить обработку данных браузером по умолчанию (по умолчанию открывается как ссылка при сбросе)
  • Получите перетаскиваемые данные с помощью метода dataTransfer.getData(). Этот метод вернет любые данные, для которых был установлен тот же тип в методе setData().
  • Перетаскиваемые данные — это идентификатор перетаскиваемого элемента ("drag1").
  • Добавить перетащенный элемент в перетаскиваемый элемент

Дополнительные примеры

Пример

Как перетаскивать (и бросать) изображение между двумя элементами <div> и обратно: