A doua lectie




Un alt nume special care va poate fi de folos este "_blank". Indiferent ca un link sa afla intr-o pagina incarcata intr-un cadru (frame) sau nu, atunci cand la eticheta link-ului se adauga si atributul TARGET cu valoarea "_blank", pagina apelata este incarcata intr-o fereastra noua.

Inca un lucru. Meta-etichetele pot fi folosite la tot felul de lucruri. Va mai scriu cateva: <META HTTP-EQUIV="REFRESH" CONTENT="10; URL=altapagina.html"> La 10 secunde dupa ce pagina care are aceasta eticheta in antet a fost incarcata, e incarcata automat pagina aflata in fisierul "altapagina.html". Observati ca atributul CONTENT de aici inghite si el doua valori succesive, despartite de ";". Prima pentru numarul de secunde de asteptare, a doua pentru adresa celei de-a doua pagini. (aici aveti un exemplu; dupa cinci secunde se va reincarca aceasta pagina)
Inca una: <META HTTP-EQUIV="PRAGMA" CONTENT="no-cache"> Pagina incarcata nu este salvata in cache, pe calculatorul vizitatorului (si Netscape si IE creaza pe calculator niste directoare in care sunt pastrate temporar paginile vizitate - atunci cand pagina este revizitata, browserul verifica daca nu are aceeasi dimensiune cu cea salvata in cache; daca e asa, o incarca direct de pe harddisk si nu de pe server, fiindca e mai rapid; paginile vizitate salvate in cache pot fi vazute, salvate etc. si offline; daca cineva nu intelege ce scriu poa' sa sara peste). O alta meta-eticheta corelata cu aceasta este: <META HTTP-EQUIV="EXPIRES" CONTENT="-1"> Folosirea ei in antetul unei pagini are urmatoarele urmari: browserul va incarca pagina de pe server, de fiecare data cand o viziteaza, indiferent daca aceasta se gaseste si in cache-ul calculatorului vizitatorului.
<        Iar acum uitati-va la urmatorul exemplu. Daca nu v-ati prins, incercati sa dati click pe figurile geometrice din imagine. Acum e clar, da? Diferite portiuni ale unei singure imagini sunt folosite ca link-uri catre locuri diferite. Pana acum stiati doar cum poate fi folosita o imagine intreaga pe post de hyperlink. Daca cineva ar fi dorit sa foloseasca parti ale unei imagini ca hyperlinkuri, ce putea sa faca? Decupa mai multe dreptunghiuri din imagine intr-un editor grafic si le salva in fisiere diferite, dupa care le recompunea in pagina folosind un tabel. Ceva in genul acesta (click pe partea din stanga a cuvantului / primul cuvant pentru a reveni aici):
 
sus
mijloc stanga mijloc mijloc dreapta
jos stangajos dreapta

Nu arata prea grozav, nu? Plus ca mi-a luat mai mult de o ora sa construiesc tot exemplul asta. :-( De asemenea, e clar ca nu voi putea folosi o portiune prea complicata a unei imagini ca hyperlink. In trecut, cei care doreau neaparat sa realizeze astfel de lucruri, daca nu stiau programare, erau morti. Lucrurile se intamplau in felul urmator. Vizitatorul dadea un click pe o portiune a imaginii. Informatia era transmisa la server. Pe server rula un mic programas care analiza unde a fost pozitionat mouse-ul in imagine si in functie de asta stabilea ce pagina sa trimita drept raspuns. Acum toata treaba o face browserul. Cum il invatam pe dl. browser sa se orienteze? Ca pe om. Asociem imaginii o harta. Harta spune lucruri de felul: imaginea contine urmatoarele suprafete speciale; cand s-a dat click pe cutare suprafata, incarca pagina cutare s.a.m.d. Ce forme pot avea suprafetele? Pot fi dreptunghiuri, cercuri sau poligoane. Cum le definim? Dam coordonatele unor puncte. Pentru un dreptunghi, de pilda, dam coordonatele coltului din stanga sus si pe cele ale coltului din dreapta jos. Pentru un cerc, dam coordonatele centrului si lungimea razei. Pentru un poligon dam, pe rand, coordonatele fiecarui colt, in ordinea in care trebuie sa apara acestea atunci cand poligonul e desenat in sensul acelor de ceas. Ok, fac un desen:
Cum se stabilesc coordonatele? Folosind un sistem de coordonate. Acum trebuie sa mai scriu ceva pentru ca desenul urmator sa vina mai jos decat desenul cu poligonul. Bla-bla-blaaaaaaaa... Ce mai faceti? Si eu la fel, mersi. De ce sa te chinui sa scrii un tutorial de HTML cand exista atatea pe Internet? Habar n-am. Nu am vazut nici unul in limba romana, dar asta nu e important. Poate cineva o sa invete ceva de aici, dand peste acest tutorial din intamplare, inainte sa dea peste altul. Ce conteaza? Faptul ca lucrez la asta, in orice caz, imi foloseste si mie. Asa se intampla mereu, cand explici ceva altcuiva, intelegi si tu mai bine :-) De ce povestea asta nu costa nici un ban? Fiindca nici eu nu am cheltuit nimic ca sa invat toate lucrurile astea. Gata, am revenit la sistemul de coordonate. Exista mai multe feluri in care pot fi date coordonatele unui punct intr-un plan. E sistemul cu cele doua axe, x si y, pe care l-am invatat cu totii la scoala (cred ca se vorbea despre coordonate carteziene). Mai este, de pilda un alt sistem. Tot doua valori, doar ca prima specifica unghiul sub care se duce un linie din centrul sistemului de coordonate catre punctul cu pricina (in grade, radiani, nasturi, kilograme de sfecla etc.) iar a doua specifica distanta la care se afla punctul de centrul sistemului, pe linia respectiva (think, daca in loc de un plan am suprafata unei sfere si in loc de o linie dreapta am o linie curbata care traseaza un diametru al sferei, pot sa folosesc acest sistem pentru a preciza pozitia unui punct pe suprafata unei sfere, fara sa folosesc trei valori (gen x, y, z) ca la geometria in spatiu; de altfel, asa si fac pentru a preciza pozitia geografica a unui loc de pe pamant). Ok, coordonatele se dau, in HTML, dupa sistemul obisnuit. Doar ca centrul sistemului de coordonate nu apare, cum aparea de obicei in desenele de la scoala, in stanga jos, ci apare in dreapta sus. Acum pun desenul: "0" este la coltul din stanga sus al imaginii. x=0, y=0. Pe masura ce iau un punct mai la dreapta, am o valoare mai mare pentru x. Pe masura ce merg in jos am o valoare mai mare pentru y. Sa vedem acum si niste etichete. Ca si la frames, liste, tabele s.a.m.d. am etichete incapsulate unele in altele. Mai intai o eticheta dubla in care cuprind harta: <MAP> </MAP>. Trebuie sa specific in interiorul ei atributul NAME. Totul e la fel ca la ancora tinta. Dau un nume hartii, iar in eticheta imaginii voi pune un atribut suplimentar, USEMAP, a carui valoare (#numele_pe_care_l-am_dat) imi spune ce harta sa asociez imaginii respective. Ceva de felul acesta:

<MAP NAME="prima_harta"> <!-- aici definesc suprafetele clickabile si linkurile --> </MAP> <IMG SRC="image1.jpg" WIDTH="320" HEIGHT="240" BORDER=0 USEMAP="#prima_harta"> Acum sa punem ceva in interiorul hartii. Sa zicem ca doresc sa impart imaginea in doua jumatati. Daca se da click pe jumatatea din stanga e incarcata o anumita pagina ("pag1.html"). Daca se da click pe jumatatea din dreapta e incarcata o alta pagina ("pag2.html"). Pentru cele doua suprafete voi defini doua dreptunghiuri. Primul incepe de la x=0, y=0 si merge pana jos (y=240, pentru imaginea din exemplul de mai sus), iar in dreapta pana la jumatatea imaginii (x=160). Al doilea incepe de sus (y=0) de la jumatatea imaginii (x=161, ca sa nu existe suprapuneri) si merge pana jos (y=240), la marginea din dreapta a imaginii (x=320). Acum vine codul: <AREA SHAPE="RECT" COORDS="0,0,160,240" HREF="pag1.html"> <AREA SHAPE="RECT" COORDS="161,0,320,240" HREF="pag2.html"> Eticheta folosita este AREA. Ca si IMG si FRAME, nu e o eticheta dubla. Atributele se inteleg de la sine. SHAPE e atributul prin care precizez ce forma are suprafata (daca e dreptunghi, cerc sau poligon). In functie de asta, sirul de valori pentru coordonate (atributul COORDS) va arata diferit. Deocamdata suntem la dreptunghiuri. Cele patru valori, in ordine, se citesc asa: x pt. coltul stanga sus, y pentru coltul stanga sus, x pt. coltul dreapta jos, y pentru coltul dreapta jos. Iar apoi vine atributul HREF, care e folosit exact la fel ca atributul unei ancore. Valoarea este adresa relativa sau absoluta a paginii de incarcat. In intregime, codul va arata asa: <MAP NAME="prima_harta"> <AREA SHAPE="RECT" COORDS="0,0,160,240" HREF="pag1.html"> <AREA SHAPE="RECT" COORDS="161,0,320,240" HREF="pag2.html"> </MAP> <IMG SRC="image1.jpg" WIDTH="320" HEIGHT="240" BORDER=0 USEMAP="#prima_harta"> Nu e necesar sa pun harta inaintea imaginii sau in vecinatatea ei, atunci cand scriu codul. Ati vazut ca harta e apelata din eticheta imaginii dupa modelul linkurilor catre ancore tinta aflate in aceeasi pagina, iar acestea se pot afla oriunde in pagina.

Exercitiu:
Construiti, pentru imaginea de mai sus, o harta care sa contina o singura suprafata clickabila - un patrat cu latura de 20 de pixeli aflat chiar in centrul imaginii.

Pentru un cerc, coordonatele se dau astfel: x pt. centrul cercului, y pentru centrul cercului, lungimea razei. Eticheta unui cerc care ocupa cam un sfert din imagine (partea din stanga sus) va arata asa: <AREA SHAPE="CIRCLE" COORDS="80,60,60" HREF="pag1.html"> Exercitiu:
Construiti, tot pentru imaginea de mai sus, o harta care sa contina eticheta pentru un cerc cu raza de 20 de pixeli aflat in centrul imaginii.

Urmeaza partea mai complicata - poligonul. Tineti minte desenul nu? Bun. Coordonatele merg asa: x pt. primul punct, y pt. primul punct, x pt. al doilea punct, y pentru al doilea punct, etc. (in desen mergeam pana la punctul 6). Pentru exemplificare, sa definim un triunghi echilateral cu baza lipita de partea de jos a imaginii, mare cat jumatatea din latimea acesteia (incepand din coltul din stanga): <AREA SHAPE="POLY" COORDS="80,143,160,240,0,240" HREF="pag1.html"> Nu ma intrebati cum am calculat la ce inaltime se afla varful triunghiului (valoarea y pt. primul punct). E o formula geometrica dar nu o mai tin minte, asa ca am trasat triunghiul din ochi intr-un editor grafic si dupa aia am masurat unde vine punctul. :-)

Exercitiu (simplu):
Definiti patratul de la primul exercitiu cu eticheta pentru poligon.
Intrebare ajutatoare: cite valori trebuie sa aiba, in acest caz, atributul COORDS?

Acum sa combinam tot ce am facut intr-o singura harta. Pastram cercul, triunghiul si dreptunghiul din jumatatea dreapta. Codul este: <IMG SRC="image1.jpg" WIDTH=320 HEIGHT=240 BORDER=0 USEMAP="#harta2"> <MAP NAME="harta2"> <AREA SHAPE="RECT" COORDS="161,0,320,240" HREF="pag1.html"> <AREA SHAPE="CIRCLE" COORDS="80,60,60" HREF="pag2.html"> <AREA SHAPE="POLY" COORDS="80,143,160,240,0,240" HREF="pag3.html"> </MAP> Iar acum rezultatul (pe viu), doar ca in loc de linkuri la alte pagini voi folosi scurtaturi in interiorul acestei pagini (click pe partea din dreapta / al doilea cuvant, pentru a reveni aici):
 



Pana acum am evitat suprapunerile suprafetelor. Ce se intampla insa atunci cand am asa ceva? Regula este: prima suprafata definita in cod este cea activa pe portiunea suprapunerii. Asta iti poate da idei. In loc sa definesti un poligon foaaaaaaaaaaaaaaaaaaaaarte complicat pentru a crea o suprafata de forma unui inel ai putea defini doua cercuri cu acelasi centru si raze de lungimi diferite, scriind mai intai codul pentru cercul mare si apoi codul pentru cercul mic. Mai ramane un lucru. Suprafata cercului mai mic nu trebuie sa fie clickabila. Iar pentru asta poate fi folosit un atribut special. Tineti minte atributul NORESIZE de la frame-uri? Nu era nevoie sa primeasca nici un fel de valoare. Pentru ca o suprafata sa nu poata fi folosita ca hyperlegatura, desi a fost definita, in loc de atributul HREF cu valoarea de rigoare folosim atributul NOHREF. Totul arata cam asa: <AREA SHAPE="CIRCLE" COORDS="80,60,60" HREF="#link"> <AREA SHAPE="CIRCLE" COORDS="80,60,40" NOHREF> Exercitiu:
Folositi imaginea de mai sus (imaginea poate fi salvata cu click-dreapta: Save Image As...), codul pentru inel, cel pentru triunghi si cel pentru dreptunghi pentru a crea o harta, respectiv o pagina noua. Daca doriti sa folositi si ceea ce ati invatat in lectia anterioara, puneti pagina cu harta si imaginea intr-un frame si modificati link-urile definite in harta pentru a incarca pagini intr-un alt frame.

Daca vreti sa va lamuriti mai bine cu privire la suprapunerea suprafetelor, uitati-va la acest exemplu.
Hei! Uitati-va la cod, nu la cum se vede pagina! :-)
In plus, va puteti uita si la codul exemplului de la inceput (aici) pentru a afla cateva lamuriri suplimentare.
Ma cam apropii de sfarsit. Sa nu uit sa va spun asta: in caz ca vi se pare destul de complicat sa definiti suprafete clickabile prin intermediul coordonatelor &cetera, e bine sa stiti ca existe editoare grafice care pot genera harti pentru imagini (unul dintre ele este Gimp -> fuga la motoarele de cautare de pe Internet si o sa aflati unde il gasiti). Un avantaj suplimentar al hartilor este ca aceeasi harta poate fi asociata mai multor imagini. La ce se poate folosi asta? O sa va ganditi singuri, in timp ce eu incep sa lucrez la urmatoarea lectie.


Cuprins  Lectia anterioara   Lectia urmatoare












 











Nimic


 











Tot nimic


 











Alt nimic