Ridimensionare le finestre del nostro sistema operativo è un'operazione che compiamo spesso e che serve a gestire meglio la limitata dimensione del nostro monitor; al contrario, sul web l'esigenza di poter ridimensionare blocchi e finestre a comparsa è stata per molti anni poco sentita, viste le limitate interazioni disponibili per l'utente.
Con l'introduzione di finestre modali al posto dei pop-up e successivamente di layout "mobili" e personalizzabili, è stato necessario realizzare anche questo tipo di interazione.
jQuery UI mette a disposizione il metodo .resizable(), che permette di ridimensionare un elemento con lo stesso tipo di azioni ormai familiari nelle applicazioni desktop semplicemente richiamando su di esso il metodo:
$("#box").resizable();
In questo modo verranno aggiunte delle maniglie (di default sul lato destro, basso e nell'angolo inferiore destro del box) con le quali poter allargare o restringere un elemento (esempio).
L'utilizzo di questa interazione è molto delicato poiché il ridimensionamento di un elemento potrebbe causare problemi alla visualizzazione di quelli adiacenti o addirittura "scombinare" l'intero layout. Proprio per questo è importante personalizzarne il comportamento per adattarlo alle nostre esigenze.
Le opzioni di personalizzazione più importanti in questo caso sono:
null)false)false)true verranno mantenute le proporzioni originali altrimenti si possono impostare proporzioni personalizzate come 0.5 o 16/9;'e, s, se')Fra le opzioni troviamo anche grid, delay e distance, che ricalcano quelle già trovate in .draggable(). Rispettivamente indicano una griglia di ridimensionamento fissa, dopo quanto tempo avviare l'interazione e dopo quanti pixel di trascinamento di una maniglia. La regolazione di questi parametri concorre alla sensazione di "appiccicosità" dell'elemento al layout sottostante.
Infine, due tipologie di opzioni contrastanti sono animate e ghost: la prima abilita il ridimensionamento con un'animazione (e specifici valori per andamento e durata), la seconda crea un helper semitrasparente che fa da traccia durante il ridimensionamento.
La differenza a livello di interfaccia è sostanziale: come succede nei sistemi desktop, un'animazione risulta senza dubbio più "spettacolare" tuttavia richiede più risorse rispetto ad un helper e soprattutto rallenta l'utente che deve aspettare la fine dell'effetto per continuare il suo lavoro.
In generale, se non strettamente necessario, l'animazione risulta superflua e controproducente.
Ecco alcuni esempi di personalizzazione del metodo.
Chiudiamo questa lezione con la lista di eventi collegati a .resizable(), che sono start, stop e resize, lanciati all'inizio, alla fine e durante il ridimensionamento.
Tutti questi eventi accettano due argomenti: l'evento Javascript e un oggetto ui con le seguenti proprietà:
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 |