Prototype plugin: Scroller
Va ofer un nou plugin pentru Prototype, numit simplu Scroller. Ca de obicei, inainte de detaliile tehnice, testati exemplul urmator:
1. Cerinte
Plugin-ul necesita Prototype 1.6 pentru a functiona.
1 2 | <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript" src="scroller.js"></script> |
2. Markup
Cu toate ca existenta urmatoarelor elemente este obligatorie, pozitia si stilizarea lor este in mare parte la discretia voastra:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <div id="wrapper"> <a href="#" class="scroll vertical" id="scroll-up" rel="up"> </a> <a href="#" class="scroll vertical" id="scroll-down" rel="down"> </a> <a href="#" class="scroll horizontal" id="scroll-left" rel="left"> </a> <a href="#" class="scroll horizontal" id="scroll-right" rel="right"> </a> <a href="#" class="scroll diagonal" id="scroll-nw" rel="nw"> </a> <a href="#" class="scroll diagonal" id="scroll-ne" rel="ne"> </a> <a href="#" class="scroll diagonal" id="scroll-se" rel="se"> </a> <a href="#" class="scroll diagonal" id="scroll-sw" rel="sw"> </a> <div id="scroller"> <div id="inner"></div> </div> </div> |
Elementele cu clasa scroll vor fi cele care vor declansa miscarea (interactiunea cu ele se face prin hover si click), directia acesteia fiind data de atributul rel al fiecarui declansator.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* ---------------------------------------- CONTAINERS */ #wrapper { position: relative; width: 500px; height: 500px; margin: 10px auto 0 auto; padding: 50px; } #scroller { width: 500px; height: 500px; overflow: hidden; } #inner { width: 5000px; height: 5000px; } .scroll { position: absolute; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | /* ----------------------------------- SCROLL CONTROLS */ .horizontal { width: 40px; height: 500px; top: 50px; bottom: 0; } .vertical { width: 500px; height: 40px; left: 50px; right: 50px; } .diagonal { width: 40px; height: 40px; } #scroll-left { left: 0; } #scroll-right { right: 0; } #scroll-up { top: 0; } #scroll-down { bottom: 0; } #scroll-nw { top: 0; left: 0; } #scroll-ne { top: 0; right: 0; } #scroll-se { bottom: 0; right: 0; } #scroll-sw { bottom: 0; left: 0; } |
Acest markup asigura minimul necesar pentru pozitionare si dimensionare. Pentru o configurare mai detaliata cercetati codul din exemplul de la inceput.
3. Initializare si optiuni suplimentare
Initializarea plugin-ului se face prin urmatoarea constructie JS:
1 | var scroller = new Scroller($('scroller'), $$('.scroll'), {optiune:valoare, optiune:valoare, etc}); |
Optiunile disponibile sunt:
- frequency: frecventa actualizarii pozitiei Scroller-ului, in secunde. Implicit 0.1 secunde.
- step: pasul miscarii, in pixeli. Aceasta optiune, impreuna cu frequency permite o ajustare cat mai exacta a vitezei si fluiditatii miscarii. Implicit 2px.
- stepModifier: multiplicatorul cu care va fi inmultita valoarea step pentru realizarea accelerarii la click pe un declansator. Implicit 3, viteza fiind triplata.
4. Download
Puteti descarca atat fisierul scroller.js, cat si exemplul:
Download scroller.js
Download exemplu
Ca de obicei, completarile si adaugirile sunt binevenite.
Carousel pe Scripteka
Dupa o discutie cu Juriy Zaytsev (aka kangax) si cateva mici ajustari, am trimis plugin-ul Carousel pe Scripteka. Acesta a fost acceptat si este deci acum disponibil si in engleza.
Scripteka este o colectie de extensii pentru Prototype oferite gratuit de catre autorii acestora, si o buna metoda de a face publice si de a raspandi asemenea scripturi.
Prototype plugin: Carousel
ATENTIE:
Aceasta versiune nu mai este de actualitate, iar link-urile de download nu mai functioneaza. Detalii legate de noua versiune sunt aici.
Inspirat de Glider.js creat de Bruno Bornsztein.
Va prezint si ofer un plugin de tip Carousel pentru framework-ul JavaScript Prototype pe care l-am dezvoltat acum ceva timp si care sper ca va va fi de folos. Pentru a nu pierde timpul, inainte de a trece la modul de folosire si download, va invit sa testati cele 3 exemple:
In speranta ca am reusit sa va captez atentia, o sa continuu cu descrierea modului de utilizare:
1. Cerinte
Pentru functionarea acestui plugin veti avea nevoie de:
Alternativ, puteti folosi versiunile comprimate disponibile pe grupul de discutii Prototype: Core, ce reduc considerabil dimensiunea ambelor librarii.
1 2 3 | <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript" src="effects.js"></script> <script type="text/javascript" src="carousel.js"></script> |
2. Markup
Structura minima a documentului si stilizarea corespunzatoare vor trebui sa fie asemanatoare cu urmatoarele:
1 2 3 4 5 6 7 8 | <div id="scroller"> <div id="content"> <div class="slide" id="slide-1"></div> <div class="slide" id="slide-2"></div> ... <div class="slide" id="slide-5"></div> </div> </div> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #scroller { width: 500px; height: 500px; overflow: hidden; } #content { width: 2500px; } .slide { float: left; width: 500px; height: 500px; } |
Codul de mai sus este pentru un Carousel orizontal cu latimea si inaltimea egale cu 500px. Pentru miscare verticala nu trebuie decat sa setati latimea div-ului #content la 500px, adica latimea unui singur slide.
Voi referi in continuare elementele ce controleaza miscarea slide-urilor ca declansatoare. Acestea sunt de doua feluri: cele care controleaza miscarea directa catre un slide anume, si cele care declanseaza miscarea relativa (de tipul anterior / urmator / primul / ultimul):
1 2 3 4 | <a href="#" rel="slide-1" class="carousel-jumper">Slide 1</a> <a href="#" rel="slide-2" class="carousel-jumper">Slide 2</a> ... <a href="#" rel="slide-5" class="carousel-jumper">Slide 5</a> |
1 2 3 4 5 | <a href="#" rel="first" class="carousel-control">Prima</a> <a href="#" rel="prev" class="carousel-control">Anterioara</a> <a href="#" rel="next" class="carousel-control">Urmatoarea</a> <a href="#" rel="last" class="carousel-control">Ultima</a> <a href="#" rel="toggle" class="carousel-control">Toggle</a> |
Legatura intre context si actiune este reprezentata de cea dintre atributele class si rel ale declansatoarelor. Un element cu clasa carousel-control si rel slide-x va efectua saltul la slide-ul cu id-ul slide-x, in vreme ce unul cu clasa carousel-jumper si rel next va declansa miscarea la slide-ul urmator celui selectat curent.
Toggle este o actiune speciala in sensul ca retine slide-ul vizitat anterior si permite intoarcerea rapida la acesta fara a mai fi necesara localizarea acestuia de catre utilizator.
3. Initializare si optiuni suplimentare
Initializarea plugin-ului se face prin urmatoarea constructie JS:
1 | var carousel = new Carousel($('scroller'), $$('.slide'), $$('a.carousel-jumper', 'a.carousel-control'), {optiune:valoare, optiune:valoare, etc}); |
Versatilitatea acestui Carousel sta in optiunile ce ii pot fi specificate. Lista tuturor optiunilor disponibile este urmatoarea:
- duration: durata unui salt. Implicit este setata la o secunda.
- auto: setarea valorii true acestei optiuni va face ca miscarea sa se faca automat, echivalentul declansarii repetate a actiunii next.
- frequency: durata intre miscarile automate, in secunde, in cazul in care optiunea anterioara este setata true. Valoarea implicita este de 3 secunde.
- jumperClassName: clasa declansatoarelor de primul doilea tip (salt direct). Implicit carousel-jumper.
- controlClassName: clasa declansatoarelor de al doilea tip (salt relativ). Implicit carousel-control.
- selectedClassName: clasa ce se va adauga declansatorului corespunzator slide-ului curent. Folositor in cazurile asemanatoare celor din exemple pentru realizarea efectului de tab selectat.
- beforeMove / afterMove: spre deosebire de celelalte optiuni, acestea sunt doua functii utilizator ce vor fi executate inainte respectiv dupa efectuarea saltului. De exemplu, beforeMove ar putea fi o functie care mareste transparenta slide-urilor inaintea miscarii, pentru a le opaciza la sfarsitul acesteia prin afterMove.
4. Download
Va pun la dispozitie pentru download atat fisierul carousel.js, cat si exemplele intregi:
Orice completare / adaugire este binevenita. M-ar bucura in cazul in care il implementati online daca ati pastra comentariile de la inceputul fisierului carousel.js.
Sunt Victor Stanciu, web developer, si scriu despre dezvoltare, standarde, tehnici si tehnologii. (