CAP. 9. CADRE

 

9.1. Noţiuni generale

 

        Cadrele vă permit divizarea ferestrei browser-ului în mai multe zone dreptunghiulare, dispuse pe rânduri şi/sau coloane, fiecare dintre acestea conţinând un document web diferit. Fiecare astfel de zonă poartă denumirea de cadru (frame).

Dintre avantajele oferite de folosirea cadrelor amintim faptul că reprezintă cea mai simplă modalitate de a realiza un document ce conţine părţi statice şi părţi variabile (care se pot schimba). Astfel, meniurile, logo-urile, mesajele şi orice alte informaţii mai dorim pot fi inserate într-un cadru ce va rămâne permanent vizibil.

Dezavantajele constau mai ales în faptul că nu toate browserele suportă cadre, prin urmare sunt necesare două versiuni ale aceluiaşi site (cu cadre şi fără cadre) iar motoarele de căutare nu indexează corespunzător un site care conţine cadre.

        O pagină ce conţine cadre reprezintă de fapt un document cu mai multe pagini, fiecare cadru conţinând o pagină web. În afară de acestea, mai există un document web care descrie modul în care va fi împărţită pagina în cadre.

        De exemplu, pentru a crea un document cu două cadre (unul în stânga şi unul în dreapta) este nevoie de trei documente web. În imaginea de mai jos sunt reprezentate aceste documente aşa cum sunt ele afişate de browsere.

 

       

 

        În acest exemplu, doc.html reprezintă documentul care descrie modul în care fereastra browser-ului va fi divizată în cele două zone dreptunghiulare marcate prin cadrele ce conţin celelalte două documente web.

 

        9.2. Structura unei pagini ce defineşte cadre

 

        Definirea cadrelor se realizează prin folosirea elementului <FRAMESET> ce se plasează într-un document web în locul elementului <BODY>.

        Elementul <FRAMESET> descrie modul în care fereastra browser-ului va fi împărţită, mai exact stabileşte numărul şi dimensiunile cadrelor (zonelor dreptunghiulare) dispuse pe rânduri şi/sau coloane. Necesită tag de închidere </FRAMESET>

Atributele acestui element sunt legate de existenţa rândurilor sau coloanelor, precum şi de modul de delimitare a acestora unele de altele:

 

Atribut

Valoare

Descriere

cols

pixels

%

*

Defineşte numărul şi mărimea coloanelor într-un document.

rows

pixels

%

*

Defineşte numărul şi mărimea rândurilor într-un document.

frameborder

yes / no

1 / 0

Stabileşte dacă există sau nu bordură pentru cadre

framespacing

sau

border

pixels

Stabileşte grosimea bordurii cadrelor (framespacing în Internet Explorer şi border în Netscape).

bordercolor

rgb(x,x,x)

#xxxxxx

colorname

Precizează culoarea bordurii cadrelor.

 

        În interiorul elementului <FRAMESET> este elementul <FRAME>, câte unul pentru fiecare cadru,  care are rolul de a stabili documentele corespunzătoare fiecăruia dintre cadre.

        Pentru exemplificare vor crea un document cu două cadre dispuse vertical. În acest sens vor trebui create cele trei documente corespunzătoare.

        Vom crea fişierul doc1.html, corespunzător cadrului 1, cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Documentul 1</TITLE>

</HEAD>

<BODY BGCOLOR="cyan">

  <H3>Documentul 1 in cadrul 1</H3>

</BODY>

</HTML>

 

        Vom crea şi fişierul doc2.html, corespunzător cadrului 2, cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Documentul 2</TITLE>

</HEAD>

<BODY BGCOLOR="yellow">

  <H3>Documentul 2 in cadrul 2</H3>

</BODY>

</HTML>

 

        În final vom crea fişierul test9.html, care va stabili dispunerea cadrelor, cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Folosirea cadrelor</TITLE>

</HEAD>

 

<FRAMESET COLS="40%,60%">

  <FRAME SRC="doc1.html">

  <FRAME SRC="doc2.html">

</FRAMESET>

 

</HTML>

 

        Rezultatul afişat va fi următorul:

 

       

 

        În cazul în care dorim ca cele două cadre să fie dispuse orizontal, fişierul test9.html va avea următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Folosirea cadrelor</TITLE>

</HEAD>

<FRAMESET ROWS="30%,70%">

  <FRAME SRC="doc1.html">

  <FRAME SRC="doc2.html">

</FRAMESET>

</HTML>

 

        iar rezultatul afişat va fi următorul:

 

       

 

 

Pentru realizarea unei structuri combinate, cu trei cadre, dintre care unul pe orizontală şi două pe verticală, vom crea fişierul doc3.html, corespunzător cadrului 3, cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Documentul 3</TITLE>

</HEAD>

<BODY BGCOLOR="beige">

  <H3>Documentul 3 in cadrul 3</H3>

</BODY>

</HTML>

 

iar fişierul test9.html va avea următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Folosirea cadrelor</TITLE>

</HEAD>

<FRAMESET ROWS="30%,70%">

  <FRAME SRC="doc1.html">

    <FRAMESET COLS="30%,70%">

      <FRAME SRC="doc2.html">

      <FRAME SRC="doc3.html">

   </FRAMESET>

</FRAMESET>

</HTML>

 

        Rezultatul afişat va fi următorul:

 

       

 

 

        În final vom analiza şi atributele ce definesc bordura, astfel că vom folosi următoarele exemple:

 

<HTML>

<HEAD>

 <TITLE>Folosirea cadrelor</TITLE>

</HEAD>

<FRAMESET ROWS="30%,70%" FRAMEBORDER="yes" FRAMESPACING="15" BORDERCOLOR="blue">

  <FRAME SRC="doc1.html">

    <FRAMESET COLS="30%,70%">

      <FRAME SRC="doc2.html">

      <FRAME SRC="doc3.html">

   </FRAMESET>

</FRAMESET>

</HTML>

 

        Rezultatul afişat va fi următorul:

 

 

Pentru eliminarea bordurilor, atributele frameborder şi framespacing vor primi valoarea 0, iar rezultatul afişat va fi următorul:

 

 

 

9.3. Atributele cadrelor

 

Elementul <FRAME> defineşte fiecare cadru dintr-un document. Este obligatorie prezenţa acestui element în fiecare secţiune marcată de tag-ul <FRAMESET>. Nu necesită tag de închidere.

Atributele ce caracterizează acest element sunt următoarele:

 

Atribut

Valoare

Descriere

src

URL

Reprezintă link-ul către fişierul ce se va deschide în cadrul respectiv..

frameborder

yes / no

1 / 0

Stabileşte dacă există sau nu bordură pentru cadrul respectiv.

longdesc

URL

Reprezintă link-ul către o descriere lungă folosită pentru browserele ce nu suportă cadre.

marginheight

pixels

Defineşte marginile de sus şi de jos ale cadrului.

marginwidth

pixels

Defineşte marginile din stânga şi din dreapta ale cadrului.

noresize

noresize

Când este setat, acest atribut împiedică ajustarea mărimii cadrului de către utilizatori.

scrolling

yes

no

auto

Determină prezenţa sau absenţa barei de derulare (scrollbar).

name

text

Defineşte denumirea cadrului.

target

_blank

_self

_parent

_top

Specifică unde va deschis URL-ul ţintă:

Ř      _blank – într-o fereastră nouă;

Ř      _self – în acelaşi cadru din care a fost accesat;

Ř      _parent – în cadrul părinte;

Ř      _top - direct în fereastra browser-ului, luând locul documentului existent.

 

Pentru a observa efectele acestor atribute, ne vom folosi de fişierul test9.html cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Folosirea cadrelor</TITLE>

</HEAD>

<FRAMESET ROWS="30%,70%">

  <FRAME SRC="doc1.html">

    <FRAMESET COLS="30%,70%">

      <FRAME SRC="doc2.html">

      <FRAME SRC="doc3.html">

   </FRAMESET>

</FRAMESET>

</HTML>

 

Atributul src a fost folosit în exemplele anterioare, prin urmare nu vom insista asupra lui.

Vom adăuga atributul frameborder="no" cadrului nr. 2 (<frame src="doc2.html" frameborder="no">) şi veţi observa diferenţa:


 


Cadrul 2 cu bordură

 

 

Cadrul 2 fără bordură

 

 

În continuare vom adăuga şi atributul marginheight cadrului nr. 2 (<frame src="doc2.html" frameborder="no" marginheight="0">) pentru a pune în evidenţă modul în care se modifică marginile de sus şi de jos ale cadrului:

 

Cadrul 2 cu margini implicite

 

 

Cadrul 2 fără margini sus şi jos

 

 

 

Adăugând şi atributul marginwidth cadrului nr. 2 (<frame src="doc2.html" frameborder="no" marginheight="25" marginwidth="25">) vom pune în evidenţă modul în care se modifică marginile din stânga şi din dreapta ale cadrului:


 

Cadrul 2 cu margini implicite

 

 

Cadrul 2 cu margini de 25 pixeli

 

 

Pentru a pune în evidenţă atributul noresize, mai întâi încercaţi să poziţionaţi cursorul de la mouse pe bordura dintre cadre, după care, în momentul în care vă apare semnul  " « ", ţinând apăsat pe butonul din stânga de la mouse, mutaţi bordura ce separă cadrele:

 

 

Aplicând atributul noresize (<frame src="doc2.html" noresize>), facilitatea de redimensionare a cadrelor va fi dezactivată, prin urmare nu va mai apărea semnul  " « ", ci doar cursorul normal al mouse-ului, ca în imaginea de mai jos.

 

 

 

Atributul scrolling vă permite afişarea barei de derulare în fiecare cadru. Valoarea implicită este “auto”, caz în care, în funcţie de mărimea conţinutului, browser-ul va decide dacă este necesară afişarea barei de derulare. În cazul atribuirii valorii “yes”, bara de derulare va fi afişată întotdeauna, iar în cazul atribuirii valorii “no”, bara de derulare nu va fi afişată deloc.

Pentru exemplificare, vom adăuga conţinut celor trei documente ce populează cadrele, şi anume doc1.hml, doc2.hml şi doc2.hml.

 

 

Prin folosirea atributului name, cadrelor le pot fi atribuite denumiri, ceea ce va poate ajuta la identificarea mai usoara a acestora.

 

9.4. Destinaţii

 

Când creaţi link-uri într-un document web ce conţine cadre, este necesară folosirea unui atribut suplimentar denumit target. Acesta este corelat cu atributul name prezentat anterior.

Atributul target care poate apărea în următoarele elemente <A>, <AREA>, <BASE> şi <FORM>.

Exemple:

 

 <A HREF="file.htm" TARGET="nume_fereastra">

<AREA SHAPE="RECT" COORDS="5,6,2,4" HREF="file.html" TARGET="nume_fereastra">

<BASE TARGET="nume_fereastra">

<FORM ACTION="cgi-bin/script" TARGET="nume_fereastra">

 

Valorile posibile pentru atributul target sunt:

a)                         numele (valoarea atributului name) unei ferestre deschise de browser sau numele (valoarea atributului name) unui cadru încărcat de browser

b)                         una din următoarele 4 ţinte speciale, ce nu pot fi atribuite atributului name, fiind denumiri rezervate cu funcţii specifice:

§         TARGET="_blank" (documentul va fi încărcat într-o fereastră nouă a browser-ului);

§         TARGET="_top" (documentul va fi încărcat direct în fereastra browser-ului, luând locul documentului existent);

§         TARGET="_parent" (documentul va fi încărcat în fereastra/setul de cadre părinte);

§         TARGET="_self" (documentul va fi încărcat în acelaşi cadru);

 

Pentru exemplificare, vom folosi fişierul test9.html cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Folosirea cadrelor</TITLE>

</HEAD>

<FRAMESET ROWS="15%,85%">

  <FRAME SRC="doc1.html" NAME="sus">

    <FRAMESET COLS="70%,30%">

      <FRAME SRC="doc2.html">

      <FRAME SRC="doc3.html" NAME="dreapta">

   </FRAMESET>

</FRAMESET>

</HTML>

       

Vom folosi fişierul doc1.html, corespunzător cadrului 1, cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Documentul 1</TITLE>

</HEAD>

<BODY BGCOLOR="cyan">

  <H3>Documentul 1 in cadrul 1</H3>

</BODY>

</HTML>

 

În fişierul doc2.html vom insera link-uri către doc4.html cu destinaţii diferite, astfel:

 

<HTML>

<HEAD>

 <TITLE>Documentul 2</TITLE>

</HEAD>

<BODY BGCOLOR="yellow">

  <H3>Documentul 2 in cadrul 2</H3>

 <P><B>Exemplificare destinatii</B><BR>

 <A HREF="doc4.html" TARGET="dreapta"> Documentul 4 in cadrul din dreapta</A><BR>

<A HREF="doc4.html" TARGET="sus"> Documentul 4 in cadrul de sus</A><BR>

<A HREF="doc4.html" TARGET="_self"> Documentul 4 in acelasi cadru din care este accesat link-ul (si anume in Cadrul 2)</A><BR>

<A HREF="doc4.html" TARGET="_parent"> Documentul 4 in cadrul parinte</A><BR>

<A HREF="doc4.html" TARGET="_top"> Documentul 4 direct in browser (in acest exemplu rezultatul este identic ca la optiunea precedenta)</A><BR>

<A HREF="doc4.html" TARGET="_blank"> Documentul 4 intr-o fereastra noua a browser-ului </A>

</BODY>

</HTML>

 

Fişierul doc3.html, corespunzător cadrului 3, va avea următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Documentul 3</TITLE>

</HEAD>

<BODY BGCOLOR="beige">

  <H3>Documentul 3 in cadrul 3</H3>

</BODY>

</HTML>

 

Şi în final vom crea fişierul doc4.html cu următoarea structură:

 

<HTML>

<HEAD>

 <TITLE>Documentul 4</TITLE>

</HEAD>

<BODY BGCOLOR="pink">

  <H3>Documentul 4</H3>

  <P><A HREF="test9.html" TARGET="_top"> Dati click aici pentru a reveni la documentul initial</A></P>

</BODY>

</HTML>

 


        Rezultatele obţinute vor fi următoarele:

 

 

 

Documentul 4 în cadrul din dreapta

 

 

Documentul 4 în cadrul de sus

 

Documentul 4 în acelaşi cadru din care este accesat link-ul (şi anume în Cadrul 2)

 

Imaginea afişată este identică pentru ultimele 3 opţiuni:

-         Documentul 4 în cadrul parinte

-         Documentul 4 direct în browser

-         Documentul 4 într-o fereastra nouă a browser-ului

 

 

9.5. Cadre interioare

 

        Cadrele interioare (in-line) sunt cadre ce pot fi inserate oriunde în interiorul unei pagini web (similar elementelor imagine). Pentru a insera un cadru interior, se foloseşte elementul <IFRAME> ce necesită tag-ul de închidere </IFRAME>.

        Acest element foloseşte toate atributele elementului <FRAME>, cu aceleaşi efecte (şi anume src, frameborder, marginheight, marginwidth, scrolling şi name).

        Existând similaritatea cu elementele imagine, o serie de atribute, specifice elementelor imagine, pot fi utilizate cu elementul <IFRAME> obţinându-se aceleaşi rezultate (şi anume width, height, align, hspace şi vspace).

        Într-o pagină web pot fi adăugate oricâte cadre interioare sunt necesare.

 


        Pentru exemplificare vom modifica doc3.html astfel:

 

<HTML>

<HEAD>

 <TITLE>Documentul 3</TITLE>

</HEAD>

<BODY BGCOLOR="beige">

  <H3>Documentul 3 in cadrul 3</H3>

  <IFRAME SRC="doc4.html" ALIGN="center" WIDTH="200" HEIGHT="150" </IFRAME>

</BODY>

</HTML>

 

        Vom obţine următorul rezultat:

 

       

 

 


9.6. Elementul <NOFRAMES>

 

        Înainte de a încheia şi acest capitol, trebui să aveţi în vedere că încă mai există oameni care folosesc anumite browsere ce nu suportă cadre. În aceste cazuri browserele vor afişa pagini goale.

        Problema aceasta poate fi rezolvată prin inserarea elementului <NOFRAMES> în interiorul elementului <FRAMESET>.

        În interiorul elementului <NOFRAMES> va trebui să inseraţi cod HTML obişnuit prin care puteţi redirecţiona vizitatorii paginilor dvs. către o variantă a site-ului fără cadre (dacă există), sau puteţi să-i atenţionaţi asupra faptului ca documentul dvs. conţine cadre iar browser-ul lor nu suportă aşa ceva.

        De exemplu:

 

<HTML>

<HEAD>

 <TITLE> </TITLE>

</HEAD>

<FRAMESET ROWS="40%,60%" COLS="70%,30%">

      <FRAME SRC="doc1.html">

      <FRAME SRC="doc2.html">

      <FRAME SRC="doc3.html">

      <FRAME SRC="doc4.html">

   <NOFRAMES>

    <BODY>Aceast site contine cadre pe care browser-ul dvs. nu le poate interpreta. Puteti vizita o versiune fara cadre a site-ului la adresa ….

    </BODY>

   </NOFRAMES>

</FRAMESET>

</HTML>

 

9.7. Aplicaţie practică

 

Pentru a pune în practică cele prezentate în acest capitol, dar si in cele anterioare, vom realiza o structură combinată, cu trei cadre, dintre care unul pe orizontală şi două pe verticală. Astfel, cadrul orizontal va fi alocat titlului (antetului), cel din stânga va fi alocat unui meniu, iar cel din dreapta va prezenta conţinutul corespunzător meniului.

 

Structura cadrelor va fi definită în fişierul test_cadre.html ce va avea următorul conţinut:

 

<HTML>

<HEAD>

 <TITLE>Retete culinare</TITLE>

</HEAD>

<FRAMESET ROWS="15%,85%">

  <FRAME SRC="antet_cadre.html" NAME="antet" SCROLLING="no">

    <FRAMESET COLS="30%,70%">

      <FRAME SRC="meniu_cadre.html" NAME="meniu">

      <FRAME SRC="continut_cadre.html" NAME="retete">

   </FRAMESET>

   <NOFRAMES>

   <H1>Retete culinare</H1> Browser-ul dvs. nu suporta cadre? Nicio problema! Puteti vedea continutul site-ului nostru in versiunea

   <A HREF="continut_cadre.html">fara cadre</A>.

   </NOFRAMES>

</FRAMESET>

</HTML>

 

Pentru antet vom crea fişierul antet_cadre.html cu următorul conţinut:

 

<HTML>

<HEAD>

 <TITLE>Titlu</TITLE>

</HEAD>

<BODY BGCOLOR="saddlebrown">

  <H1><FONT COLOR="white">Retete culinare</FONT></H1>

</BODY>

</HTML>

 

Pentru meniu vom crea fişierul meniu_cadre.html cu următorul conţinut:

 

<HTML>

<HEAD>

 <TITLE>Meniu</TITLE>

</HEAD>

<BODY BGCOLOR="wheat">

   <H2>Meniu</H2>

   <A HREF="continut_cadre.html#Aperitiv din branza de burduf" TARGET="retete">Aperitiv din branza de burduf</A><BR><BR>

   <A HREF="continut_cadre.html#Ciorba de caprioara cu smantana" TARGET="retete">Ciorba de caprioara cu smantana</A><BR><BR>

   <A HREF="continut_cadre.html#Friptura de iepure" TARGET="retete">Friptura de iepure</A><BR><BR>

   <A HREF="continut_cadre.html#Coltunasi dulci cu branza de vaci" TARGET="retete">Coltunasi dulci cu branza de vaci</A>

</BODY>

</HTML>

 

