Sebbene spostare oggetti sia un'interazione particolarmente familiare, nel web essa comporta una serie di considerazioni complesse ed un non meno complesso codice JavaScript per garantire la compatibilità cross-browser.
jQuery UI risponde a questa esigenza anzitutto con il metodo .draggable() che, associato ad un elemento, lo rende trascinabile alla pressione del mouse:
$("#contenitore div").draggable();
Per permettere la personalizzazione grafica, a tutti gli elementi associati all'interazione, viene aggiunta la classe ui-draggable. In più, per permettere un feedback visivo durante il trascinamento, viene aggiunta anche la classe ui-draggable-dragging.
Naturalmente non tutto si risolve con il semplice metodo senza argomenti: un'interazione di questo tipo comporta la necessità di essere personalizzabile per aderire al meglio a diverse situazioni ed interfacce.
Questi i parametri principali che possono essere passati al metodo in un secondo argomento di tipo { chiave : valore} (e il valore di default):
"parent" indica che verrà usato l'elemento contenitore degli elementi.false)'x') o verticale ('y').':input,option')false).sortables() è basato sul drag and drop, ma considera gli elementi mobili come una lista ordinata in cui ognuno occupa una posizione definita.false)'parent', 'document', 'window', [x1, y1, x2, y2].'auto')cursor. Non esiste una vera e propria regola, in questo caso: c'è chi usa 'move' e chi 'pointer'. Personalmente preferisco quest'ultima opzione perché è più intuitiva per l'utente medio.0)1)false)false)'original')'clone', ad esempio, verrà creato un clone dell'oggetto da trascinare e sarà spostato quest'ultimo invece dell'elemento originale fino al suo rilascio. In alcuni casi è possibile generare con una funzione un elemento DOM che funga da segnaposto per l'elemento (per esempio un piccolo box) in modo da limitare la complessità dell'elemento trascinato, aumentare le performance e semplificare l'interfaccia. Di default viene utilizzato direttamente l'elemento da trascinare.false)'default')true)true il contenitore dell'elemento trascinato scorrerà (scrolling) seguendo il movimento. Questa opzione è utile per facilitare l'interazione ad utenti con basse risoluzioni o schermi piccoli o in presenza di aree di trascinamento molto estese.false)true, l'elemento trascinato si incollerà ad un elemento adiacente arrivato ad una certa distanza da questo.'both')'inner', 'outer', 'both'.20)La lista completa delle opzioni è disponibile su questa pagina, mentre qui sono disponibili alcuni esempi.
Oltre alle opzioni è possibile associare all'oggetto passato a .draggable() delle funzioni di callback in base agli eventi dell'interazione, questi sono:
Tutte le callback ricevono due argomenti: l'evento nativo del browser e un oggetto ui con le seguenti proprietà:
{alto,sinistra}, relativamente all'elemento contenitore{alto,sinistra}, relativamente alla pagina
PhantomJS, headless browser per test con JavascriptIl tool ideale per realizzare, da terminale, operazioni in remoto su... |
Creare e leggere QR Code in JavaScriptApplicazioni 'QR Code enabled' per il Web e per il mobile,... |
Jquery UI Map: web-mapping con Google Maps e jQueryUn plugin di jQuery UI per intefacciare applicaizoni Web/mobile con... |
Scrollorama e Scrolldeck, slideshow d'effetto con jQueryPlugin jQuery per ottenere Slideshow con diversi effetti di scrolling |
jCanvas, un primo semplice graficoAlla scoperta della libreria jCanvas, per semplificare il disegno e... |
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida Javascript: tecniche avanzateUna guida dal taglio pratico per approfondire la programmazione a... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |