Späť na blog

Vytváranie prvkov typu Drag and Drop pomocou čistého, vanilla JavaScriptu

Vytváranie prvkov typu Drag and Drop pomocou čistého, vanilla JavaScriptu

JavaScript je jedným z najpopulárnejších programovacích jazykov, ktorý disponuje viac ako 24 frameworkmi a približne 84 knižnicami. Je to jediný programovací jazyk, ktorý je natívne podporovaný všetkými prehliadačmi. Okrem toho tento jazyk podporuje dynamické typovanie a je vynikajúcou voľbou pre vykresľovanie a animácie. JavaScript môžete využiť na pridanie interaktívneho správania na front-ende, riadenie back-endu, vytváranie webových a mobilných aplikácií a mnoho ďalšieho. Možnosť pridať efekty na akúkoľvek webovú stránku a prispôsobiť ju robí z tohto jazyka obľúbený nástroj medzi vývojármi na celom svete.

V tejto príručke vás prevedieme krokmi vytvorenia prvkov typu drag and drop pomocou čistého Vanilla JavaScriptu. Okrem toho pôjdeme ešte o krok ďalej a vytvoríme aplikáciu „Morning Scheduler“ pomocou HTML Drag and Drop API handlerov udalostí.

Požiadavky

Ak chcete postupovať podľa tohto návodu, musíte mať:

  • Základy JavaScriptu.
  • Znalosť HTML a CSS bude veľkou výhodou.

Krok 1: Vytvorenie nového projektu

Začnite vytvorením kontajnera s dvoma dcérskymi prvkami. Prvý dcérsky prvok použijeme na ťahanie a druhý dcérsky prvok na ukladanie pretiahnutých prvkov.

Poznámka: V tomto návode budeme s kontajnermi zaobchádzať ako s úložiskom na uchovávanie všetkých pretiahnutých prvkov. Zjednodušene povedané, všetky prvky pretiahnuté z prvého dcérskeho prvku sa pustia do druhého dcérskeho prvku.

Next, use the cd command to change the directory to the drag-and-drop-demo  folder:

Step 2: Initial Set-up

In this tutorial, we will create HTML, CSS, and JavaScript files and connect them. First, name the files name as index.html, styles.css, and scripts.js files respectively.

Next, add the title as “My Morning Planner” in the index.html file:

Next, link CSS, and add JavaScript to HTML:

Teraz vytvoríme počiatočný kontajner a pridáme prvok, ktorý chceme presúvať. Nezabudnite nastaviť atribút draggable="true", a pridajte zoznam položiek, ktoré chcete presúvať.

Ďalej pridajte nasledujúce riadky kódu do <body> tagov:

Uložte a zatvorte súbor index.html. Potom sa pokúste otvoriť súbor index.html vo vašom prehliadači a uvidíte, že sa otvorí stránka:

Ďalej upravme vzhľad nášho index.html  pomocou CSS, aby vyzeral reprezentatívne.

Krok 3: Stylovanie pomocou CSS

Ďalej pridajte štýly pre všetky prvky, ktoré sme zahrnuli do nášho súboru index.html súboru:

Skúste otvoriť súbor index.html vo vašom prehliadači a pozrite si výsledok:

Creating Drag and Drop Elements with Pure, Vanilla JavaScript 1

Hoci sme dokončili štruktúru a pridali štýly, prvky sú stále statické. To znamená, že ich nemôžeme presúvať ani nimi hýbať, kým k nim nepridáme dynamické funkcie. V ďalšom kroku privítame JavaScript a dynamické správanie.

Krok 4: Predstavenie JavaScriptu

V tomto kroku si predstavíme JavaScript a sprevádzkujeme všetky prvky na ťahanie. V súbore JS nastavte prvky, ktoré budeme potrebovať. Definujme draggable a containers na ťahanie a pustenie prvkov.

Pridajte tieto dva riadky kódu do súboru scripts.js :

Ďalej nastavte všetky poslucháče udalostí. Začnite pridaním prvku dragstart ako prvého poslucháča udalosti na add do zoznamu tried. Podobne pridajte prvok dragend ako druhého poslucháča udalosti na remove zo zoznamu tried.

Pripojte nasledujúce EventListeners vo vašom súbore scripts.js :

Ďalej pridajte dragover EventListener pre prechádzanie a presúvanie našich prvkov. Nastavte aktuálny draggable prvok pomocou querySelector a potom pripojte ťahateľný prvok k aktuálnemu kontajneru:

V predvolenom nastavení je pustenie vnútri prvku zakázané. Použite e.preventDefault na jeho povolenie:

Ďalej vytvorte prvok na určenie pozície myši. Začnite vytvorením funkcie getDragAfterElement, ktorá bude prijímať dva parametre. Prvým bude container a druhý parameter y sa postará o vertikálnu pozíciu myši. Teraz použite funkciu querySelectorAll na získanie našich ťahateľných prvkov. Definujte draggableElements pre všetky ťahateľné prvky vo vnútri kontajnera:

Ďalej zavolajte funkciu reduce, ktorá prejde zoznam ťahateľných prvkov a tiež určí konkrétny prvok za kurzorom myši. Ďalej return funkciu reduce pridaním prvého prvku ako closest a druhého ako child. Taktiež porovnajte offset a pridajte podmienky.

Pridajte nasledujúce riadky kódu do scripts.js súboru:

In the last part, we will set conditions and check the AfterElements. Check the AfterElements using if-else conditions, and if it is set to null, append a child at the end of the list using appendChild. Else, add the element draggable and afterElement as parameters in the insertBefore function.

Include this in the scripts.js file:

Now we have the necessary setup done. Open your browser and run index.html in your browser. You will see the page “My Morning Scheduler” with options to drag and drop. The white line in the middle acts as a bridge to differentiate between the tasks already done to the ones that are yet to be done:

Conclusion

Drag and Drop is an excellent option to use in modern-day websites. In this guide, we have used a handful of event handlers to make the tutorial easy for beginners. There are eight event handlers in total and we encourage you to use them as you advance. Once you’re comfortable using the functions and the code used in this tutorial, you can dive more into JavaScript topics like jQuery and start exploring. You can also try building a To-Do app, weekly progress tracker using JavaScript date and time features, and other applications using the concepts you have just learned.

To further learn more on JavaScript and web development topics, check these resources from our blog:

Príjemnú prácu s počítačom!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.