IPRO - PC Magazine Romania, 2001
Comunitatea experților și a cititorilor PC Magazine
Internet PRO
Poziționarea conținutului în paginile web
Emanuel Baruch
Una din cele mai importante probleme cu care ne confruntăm atunci când construim
o pagină web este poziționarea imaginilor și a textului, a conținutului în general.
Ar fi foarte simplu dacă am putea preciza cu ajutorului limbajului HTML atribute
de genul: imagine centrată orizontal și vertical, paragraf care apare întotdeauna
la baza paginii - indiferent de dimensiunea ferestrei, text pe 3 coloane etc.
Din păcate, problema este un pic mai complicată. Cu toate acestea, pe majoritatea
paginilor web bine realizate veți observa că fiecare element are locul său și
nimic nu este lăsat la voia întâmplării.
Containere bine aliniate
În general, pentru a putea controla alinierea sau aspectul conținutului este
indicat ca acesta să fie introdus în așa-numite ,,containere". Există două opțiuni
pe care vi le recomand: <div></div> și <p></p>. Tag-ul
div delimitează o zonă de pe pagina web, iar p un paragraf. Aceste tag-uri suportă
atributul de aliniere align cu valoarea ,,left"",right " și ,,center". Acestea
fiind spuse, problema alinierii orizontale este aproape rezolvată. Împărțiți
textul în paragrafe și precizați cum doriți să fie aliniat acesta (la stânga,
la dreapta sau centrat). Veți observa că va apărea un mic spațiu între paragrafe.
Această delimitare contribuie de asemenea la o mai bună lizibilitate a textului.
Nu este indicată utilizarea unor blocuri de text prea voluminoase, deoarece
pe ecranul monitorului ochiul cititorului va obosi mult mai repede decât în
cazul unei cărți.
Cele două tag-uri se pot folosi și intercalat. O zonă delimitată de un tag
div poate conține la rândul ei alte sub-zone delimitate de div-uri sau p-uri.
Cu alte cuvinte, un div poate include alte div-uri și paragrafe, însă nu este
indicată includerea în tag-ul p a altor paragrafe sau zone div. Asupra conținutului
va avea efect întotdeauna atributul ultimului container în care a fost introdus
(,,container-părinte"). Astfel, dacă aveți o zonă aliniată la dreapta iar în
aceasta zonă doriți să introduceți un paragraf centrat, puteți proceda astfel:
<div align="right">
Conținut aliniat la dreapta
<p align="center">
Paragraf centrat
</p>
</div>
Valoarea implicită a atributului de aliniere a conținutului este la stânga,
adică align="left". Aceasta înseamnă că dacă nu introduceți nici un atribut
în tag-urile p și div, acestea vor fi aliniate la stânga, cu condiția ca ele
să nu fie intercalate în alte zone cu atribute de aliniere, deoarece, în acest
caz, ele se vor alinia după cum dictează ,,containerul părinte".
|
Dacă
doriți un spațiu suplimentar în jurul unei imagini, folosiți tag-urile
vspace și hspace.
|
Unde sunt imaginile?
O altă problemă este alinierea imaginilor care însoțesc textul. Tag-ul img care
inserează o imagine într-o pagină web suportă și el atributul align="left",
respectiv align="right". Atunci când o imagine este introdusă în text cu unul
din aceste atribute, ea se va alinia la stânga, respectiv la dreapta paginii,
fiind înconjurată de text. Atenție, nu folosiți atributul align="center" pe
tag-ul unei imagini, deoarece nu va avea nici un efect. Pentru a centra o imagine
introduceți-o într-un div centrat:
<div align="center"> <img src="imagine.gif"></div>
Atributul align al unei imagini mai suportă și alte valori, și anume top, middle
și bottom. Acestea se referă la alinierea verticală a imaginilor, în funcție
de textul care le însoțește. Top va determina ca textul să fie aliniat în partea
de sus a imaginii, middle va face ca mijlocul textului să fie aliniat cu mijlocul
imaginii, iar bottom va aduce pe aceeași linie partea de jos a textului cu partea
de jos a imaginii. Valoarea implicită este valign="bottom".
Dacă doriți un spațiu suplimentar în jurul unei imagini, folosiți tag-urile
vspace și hspace. Vspace (Vertical Space) definește spațiul vertical care va
rămâne liber deasupra și dedesubtul imaginii iar hspace (Horizontal Space) spațiul
orizontal care va rămâne liber în dreapta și stânga imaginii. Tag-urile pot
fi folosite împreună sau numai câte unul. Utilizarea acestor tag-uri este indicată
pentru ca textul care însoțește o imagine să nu apară lipit de aceasta. Nu uitați
că aceste tag-uri adaugă spațiu atât sus cât și jos, respectiv atât în dreapta
cât și stânga. Așadar nu este posibilă adăugarea de spațiu liber numai într-una
din părți (de exemplu numai sus). Pentru a încadra o imagine într-o ramă folosiți
tag-ul border.
Culoarea implicită a acesteia va fi cea a textului. Atunci când o imagine are
un link pe ea, aceasta va apărea automat (de dimensiune 1 și de culoarea link-ului).
Pentru a scăpa de ea, precizați în cadrul tag-ului img border="0". Atributele
vspace, hspace și border se măsoară în pixeli.
Vă recomand ca atunci când aveți imagini pe o pagină web să folosiți întotdeauna
atributele width și height, și anume cu dimensiunile exacte ale imaginii (în
pixeli). Width precizează lățimea iar height înălțimea unei imagini. În primul
rând, de ce este necesară utilizarea acestor tag-uri, deoarece - cu sau fără
ele - rezultatul final este același. Atunci când un browser încarcă o pagină
web, el va afișa mai întâi textul și va lăsa spațiu acolo unde urmează să apară
imaginile. Dacă nu precizați dimensiunile imaginii, browser-ul nu va rezerva
un spațiu exact pentru aceasta, iar după ce o încarcă, întreg conținutul paginii
va fi repoziționat. Și aceasta se va întâmpla la fiecare imagine încărcată,
ceea ce poate deveni neplăcut pentru vizitator. Bineînțeles acesta nu se va
întâmpla în cazul unei conexiuni ultra-rapide, deoarece paginile vor fi încărcate
instantaneu, însă nu toți vizitatorii dispun de astfel de conexiuni. În al doilea
rând, dacă folosiți alte dimensiuni ale imaginii decât cele originale, browser-ul
o va redimensiona. De exemplu, nu de puține ori am văzut pe web galerii de imagini
în care se prezintă pe o pagină un index al acestora format din variante mici
ale imaginilor respective. Cei care au construit paginile respective nu au mai
avut timp pentru a realiza și aceste imagini de dimensiuni reduse, așa că au
luat imaginile mari și le-au redimensionat din HTML, cu ajutorul lui width și
height. Rezultatul este însă extrem de prost, nu numai din punct de vedere calitativ,
dar și al timpului de încărcare. De reținut că imaginile pot avea și dimensiuni
relative (width="50%").
De asemenea, utilizarea atributelor align="left" și align="right" pe imagini
trebuie făcută cu atenție. Pe anumite browsere (mai ales Netscape 4) și pe anumite
rezoluții sau dimensiuni ale ecranului, textul care înconjoară imaginea se va
suprapune cu imaginea care îl însoțește, rezultatul fiind catastrofal. Aceasta
nu ar trebui să se întâmple, dar programele de navigare - mai ales cele vechi
- sunt pline de surprize neplăcute. Soluții ,,oficiale" la această problemă
nu există. Astfel de erori, precum și numeroasele limite ale limbajului HTML,
i-au determinat pe designerii web să apeleze la soluții neconvenționale. Toate
paginile web sunt construite pe structuri tabelare. Aceasta înseamnă că întreg
conținutul unei pagini web este introdus în tabele ale căror rame sunt setate
pe zero (border="0") - în majoritatea cazurilor. Soluția este foarte bună, deoarece
cu ajutorul tabelelor se poate controla strict poziționarea conținutului. De
subliniat că nu constituie o problemă folosirea tabelelor intercalate, adică
a tabelelor în tabele: orice celulă a unui tabel poate conține un alt tabel
ș.a.m.d. Acest procedeu vă poate ajuta să plasați un element dintr-o pagină
web exact acolo unde doriți. Trebuie avut însă în vedere că tabelele container
pot fi redimensionate din cauza lățimii sau înălțimii imaginilor sau tabelelor
pe care le include.
O Soluție? Tabelele
Utilizarea tabelelor presupune însă cunoașterea semnificației atributelor care
pot însoți tag-ul table. Dimensiunea tabelelor poate fi relativă (width="80%")
sau fixă (width="80"). Dimensiunile fixe se măsoară în pixeli. Dimensiunile
relative se vor forma în funcție de container-ul părinte al tabelului. Astfel,
dacă tabelul este cuprins doar de tag-ul body, el se va dimensiona relativ în
funcție de mărimea ferestrei browser-ului. Dacă însă un tabel cu width="50%",
este introdus într-o celulă a altui tabel atunci lățimea lui va fi jumătate
din cea a celulei-container. Aceleași reguli sunt valabile și pentru înălțimea
unui tabel (height). Alte atribute cu ajutorul cărora puteți controla poziționarea
conținutului unui tabel sunt cellpadding și cellspacing. Cellpadding se referă
la distanța dintre conținutul unei celule și marginile acesteia. Cellspacing
precizează distanța dintre celulele unui tabel. Valoarea implicită a acestor
atribute nu este zero.
Așadar, pentru a obține un tabel în care să nu existe spațiu între conținut,
folosiți cellpadding="0" cellspacing="0". Atributele width și height pot fi
poziționate atât pe table (tabel) cât și pe td (celulă). Atunci când utilizați
lățimi pentru fiecare celulă în parte - ceea ce este recomandat în majoritatea
cazurilor, pentru a avea un control mărit asupra acestora, aveți grijă ca suma
with-urilor de pe td-uri să fie egală cu lățimea tabelului. În caz contrar,
browser-ul va redimensiona celulele.
Colspan și rowspan sunt și ele foarte utile pentru a crea structuri mai complexe
de tabele. Ele se folosesc pe tag-ul td și determină întinderea unei celule
pe mai multe rânduri (rowspan) sau pe mai multe coloane (colspan).
Nu este indicată utilizarea de combinații de valori fixe și relative pe același
tabel, deoarece pe anumite rezoluții browser-ul nu va mai afișa dimensiuni exacte.
Construiți un tabel cu o lățime de 100% și 3 coloane astfel:
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="200">fix 200</td>
<td width="73%"> 80%</td>
<td width="100">fix 100 </td>
</tr>
</table>
Redimensionați fereastra și schimbați rezoluția ecranului. Veți vedea ce se
întâmplă...
Pentru a obține o pagină web pe 3 coloane, astfel încât prima și ultima să
aibă lățimi fixe, iar cea din mijloc să se dimensioneze în funcție de lățimea
browser-ului, vom proceda astfel: introducem un tabel cu dimensiuni relative,
iar în prima și în ultima coloană introducem alte tabele formate dintr-o singură
celulă cu dimensiuni fixe. Multe pagini web sunt construite astfel, în stânga
fiind meniul de navigare, la mijloc conținutul iar la dreapta o margine. Nu
lăsați conținutul să se întindă pe întreaga lățime a unei pagini, deoarece textul
devine greu de urmărit.
Alinierea verticală și orizontală a conținutului unei celule este determinată
de atributele valign și respectiv align. Aceste atribute pot fi specificate
în tag-ul td sau tr. Atunci când atributul align se află pe tag-ul table, el
va determina alinierea tabelului ca și în cazul imaginilor. Align poate avea
valoarea left, right și center, iar valign - top, middle și bottom. Valoarea
implicită pentru align este left iar pentru valign este middle. Iată cum va
arăta următorul tabel într-un browser:
<table
border="1">
<tr> <td height="61" valign="top">valign=top</td> </tr>
<tr> <td height="65" valign="middle">valign=middle</td> </tr>
<tr> <td height="80" valign="bottom">valign=bottom</td> </tr>
</table>
Cum procedăm când dorim să poziționăm conținutul în centrul ferestrei browser-ului,
atât orizontal cât și vertical, indiferent de dimensiunile acesteia? Vom folosi
un tabel format dintr-o singură celulă care acoperă întreaga fereastră:
<table width="100%" height="100%">
<tr>
<td align="center" valign="middle"> Text centrat vertical și orizontal
</td>
</tr>
</table>
O astfel de pagină este întâlnită mai ales ca pagină de introducere într-un
sit.
Ați observat desigur că browser-ele păstrează un spațiu între marginea ferestrei
și conținut. Pentru a stabili dimensiunile acestui spațiu, folosiți următoarele
atribute în tag-ul body:
leftmargin="x" topmargin="x" marginwidth="x" marginheight="x",
unde x reprezintă dimensiunea în pixeli a acestui spațiu. leftmargin și marginwidth
se referă la spațiul orizontal iar topmargin și marginheight la cel vertical.
Sunt necesare toate cele 4 atribute deoarece Internet Explorer și Netscape le
interpretează în mod diferit.
O altă chestiune demnă de luat în seamă atunci când lucrăm cu tabele este faptul
că un browser va afișa un tabel doar în momentul în care a citit și ultima celulă
a acestuia. Astfel, paginile construite într-un singur tabel, vor fi afișate
doar după ce s-au încărcat în întregime (cu excepția imaginilor). Pentru a nu
lăsa vizitatorul să aștepte atâta timp până să vadă ceva pe ecranul său, vă
recomand să folosiți mai multe tabele-container, pe verticală.
Acestea fiind spuse, nu vă rămâne decât să experimentați cu tabele de lățimi
fixe și relative, intercalate sau nu. Studiați comportamentul acestora pe diferite
rezoluții și dimensiuni ale ferestrei browser-ului. Cu puțină răbdare veți reuși
să amplasați elementele incluse pe pagina dvs. web exact acolo unde doriți.
Nu am epuizat tehnicile puse la dispoziție de limbajul HTML pentru a controla
mai bine poziționarea conținutului. Menționez aici Frame-urile sau Layer-ele,
însă de acestea ne vom ocupa într-un număr viitor.
Nota redacției: Acest articol este primul dintr-o serie de contribuții
românești. Nu ezitați de a-l citi critic, orice fel de completări și probleme
puse de dumneavoastră vor fi binevenite.
Iată cum
va arăta următorul tabel:
<table width="254" border="1">
<tr>
<td colspan="4">colspan=4</td>
</tr>
<tr>
<td rowspan="4" width="83">rowspan=4</td>
<td width="48">0</td>
<td width="44">0</td>
<td width="51">0</td>
</tr>
<tr>
<td width="48">0</td>
<td colspan="2">colspan=2</td>
</tr>
<tr>
<td width="48">0</td>
<td colspan="2">colspan=2</td>
</tr>
<tr>
<td width="48">0</td>
<td colspan="2">colspan=2</td>
</tr>
</table>
|