НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
HTML5. Уроки для початківців. W3Schools українською

En Es De Fr

HTML5 Drag and Drop


У HTML будь-який елемент можна перетягувати.


W3Schools Logo

Перетягніть за допомогою миші зображення W3Schools з одного прямокутника в інший прямокутник.


Drag and Drop - Перетягнути і кинути

Drag and Drop - дослівний переклад з англійської мови - 'Перетягнути і кинути'.

Перетягування (Drag and drop) - дуже розповсюджена функція. Це коли ви 'захоплюєте' мишкою об’єкт і перетягуєте його в інше місце.

В HTML5 перетягування є частиною стандарту: будь-який елемент може бути перетягнутим. Для цього використовується JavaScript.


Підтримка браузерами

Цифри в таблиці визначають першу версію браузера, яка повністю підтримує перетягування (Drag and Drop).

API
Drag and Drop 4.0 9.0 3.5 6.0 12.0

HTML Drag and Drop Приклад

Нижче наведений приклад простого перетягування:

Приклад

<!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);
}

В цьому випадку тип даних - 'text', а значення - id елемента перетягування ('drag1').


Куди кинути перетягнувши - ondragover

Подія 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();
  • Перетягнуті дані - це id перетягнутого елемента ('drag1');
  • Додайте перетягнутий елемент в елемент drop.

Більше прикладів

Перетягніть за допомогою мишки зображення вперед і назад

Як перетягнути (і скинути) зображення вперед і назад між двома елементами <div> (з одного прямокутника в інший):

Спробуйте самі »


Коментарі