CATEGORII DOCUMENTE |
DOCUMENTE SIMILARE |
|||
|
|||
Meniuri flotante in JavaScript
Se poate intimpla, in crearea
unei interfete web, sa doriti ca o parte a acesteia sa
fie permanent in atentia utilizatorilor / vizitatorilor. Fie ca este vorba despre logo-ul companiei sau despre un meniu de
navigare, este util ca acest element sa ramina in cimpul vizual al unei
persoane, chiar daca aceasta deruleaza fereastra (browser-ului in acest caz).
Solutia pe care am ales-o eu face uz, evident, de
JavaScript.
In interesul claritatii expunerii si pentru a nu ma pierde
in generalitati, voi prezenta o implementare concreta, pe care am si folosit-o in crearea unui site web. Este vorba despre
un meniu de navigare, care 'urmareste' vizitatorul cind acesta
deruleaza pagina.. Si, dupa cum am amintit, nu este vorba despre folosirea frame-urilor ci a JavaScript.
Caci, veti vedea, pozitia nu este statica, ci este
calculata pe masura derularii paginii.
Inainte de toate, se ridica fireasca intrebare 'ce
voi construi eu aici?'. Reformulez: 'cum se
numeste dracovenia asta?'. Cel mai des un
asemenea element este numit sliding toolbar / menu.. Traducerea (si adaptarea) mea ar fi meniu flotant. Si cred ca sintagma acopera scopul si comportarea acestui element.
Nu ma pot abtine sa nu exprim si
unul dintre cele mai mari regrete ale mele. Veti putea constata si
dumneavoastra: realizarea efectiva a unui meniu flotant nu este
extrem de complicata. Din pacate, din cauza incompatibilitatilor dintre
browsere, asigurarea cadrului de lucru necesita cel putin la fel de multa
munca. si mult mai multa testare. In fine, asta e. Ne adaptam
conditiilor de lucru.
Proiectarea
In urma proiectarii am ajuns la urmatoarea configuratie a ferestrei:
Dupa cum se poate observa, meniul va fi afisat in partea stanga, iar continutul in partea dreapta. Prezenta banner-ului este optionala, la fel cum optionala este si adaugarea unui banner la baza inferioara a paginii. Daca va intrebati cumva de ce am prevazut in mod express prezenta unui banner, raspunsul e simplu: el poate servi atat pentru identificarea mai clara a paginii curente (poate fi inclus numele paginii, sectiunii), cat si pentru adaugarea banner-elor publicitare (cerinta devenita aproape standard in zilele noastre de Web-economizare).
Pentru ca pagina sa fie afisata coerent pe diferite rezolutii, toate
elementele vor fi centrate in cadrul ferestrei browserului. Dimensiunile vor fi
astfel calculate incat pagina sa nu necesite defilare
orizontala nici macar la rezolutia 640x480. Acestea fiind
stabilite, sa-i dam drumul.
Realizarea
Identificarea browserelor se face simplu, prin doua linii de cod:
isIE = (document.all) ? 1 : 0;
isNS = (document.layers) ? 1 : 0;
Este suficienta aceasta identificare, caci nu se folosesc elemente ultra-specifice, care sa se stie ca ridica probleme in diferite versiuni ale browserelor. Asadar, versiunea efectiva nu ne intereseaza (cel putin atit timp cit este peste 3, pentru Netscape si peste 4 pentru Internet Explorer).
Secventa urmatoare de cod este una extrem de interesanta si utila (nu ar trebui sa laud chiar eu codul, insa chiar cred ca este o gaselnita extraordinara). La ce foloseste? Ei bine, la determinarea dimensiunilor ferestrei - atentie, utile (in care pot fi afisate elemente) a - browser-ului. Secventa de cod pentru Netscape este:
awidth = window.innerWidth;
aheight = window.innerHeight;
iar pentru Internet Explorer:
awidth = document.body.clientWidth;
aheight = document.body.clientHeight;
Determinarea trebuie facuta dupa ce documentul a fost incarcat, insa inainte de a afisa elemente pe ecran. Poate va intrebati cum poate fi realizat acest lucru - incarcarea documentului, dar neafisarea elementelor paginii. Facem in urmatorul fel: pozitionam elementele paginii, numite in continuare Titlu, Meniu si Continut in 'containere'
si le declaram drept hidden, folosind CSS (Cascading Style Sheets).
Observatie: Veti vedea in codul paginii valoarea 600 (pixeli) ce reprezinta latimea toatala a elementelor paginii. Mai
elegant este sa declarati o
Dupa crearea layer-elor (a nu se
confunda cu elemtele specifice Netscape - se mai numesc layer-e si elementele
<div>) ele trebuie afisate si pozitionate corect in pagina. Pentru
aceasta am definit o functie ShowPage(), apelata in
urma aceluiasi eveniment, onload. Principalul lucru pe care il realizeaza
functia este modificarea unor proprietati ale
layer-elor, proprietati ce tin tot de CSS.
In acelasi context trebuie apelata functia care
determina derularea ferestrei. Functia este numita ScroolHandler().
Ea are doua componente principale: modifica elementul top (distanta elementului
fata de marginea de sus a ferestrei) si asigura reapelarea sa
automata, folosind setTimeout (pentru mai multe detalii a se vedea e-mail
REPORT nr.16, 'JavaScript - trusa de instrumente'). Derularea paginii poate fi obtinuta prin proprietatea (obiectului
window - vezi e-mail REPORT nr.17 - 'JavaScript - obiectul muncii')
pageYOffset, pentru Netscape, iar pentru IE prin proprietatea (obiectului
document), scrollTop. Referitor la intervalul setat
pentru reactivarea functiei, depinde de efectul pe care il doriti -
'urmarire' brusca sau una mai lina (valori mai mici pentru timeout).
O valoare moderata este 150 (milisecunde). Nota: ds este o variabila globala ce mentine ultimul offset
(deplasare) a paginii.
Testarea si dezvoltari ulterioare
Testarea este extrem de importanta. Banuiesc ca stiti acest lucru. Incercati
codul pe cit mai multe versiuni ale ambelor browsere. In caz contrar
s-ar putea sa aveti surprize - vezi necesitatea
folosirii <spacer>-ului.
Codul prezentat va asigura doar
punctul de plecare. Desi poate fi folosit cu succes si in forma actuala, el este menit mai ales dezvoltarii unor aplicatii mai complexe.
Sau poate fi adaptat pentru un logo derulant, cum se
intilneste des pe Web. Oricare ar fi utilitatea sa
viitoare, sper ca il veti fi gasit instructiv.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1305
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved