HTML sudrab tashlash


HTML Drag and Drop API elementni sudrab boshqa joyga tashlash imkonini beradi.


ULASHISH

Misol

W3Schools rasmini ikkinchi to‘rtburchakga sudrab tashlang.


Sudrab tashlash (Drag and Drop)

Sudrab tashlash (drag and drop) juda keng tarqalgan funksiya. Bunda obyektni "ushlab", boshqa joyga sudrab olib borasiz.


Brauzerlarda qo‘llab-quvvatlash

Jadvaldagi raqamlar Drag and Drop ni to‘liq qo‘llab-quvvatlaydigan birinchi brauzer versiyasini bildiradi.

API
Sudrab tashlash (Drag and Drop) 4.0 9.0 3.5 6.0 12.0

HTML Drag and Drop API dan foydalanish misoli

Quyidagi misol oddiy sudrab tashlash misolidir:

Misol

<!DOCTYPE HTML>
<html>
<head>
<script>
function dragstartHandler(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function dragoverHandler(ev) {
  ev.preventDefault();
}

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

<div id="div1" ondrop="dropHandler(event)" ondragover="dragoverHandler(event)"></div>

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

</body>
</html>
O‘zingiz sinab ko‘ring »

Bu murakkab ko‘rinishi mumkin, lekin sudrab tashlash hodisasining barcha turli qismlarini ko‘rib chiqaylik.



Elementni sudraladigan qilish

Avvalo: Elementni sudrab tashlanadigan qilish uchun draggable atributini true ga sozlang:

<img id="img1" draggable="true">

or:

<p id="p1" draggable="true">Draggable text</p>

Nimani sudrash kerak — ondragstart va setData()

Keyin, element sudrab olib borilganda nima sodir bo‘lishi kerakligini belgilang.

Yuqoridagi misolda <img> elementining ondragstart atributi sudrab olib boriladigan ma’lumot nima ekanligini belgilaydigan funksiyani (dragstartHandler(ev)) chaqiradi.

dataTransfer.setData() metodi sudrab olib boriladigan ma’lumotning turini va qiymatini belgilaydi:

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

Bu holda ma’lumot turi "text" va qiymat sudrab tashlanadigan elementning id’si ("img1").


Qayerga tashlash - ondragover

<div> elementining ondragover atributi sudrab olib borilgan ma’lumot qayerga tashlanishi mumkinligini belgilaydigan funksiyani (dragoverHandler(ev)) chaqiradi.

Standart holda ma’lumotlar/elementlar boshqa elementlarga tashlanishi mumkin emas. Tashlashga ruxsat berish uchun biz elementning standart ishlov berilishini to‘xtatishimiz kerak.

Buni ondragover hodisasi uchun preventDefault() metodini chaqirish orqali amalga oshiramiz:

function dragoverHandler(ev) {
  ev.preventDefault();
}

Tashlash amalini bajarish — ondrop

Sudrab olib borilgan ma’lumot tashlanganda, drop hodisasi sodir bo‘ladi.

Yuqoridagi misolda <div> elementining ondrop atributi dropHandler(event) funksiyasini chaqiradi:

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

Kod tushuntirilishi:

  • Brauzerning ma’lumotga standart munosabatini to‘xtatish uchun preventDefault() ni chaqiring (standart holda tashlanganda havola sifatida ochiladi)
  • Sudrab olib borilgan ma’lumotni dataTransfer.getData() metodi bilan oling. Bu metod setData() metodida bir xil turdagi qilib belgilangan har qanday ma’lumotni qaytaradi
  • Sudrab olib borilgan ma’lumot — sudrab olib borilgan elementning id’si ("img1")
  • Sudrab olib borilgan elementni tashlanadigan elementga qo‘shing

Ko‘proq misollar

Misol

<h1> elementini <div> elementiga sudrab tashlash:

<script>
function dragstartHandler(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function dragoverHandler(ev) {
  ev.preventDefault();
}

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

<div id="div1" ondrop="dropHandler(event)" ondragover="dragoverHandler(event)"></div>

<h1 id="h1" draggable="true" ondragstart="dragstartHandler(event)">W3Schools.com</h1>
O‘zingiz sinab ko‘ring »

Misol

<a> elementini <div> elementiga sudrab tashlash:

<script>
function dragstartHandler(ev) {
  ev.dataTransfer.setData("text", ev.target.id);
}

function dragoverHandler(ev) {
  ev.preventDefault();
}

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

<div id="div1" ondrop="dropHandler(event)" ondragover="dragoverHandler(event)"></div>

<a id="link1" href="https://w3schools.com" draggable="true" ondragstart="dragstartHandler(event)">W3Schools.com</a>
O‘zingiz sinab ko‘ring »

Misol

Rasmni ikkita <div> elementi o‘rtasida ikki tomonga sudrab tashlash:

O‘zingiz sinab ko‘ring »

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!