HTML5 Vedä ja Pudota

HTML5 on mahdollista vetää ja pudottaa HTML-elementtejä sisällä HTML-sivun. JavaScript-tapahtuman kuuntelijoiden kautta voit päättää, mitä tapahtuu, kun käyttäjä vetää ja pudottaa elementtejä.

Aikana vedä ja pudota HTML-elementtejä voi ottaa kaksi roolia:

  1. Vedettäviä
  2. Pudota kohde / drop zone.

vedettäviä elementti on elementti, johon käyttäjä olisi voinut vetää noin HTML-sivun ja pudota jonnekin, jotkut toiminta tapahtuu. Tämä voi olla yksi tai useampi Elementti.,

pudotustavoite tai pudotusvyöhyke on elementti, johon vedettävät elementit pudotetaan.

Vedä ja Pudota Tapahtumia

valvoa, mitä tapahtuu, kun vetämällä ja pudottamalla HTML-elementtejä, sinun täytyy tehdä 3 vaihetta:

  1. Aseta HTML-elementtejä vedettäviä.,
  2. Liitä tapahtuma kuuntelijat vedettäviä HTML-elementtejä
  3. Liitä tapahtuma kuuntelijoita pudota tavoite HTML-elementtejä

tapahtumat ja ominaisuudet on kuvattu täällä:

Ensimmäinen asetat draggable="true" attribuutti on HTML-elementti(s) tehdä vedettäviä.

Toinen liität tapahtuman kuuntelijoita vedettäviä elementti dragstart ja dragend tapahtumia., Näiden tapahtumakuuntelijoiden sisällä voit toteuttaa mitä tapahtuu, kun käyttäjä alkaa raahata elementtiä ja kun vetäminen loppuu.

kolmas kiinnität tapahtumakuuntelijat pudotuskohdeelementtiin. Tapahtumia voit kuunnella ovat dragenter, dragover, dragleave ja drop.

dragenter tapahtuma on ammuttu, kun käyttäjä vetää päälle vedettäviä pudota tavoite., Tämä tapahtuma vain välähtää, kun vedettäviä elementti muuttuu olemasta ulkona on yli, joka on tyypillisesti määräytyy asemaa hiiren kursori.

Kun vedettäviä elementti on yli pudota kohde, dragover tapahtuma tulipalot, ja pitää ampua niin kauan kuin vedettäviä elementti on kestänyt yli pudota tavoite.

Jos käyttäjä raahaa vedettäviä esine pois pudota kohde jälleen dragleave tapahtuma on ammuttu.

Jos käyttäjä putoaa vedettäviä esine pudota kohde, drop tapahtuma on ammuttu.,

vedä ja pudota-Tapahtuman esimerkki

tässä on esimerkki, jolla voit pelata. Yritä vetää HTML5 logo päälle pudota tavoite ja nähdä, mitä tapahtuu. Kokeile sekä kuvan pudottamista että sen vetämistä uudelleen esiin.

Pudota elementti täällä
dragstart:
dragend:
dragenter:
dragover:
dragleave:
pudota:

Vedä ja Pudota-Koodi

Anna meille katsomaan miten käsitellä vedä ja pudota tapahtumia., Nähdä, että meidän tulee ensin luoda <img> elementti, jonka voimme vetää. Tässä on HTML-koodi, että:

<img src="http://tutorials.jenkov.com/html5/..." draggable="true">

Kun meillä on vedettäviä elementti meidän täytyy pudota kohde. Aion käyttää <div> elementti:

<div style="width: 200px; height: 200px;">Drop here</div>

Kun meillä on vedettäviä elementti ja pudota kohde-elementti, meidän täytyy liittää tapahtuman kuulijoita., Tässä on JavaScript-koodi, että:

dragStart() funktiokutsut event.dataTransfer.setData() jotta asettaa tietoja, jotka on siirretty pudota kohde, kun elementti on laskenut. Mitä tietoja tarvitset oikein loppuun pudotustoiminnon, aseta se tähän. Asetat sekä datan että sen mime-tyypin.

dragOver() ja drop() tapahtuman käsittelijät sekä soittaa event.preventDefault() ja palaa vääriä. Tämä on tarpeen, jotta vedä ja pudota toimivat kunnolla., Selain voi olla joitakin default vedä ja pudota toiminta, joka sinun täytyy poistaa, jotta koodi toimi.

Huomaa myös, että drop() event handler-funktio lukee tiedot asetettu dragStart() kautta puhelun event.dataTransfer.getData(). Se ohittaa MIME-tyypin tietojen parametrina, jotta se saadaan kunnolla purettua.

Tämä on kaikki, mitä tarvitaan vetämään ja pudottamaan HTML5: ssä. Voit tehdä siitä hieman visuaalisesti miellyttävä vaikka, kuten näemme seuraavassa osassa.,

visuaalinen palaute

voit käyttää drag and drop-tapahtumakäsittelytoimintoja antamaan käyttäjälle selkeämpää visuaalista palautetta.

Ensinnäkin voit merkitä raahattavan elementin siten, että käyttäjä näkee, mitä elementtiä hän vetää. Jos useat elementit näyttävät samalta ja niitä kaikkia voi raahata, käyttäjän on mukava nähdä, kumpaa niistä raahataan. Voit tehdä sen vastauksena dragstart tapahtumaan. Tässä on esimerkki:

Kun veto loppuu, haluamme kuitenkin poistaa rajan uudelleen., Tämä tapahtuu vastauksena dragend tapahtuma. Näin se tehdään:

Nyt käyttäjä saa visuaalista palautetta, josta näkyy, mitä elementtiä raahataan.

haluamme myös näyttää käyttäjälle, että draggable-elementti on mahdollista pudottaa, kun se vedetään pudotuskohteen yli. Jälleen me muutamme elementin rajaa. Teemme niin vastauksena dragenter, dragleave ja drop tapahtumia., Näin tehdään:

nyt pudotuskohteen raja muuttuu vihreäksi ja murskaantuu, kun raahattava Elementti vedetään sen yli. Raja poistetaan, kun vedettäviä elementti on vedetty ulos, tai jos elementti on pudonnut pudota tavoite.

esimerkissä ei näytä dragOver() event handler-funktio, mutta varmista, että et lisää se estää oletuksena selaimen käyttäytymiseen.,

Tässä on koodi kokonaisuudessaan sen jälkeen, kun visuaalinen palaute on ollut seuraavasti:

Myös DataTransfer Esine, effectsAllowed, dropEffect ja setDragImage()

Voit lisätä visuaalinen palaute annetaan käyttäjälle aikana vedä ja pudota toimia käyttäen DataTransfer objekti. DataTransfer objektilla on 2 attribuuttia ja yksi toiminto, jota voit käyttää tähän tarkoitukseen., Nämä ovat:

  • effectsAllowed
  • dropEffect
  • setDragImage()

Voit käyttää DataTransfer objekti dragstart ja drop tapahtuma esineitä. Tässä on esimerkki dragstart kuuntelija toiminto, joka asettaa effectsAllowed omaisuutta DataTransfer tavoite:

effectsAllowed omaisuus on käytetty selaimet, muuttaa hiiren kursori näyttää, mitä toimia suoritetaan, kun vetämällä ja pudottamalla elementti., Tyypillisesti hiiren kursori muuttuu, kun raahattu elementti on pudotuskohteen yläpuolella. Ei ennen. Kelvolliset arvot effectsAllowed omaisuus ovat:

  • ei mitään
  • kopioi
  • liikkuvat
  • copyMove
  • linkki
  • linkMove
  • copyLink
  • kaikki
  • alustamattoman

dropEffect on tarkoitus näyttää käyttäjälle kautta (kohdistin) mitä tapahtuu, kun hiiri leijuu pudota kohde, mutta tätä kirjoitettaessa (helmik. 2014) selaimet näyttävät sivuuttavan tämän., Kelvolliset arvot dropEffect omaisuus ovat:

  • ei mitään
  • kopioi
  • linkki
  • liikkuvat

setDragImage(image, x, y) toiminto voidaan asettaa kuva näkyy selaimessa, kun käyttäjä raahaa elementti. Oletuksena selain näyttää semi-läpinäkyvä kopio alkuperäisestä elementti, mutta jos haluat eri kuvan, voit asettaa eri kuvan käyttämällä tätä toimintoa. x ja y ominaisuudet voidaan asettaa sijainti siirtymät kuvan, kun näkyy., Oletuksena vetokuvan vasen yläkulma sijaitsee hiiren osoittimen kärjessä. Asettamalla eri x ja y ominaisuudet voit muuttaa tätä. Voit käyttää joko positiivinen tai negatiivinen x ja y siirtymät.

Tässä on koodi, esimerkki osoittaa, miten asettaa vetämällä kuvan sisällä dragStart() tapahtuman kuuntelija toiminto:

Tässä on esimerkki, jonka avulla voit pelata eri asetukset DataTransfer objekti., Yritä muuttaa effectsAllowed ja vedä kuvaa ja katso, mitä tapahtuu, kun vedät HTML5-logo alas div pudota kohde.

Pudota täällä

Vetämällä Tiedostoja Selaimeen

on mahdollista vetää tiedostoja suoraan selaimen file system, ja lukea nimi ja sisältö vetää tiedostoja JavaScript. Teet sen HTML5 – TIEDOSTORAJAPINNAN kautta., Tässä on pudotuskohdekuuntelija, joka havaitsee raahatun tiedoston tiedostonimen:

var droptarget2 = document.getElementById("droptarget2");droptarget2.addEventListener("drop" , drop , false);function drop(event) { // Files - array of dragged files. var files = event.dataTransfer.files; for(var i= 0; i 

Notice how the

function does not call the
function, but instead accesses the
property of the
. The
property contains a list of the files that were dragged into the browser. To learn how to read these files, consult the HTML5 File API (I will write about it soon).

You can read more about how to access the dragged files in my HTML5 file API tutorial.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *