Tutorial jQuery – V – Efecte
30 DecDupă ce am văzut cum funcţionează selectorii şi event-urile în jQuery, putem trece la pasul următor: efectele. Mulţi folosesc o librărie JS (jQuery, Prototype sau orice altceva) aproape exclusiv pentru efecte.
jQuery include câteva efecte simple dar majoritatea sunt doar variaţii ale unei singure funcţii: animate(). Toate efectele au un parametru pentru o funcţie callback. Efectele built-in sunt:
show()/hide()- folosite fără niciun parametru doar schimbădisplay:noneîndisplay:blocksaudisplay:inline(în funcţie de tipul elementului) şi invers. Cu un parametru numeric (ex:$('div').show(500)) va genera un efect de redimensionare şi transparenţă de durată 500 ms;slideUp()/slideDown()– ascunde/arată un element printr-un efect de „alunecare”. Acceptă ca parametrii: durată, callback şi easing (nu ştiu cum aş putea traduce asta, dar voi explica mai jos ce face);toggle()/slideToggle()– dacă un element este vizibil îl ascunde şi viceversa. La fel ca la exemplul anterior, poţi specifica durata şi o funcţie callback;fadeIn()/fadeOut()– schimbă opacitatea unui element şi îi seteazădisplay:block/display:none. Parametrii: durată şi callback;fadeTo(durata, opacitate, callback)– schimbă opacitatea unui element fără a-i afecta vizibilitatea. Spre deosebire defadeOut(),fadeTo(300, 0)doar setează opacitatea la 0, fără a ascunde elementul. Este asemănător cudisplay:noneVS.visibility:hidden.
Explicaţii
- funcţia callback rulează după ce efectul este terminat şi arată cam aşa:
$('div').slideUp(500, function(){ alert('Ascuns')})
desigur, se poate folosi şi combinaţia:
var callback = function() { alert('Ascuns'); }; $('div').slideUp(500, callback)
- Easing – reprezintă un calcul matematic ce adaugă un… efect la efect. În cazul în care animaţia vrei să se desfăşoare liniar (cu aceeaşi viteză de la început până la sfârşit), nu ai nevoie de aşa ceva. În schimb, dacă vrei ca un slideUp să înceapă brusc şi să se termine încet, poate ar trebui să foloseşti plugin-ul ce adaugă ceva opţiuni în plus (pe lângă liniar şi swing, disponibile implicit). Acesta, pe baza unor formule matematice (scrise într-o limbă complet necunoscută mie) îţi adaugă o multitudine de opţiuni. Pe pagina sus amintită vei găsi o listă cu toate opţiunile.
Efecte custom
Astea sunt cele mai drăguţe deoarece singura limită ţine de imaginaţia fiecăruia. Ce se poate anima? Păi… Cam orice proprietate CSS în afară de z-index (IE face figuri). Atenţie însă, dacă vrei să schimbi poziţia unui element, nu uita să-l poziţionezi absolut mai întâi! Dimensiunile sunt specificate în pixeli dar, dacă le pui în ghilimele, poţi specifica unitatea de măsură preferată.
$('p:eq(0)').css({position:'absolute'}).animate({ bottom:0, fontSize:'2em', opacity: 0.5, left: '50%', width:'50%' }, 1500, 'swing', function(){ alert('Animat!'); });
Poţi încerca diverse efecte folosind consola în pagina demo:

Mai multe efecte!
Dacă nu îţi place/nu ai timp/chef să experimentezi (sau orice alt motiv) poţi încerca jQuery UI. Este o librărie asemănătoare scriptaculous ce adaugă câteva funcţionalităţi mai deosebite pentru jQuery: drag&drop, mai multe efecte, slidere, datepicker, etc. Aici ai demo cu efectele jQuery UI.
Ce urmează?
Momentan o pauză de o săptămână-două, după care voi reveni cu un exemplu practic cu ce am învăţat până acum şi un tutorial despre cum putem modifica DOM-ul cu jQuery. Nu uita să alegi ce tutorial vrei să fie exemplul final!
IMPORTANT!
M-ar ajuta foarte mult dacă primesc feedback de la începători. Vreau să ştiu dacă explic bine şi pe înţelesul tuturor, deoarece, având o oarecare experienţă îmi este destul de greu să-mi dau seama cât de accesibil este începătorilor.