Continutul va fi cuprins in fişierul continut_cadre.html astfel:

 

<HTML>

<HEAD>

 <TITLE>Continut</TITLE>

</HEAD>

<BODY BGCOLOR="beige">

<A NAME="Aperitiv din branza de burduf"><H2>Aperitiv din branza de burduf</H2></A>

<B>Ingrediente:</B>

<UL>

<LI>1/2 kg branza de oaie (se poate inlocui cu cas proaspat)

<LI>100 ml smantana

<LI>5 sardele

<LI>ceapa

<LI>chimen

<LI>50-100 ml bere

</UL>

<B>Mod de preparare:</B>

<P>Se piseaza branza cu o furculita (daca e cas atunci se da prin masina de tocat). Peste se toarna berea, smantana. Chimenul se macina si se adauga o lingurita fara varf, iar la final sardelele si ceapa rasa. Se amesteca bine bine si se sareaza dupa gust. De preferat sa se serveasca in aceeasi zi.</P>

<B>Recomandari:</B>

<P>Sa se orneze cu bucatele taiate de gogosari sau masline</P>

<BR>

<A NAME="Ciorba de caprioara cu smantana"><H2>Ciorba de caprioara cu smantana</H2></A>

<B>Ingrediente:</B>

<UL>

<LI>500 g carne de caprioara

<LI>100 g ceapa

<LI>100 g morcovi

<LI>50 g patrunjel

<LI>50 g ulei

<LI>75 g orez

<LI>250 g rosii

<LI>40 ml otet

<LI>200 g smantana

<LI>2 oua

<LI>verdeata

<LI>sare

</UL>

<B>Mod de preparare:</B>

<P>Carnea de caprioara se portioneaza si se pune la fiert in apa cu sare. In timpul fierberii se spumeaza cat este nevoie. Ceapa se toaca marunt, se caleste in ulei, se adauga zarzavatul de supa taiat julien si se mai calesc impreuna cateva minute. Se sting cu apa si se pun in ciorba. Cand carnea este aproape fiarta, se pune orezul fiert separat si rosiile curatate de coaja si seminte si taiate cuburi. Smantana se amesteca cu galbenusurile de ou si doua linguri de otet si se adauga la ciorba. Se mai potriveste o data gustul de sare, iar la servit se presara cu verdeata tocata marunt.</P>

<BR>

<A NAME="Friptura de iepure"><H2>Friptura de iepure</H2></A>

<B>Ingrediente:</B>

<UL>

<LI>1 kg carne de iepure (pulpa)

<LI>50 g slanina afumata

<LI>50 g unt

<LI>sare

</UL>

<B>Mod de preparare:</B>

<P>Carnea de iepure se sterge cu un stergar, se impaneaza cu slanina afumata, se freaca cu sare, se unge cu unt si se asaza intr-o tava cu restul de unt si putina apa, se da la cuptor si se frige la un foc potrivit. In timpul frigerii se stropeste cu sosul format in tava. Se mananca cu garnituri de legume si salate de sezon.</P>

<BR>

<A NAME="Coltunasi dulci cu branza de vaci"><H2>Coltunasi dulci cu branza de vaci</H2></A>

<B>Ingrediente:</B>

<UL>

<LI>500 g faina

<LI>4 oua

<LI>500 g branza de vaci

<LI>40 g coaja rasa de lamaie

<LI>175 g zahar

<LI>sare

</UL>

<B>Mod de preparare:</B>

<P>Din faina, 2 oua, putina sare si putina apa se prepara o coca mai deasa, din care se intinde o foaie si se taie patrate cu latura de 5-7 cm. Branza de vaci se amesteca cu 75 g zahar, 2 oua si coaja de lamaie rasa, se repartizeaza, in mod egal, pe patratele de coca, se indoaie in forma de triunghi si se lipesc bine. Se fierb in apa cu sare, se scurg, se trec printr-un jet de apa rece, se toarna deasupra untul fierbinte si se presara cu restul de zahar. </P>

</BODY>

</HTML>

 

Rezultatul afişat va fi următorul: