A patra lectie
Ok, daca nu sunteti cu Netscape in momentul asta puteti sa o lasati balta. Nu va cere
nimeni sa va convertiti la Netscape. Puteti sa-l folositi doar temporar, cat va lamuriti
ce si cum si dupa aia sa-l radeti. Aceasta lectie este mai mult teoretica. De altfel,
nici nu o sa fie prea lunga. Cu toate astea, daca vreti sa realizati ceva serios,
profesionist etc. etc. scriind HTML, trebuie sa intelegeti mecanismul din spatele
povestii asteia.
Ce sunt layers? Niste elemente HTML, right? Right.
- Ce fel de elemente?
- Speciale, ca altfel ati fi aflat de ele mai din timp.
- Ok, cat de speciale?
- Foaaarte speciale.
- Bine, dar ce fac?
- Fac ce trebuie sa faca ...
Bine, nu mai trag de timp. Uite aicea un layer:
Ceva ciudat?
Chiar nu vi se pare nimic in neregula?
Doar browserul Netscape, incepand de la versiunea 4.0 in sus inghite asa ceva. IE pur si
simplu ignora etichetele layerelor. Ok, suspansul a durat destul. Layerele sunt obiecte
asemanatoare oarecum cu frames. Sunt niste containere pentru orice altceva ar putea
intra intr-o pagina HTML. Asa cum poti incarca o pagina intr-un frame, asa o poti incarca
si intr-un layer. Doar ca layerele permit mai mult decat cadrele. Iar in alt sens mai
putin. Cel mai simplu e sa merg cu exemple:
Sa vedem si rezultatul:
Cum vi se pare? Un lucru poate fi observat usor, de la bun inceput. In loc sa creez o pagina
separata, pot integra codurile paginii respective in codul paginii care contine layere. Dar
nu e obligatoriu, o sa vedeti mai incolo. Orice layer poate avea un nume (prin atributul
NAME), cu ajutorul caruia e identificat, ca si elementele formularelor, din interiorul
unor aplicatii care ruleaza in browser. Pozitia layer-ului e determinata cu ajutorul
atributelor LEFT si TOP. In cazul de aici e vorba de pozitia absoluta, ca
distanta in pixeli fata de marginea de sus si marginea din stanga a ferestrei
(tineti mintea povestea cu sistemul de coordonate, nu?). Pot avea un layer in alt layer:
al doilea
In acest caz valorile atributelor LEFT si TOP ale layerului din interior vor indica
pozitia acestuia relativa la marginea de sus si marginea din stanga a layerului care
il cuprinde. Daca vreau neaparat sa ii dau pozitia doar fata de marginile ferestrei
voi folosi alta pereche de atribute: PAGEX si PAGEY (chiar nu mai stiti
desenul cu sistemul de coordonate?). Mai departe.
WIDTH si HEIGHT, ca in cazul unei imagini dau dimensiunile layerului. BGCOLOR, ca
si in cazul etichetei BODY, se foloseste pentru a stabili culoarea de fundal. Tot ca si
in cazul etichetei BODY, pot defini o imagine de fundal pentru fiecare layer. Reiau
exemplul de mai sus cu imagini in loc de culori:
al doilea
Sigur, pot sa nu folosesc nici o culoare de fundal si nici o imagine, iar atunci layer-ul
este transparent - adica ma lasa sa vad ce e in spatele lui. Iata un exemplu cu doua layere
suprapuse:
1 2 3 4 5 6 7 8 9 10
A B C D E F
G H I J K . . .
Daca doresc sa preiau continutul unui layer dintr-un fisier, pot da adresa fisierului (absoluta
sau relativa) ca valoare a atributului SRC (ca si la imagini, sunete, frames s.a.m.d.).
Iata un exemplu (linkurile functioneaza, BTW; daca le incercati, nu uitati sa folositi
butonul "back" al browserului pentru a reveni aici):
Sa vedem cum arata codul pe care l-am folosit.
Atributul SRC e folosit asa cum stiti. Nu e nimic nou de explicat. A mai aparut
insa un atribut nou, CLIP. Acesta primeste un sir de valori, prin care e definit,
ca intr-un harta, un dreptunghi in interiorul layer-ului. Cu ajutorul lui pot face in
asa fel incat doar portiunea layer-ului din dreptunghiul respectiv sa fie vizibila
(mai exista un atribut, VISIBILITY, care suporta valori precum HIDE si SHOW - valoarea
by default; cu ajutorul lui pot face ca intregul layer sa fie invizibil).
Alt lucru pe care il puteti observa este ca eticheta folosita aici e putin diferita.
in loc de <LAYER> </LAYER> am folosit <ILAYER> </ILAYER>.
"I" vine de la "inline" sau "inflow" sau probabil de la ambele. E vorba de un layer care
se apare in functie de locul din cod unde am introdus eticheta, cam ca o imagine, spre
deosebire de layerele obisnuite care apar acolo unde le spunem sa apara, indiferent unde
am scris codul. Atunci cand sunt folosite, atributele LEFT si TOP ale unui inline layer
precizeaza pozitia acestuia fata de cele mai apropiate elemente HTML din pagina (toate
layerele din aceasta pagina sunt facute folosind inline layers - vezi codul pt.
explicatie). De asemenea, celalalte elemente HTML care urmeaza dupa inline layer "tin
cont" de existenta lui, ordonandu-se si in functie de el, dar nu tin cont de un
layer obisnuit - pagina curge ca si cand layerul nu ar exista. O alta deosebire intre
layers si frames este ca link-urile din interiorul layerelor nu cheama pagini tot in
interiorul layerelor, ci direct in fereastra. Totusi, putem realiza destul de usor
si de simplu tot ceea ce realizam cu frames folosind layers (vezi
acest exemplu).
In fine, spre deosebire de cadre (sau subferestre), layerele se pot suprapune (ca si regiunile
unei harti). In acest caz se foloseste un atribut special pentru a decide care
layer apare deasupra. E vorba de atributul Z-INDEX, care primeste ca valori numere. Dintre
doua layere, cel care are ca valoare a acestui atribut un numar mai mare va sta deasupra.
Iata un nou exemplu:
primul
al doilea
primul
al doilea
Iar codul arata astfel:
primul
al doilea
primul
al doilea
Atunci cand atributul nu este specificat fiecare layer nou creat (in cod) se asaza peste
cele anterioare. Iar acum ma apropii de incheiere.
Pentru a intelege importanta layerelor ganditi-va la un singur lucru. Oricare valoare a unui
atribut prin care definesc proprietatile unui layer poate fi modificata dinamic. Adica
un programas care ruleaza in interiorul paginii poate avea acces la pozitia unui layer
in pagina, poate sa il faca vizibil sau invizibil etc. etc. Va puteti uita la un
exemplu simplu si veti intelege de ce layerele sunt atat
de speciale. Daca v-a placut, uitati-va si la acest exemplu,
construit prin interpolarea dinamica a valorilor atributului CLIP.
Cum spuneam, aceasta lectie nu e prea lunga. Nu aveti exercitii, fiindca nu e neaparat
nevoie sa internalizati folosirea etichetelor pentru layers. Daca ati urmarit insa
cu atentie lectiile de pana acum ati inteles cam cum stau lucrurile cu layerele. Iar
daca ati inteles asta si in plus ati inteles si faptul ca acestea sunt obiectele pe care
le puteti folosi pentru a crea elemente dinamice ale unei pagini HTML, acest lucru e
suficient. Mie mi-e oricum prea somn sa mai continui cu aceasta lectie. Bye!
Cuprins Lectia anterioara
Lectia urmatoare