Documente Academic
Documente Profesional
Documente Cultură
Afaceri electronice
Informatică economică
1. HTML.......................................................................................................................................... 4
1.1. Structura documentului HTML ..........................................................................................................4
1.2. Formatarea caracterelor, organizarea textului. .................................................................................10
1.3. Blocuri de text ..................................................................................................................................11
1.4. Liste ..................................................................................................................................................15
1.5. Tabele ...............................................................................................................................................20
1.6. Operarea cu imagini, obiecte audio și video ....................................................................................28
1.6.1. Inserarea imaginilor ...................................................................................................................28
1.6.2. Inserarea sunetelor și videoclipurilor ........................................................................................31
1.7. Referințe ...........................................................................................................................................35
1.7.1. Marcajul <a> .............................................................................................................................36
1.7.2. Referințe către alte pagini Web .................................................................................................37
1.7.3. Referințe cu imagini ..................................................................................................................37
1.7.4. Referințe cu adrese URL relative ..............................................................................................38
1.7.5. Referințe către informații non Web ...........................................................................................38
1.7.6.Referințe către fișiere non HTML ..............................................................................................39
1.7.7.Referințe interne în cadrul unei pagini .......................................................................................39
1.7.8. Trimiterea automată a unui e-mail ............................................................................................40
1.8. Hărți de imagini ................................................................................................................................41
1.9. Documentarea unei pagini Web .......................................................................................................43
1.10. Formulare .......................................................................................................................................45
1.11. Cadre interne ..................................................................................................................................52
2. CSS ............................................................................................................................................ 53
2.1. Introducere în CSS ...........................................................................................................................53
2.2. Sintaxa construcției CSS ..................................................................................................................53
2.3. Comentarii CSS ................................................................................................................................54
2.4. Foi de stil ..........................................................................................................................................55
2.4.1. Foaie externă de stil ...................................................................................................................55
2.4.2. Foaie internă de stil ...................................................................................................................56
2.4.3. Stiluri inline ...............................................................................................................................56
2.4.4. Foi multiple de stiluri ................................................................................................................57
2.5. Selectorii CSS ..................................................................................................................................58
2.5.1. Selectorul element .....................................................................................................................58
2.5.2. Selectorul id...............................................................................................................................59
2.5.3. Selectorul class ..........................................................................................................................59
2.6. Formatarea background-ului ............................................................................................................60
2.7. Formatarea textului...........................................................................................................................64
2.8. Fonturi ..............................................................................................................................................70
2.9. Linkuri ..............................................................................................................................................77
2.10. Liste ................................................................................................................................................79
2.11. Tabele .............................................................................................................................................85
2.12. Modelul box în CSS .......................................................................................................................90
2.12.1. Dimensiunile unui element: .....................................................................................................90
2.12.2. Chenare....................................................................................................................................92
2.12.3. Linii exterioare (outlines) ........................................................................................................99
2.12.4. Margini ..................................................................................................................................102
2.12.5. Padding ..................................................................................................................................104
2.13. Gruparea și imbricarea selectorilor ..............................................................................................109
2
2.14. Setarea dimensiunilor unui element .............................................................................................110
2.15. Proprietățile display și visibility ...................................................................................................113
2.16. Poziționarea unui element ............................................................................................................116
2.17. Deplasarea elementelor ................................................................................................................122
2.17.1. Proprietatea float ...................................................................................................................122
2.17.2. Proprietatea clear ...................................................................................................................124
2.18. Alinierea elementelor ...................................................................................................................128
2.19. Pseudo-clasele CSS ......................................................................................................................130
2.20. Bara de navigare ...........................................................................................................................138
2.21. Galerie de imagini ........................................................................................................................149
3. HTML 5................................................................................................................................... 156
3.1. Utilizare HTML 5...........................................................................................................................157
3.2. Sintaxa simplificată ........................................................................................................................157
3.3. Elemente noi în HTML5 ................................................................................................................158
3.4. Elementele exluse ...........................................................................................................................159
3.5. Site-uri responsive ..........................................................................................................................163
3.5.1. Sursa RWD ..............................................................................................................................165
3.5.2. Avantajele RWD .....................................................................................................................165
3.5.3. Modul de funcționare al RWD ................................................................................................166
3.5.4. Crearea unui site responsive ....................................................................................................166
4. JAVASCRIPT ......................................................................................................................... 168
4.1. JavaScript - Noțiuni de bază ...........................................................................................................168
4.2. Inserarea scripturilor JavaScript .....................................................................................................169
4.3. Tipuri de date JavaScript ................................................................................................................174
4.3.1. Date numerice.........................................................................................................................174
4.3.2. Şir de caractere ........................................................................................................................175
4.3.3. Valori logice sau booleene ......................................................................................................175
4.4. Operatori JavaScript .......................................................................................................................176
4.5. Instrucţiuni JavaScript ....................................................................................................................183
4.6. Funcţii.............................................................................................................................................192
4.7. Evenimentele JavaScript. ...............................................................................................................195
4.8. Obiectele JavaScript .......................................................................................................................201
4.8.1. Obiectul String ........................................................................................................................202
4.8.2. Obiectul Date...........................................................................................................................208
4.8.3. Obiectul Array .........................................................................................................................212
4.8.4. Obiectul Boolean .....................................................................................................................219
4.8.5. Obiectul Math ..........................................................................................................................220
4.8.6. Obiectul RegExp .....................................................................................................................223
4.8.7. Obiectul Navigator ..................................................................................................................231
4.8.8. Obiectele browserului..............................................................................................................232
4.8.9. Crearea obiectelor proprii ........................................................................................................251
3
1. HTML
Unul din primele elemente fundamentale ale WWW ( World Wide Web ) este HTML ( Hypertext Markup
Language ), care descrie formatul primar în care documentele sunt distribuite și văzute pe Web. Multe din
trasaturile lui, cum ar fi independenta fata de platforma, structurarea formatării și legaturile hypertext, fac
din el un foarte bun format pentru documentele Internet și Web. Documentele HTML sînt documente în
format ASCII și prin urmare pot fi create cu orice editor de texte. Au fost insa dezvoltate editoare
specializate care permit editarea într-un fel de WYSIWYG desi nu se poate vorbi de WYSIWYG atita
vreme cit navigatoarele afișează acelasi document oarecum diferit, în functie de platforma pe care ruleaza.
Au fost de asemenea dezvoltate convertoare care permit formatarea HTML a documentelor generate ( și
formatate ) cu alte editoare. Evident conversiile nu pot patra decit partial formatarile anterioare deoarece
limbajul HTML este inca incomplet.
<html>
<head> </head>
<body>
</body>
</html>
4
Așa arată primul document HTML. Porniți Internet Explorer sau Google Crome, deschideți fișierul creat.
Dar un afișează nimic.
În primul rând, titlul unei pagini se obține inserând în secțiunea <head>...</head> a următoarei linii:
<title>Aceasta este prima mea pagina de Web</title>
în plus, în secțiunea <body>...</body> putem scrie texte cît dorim. Dacă nu întâlnim nici un marcaj < sau
> atunci interpretorul HTML le va lua ca texte simple și le va afișa pe ecran. să vedem o noua versiune a
paginii noastre:
<html>
<head>
<title>Aceasta este prima mea pagina de Web</title>
</head>
<body>
Bine ati venit în pagina mea de Web!
</body>
</html>
<html><head>
<title>Titlul paginii</title>
</head>
<body>
Bine ati venit în <br> pagina mea de Web!
</body></html>
Blocuri preformatate
Pentru ca browser-ul să interpreteze corect caracterele " spațiu ", " tab " și " CR/LF " ce apar în cadrul
unui text, acest text trebuie inclus într-un bloc <pre>...</pre>.
<html><head>
<title>Bloc preformatat </title>
</head>
<body>
<pre>
Prima linie
A doua linie
A treia linie
5
</pre>
</body></html>
Culoarea de fond
O culoare poate fi precizata în două moduri:
Prîntr-un nume de culoare. Sunt disponibile cel puțin 16 nume de culori: aqua, black, fuchsia, gray,
green lime, maroon, navy, olive, purple, red, silver, teal, white și yellow.
Prin construcția " #rrggbb " unde r (red), g (green), sau b (blue) sunt cifre hexazecimale și pot lua
valorile: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, A, b, B, c, C, d, D, e, E, f, F; se pot defini astfel 65536 de culori.
Culoarea unei pagini se precizează prin intermediul unui atribut al etichetei <body>. Culoarea fondului
paginii Web se stabilește cu atributul bgcolor al etichetei <body>, de exemplu: <body bgcolor =
culoare>.
Culoarea textului
Acest lucru se face prin intermediul atributului text al etichetei <body> după sintaxa <body
text=culoare>.
În următorul exemplu textul are culoarea roșie.
<html><head>
<title>culoare textului </title>
</head>
<body text="red">
Un text de culoare rosie.
</body></html>
O eticheta poate avea mai multe atribute. De exemplu, o etichetă cu trei atribute arată astfel:
<eticheta atribut1 = valoare1 atribut2 = valoare2 atribut3 = valoare3>.
Următorul exemplu prezintă o pagină cu fondul de culoare albastră și textul de culoare galbenă.
<html><head>
<title>atribute multiple </title>
</head>
<body bgcolor="blue" text="yellow">
Fond de culoare albastra și text de culoare galbena.
</body>
</html>
Textul afișat este caracterizat de următoarele atribute: Mărime ( size), Culoare ( color ), Font (style).
Acestea sunt atribute ale etichetei <basefont>.Este o eticheta singulara (fără delimitator de sfirșit de bloc).
6
<basefont size = număr color = culoare style = font>
unde:
număr - poate fi 1, 2, 3, 4, 5, 6 sau 7; ( 1 pentru fontul cel mai mic și 7 pentru fontul cel mai mare);
culoare - este o culoare precizata prin nume sau printr-o construcție RGB;
font - poate fi un font generic ca " serif ", " san serif ", " cursive ", " monospace ", "fantasy " sau un font
specific instalat pe calculatorului clientului, ca " Times New Roman ", " Helvetica " sau " Arial ".Se
accepta ca valoare și o lista de fonturi separate prin virgula, de exemplu: " Times New Roman, serif,
monospace ".
Urmatoarele etichete au efecte similare. Ele permit scrierea fragmentului de text cu caractere monospatiate
(de tipul celor folosite de o mașină de scris):
<code>...</code> ( " code " inseamna cod sau sursă);
<kbd>...</kbd> ( kbd vine de la " keyboard " = tastatura);
<tt>...</tt> ( tt vine de la " teletype " = teleprinter).
Eticheta de tip bloc <blink>...</blink> delimitează fragmente de text clipitoare. Aceasta eticheta
funcționează numai în browser-ul Netscape Communicator.
<html><head><title>Blocuri de caractere monospatiate și clipitoare </title></head>
<body>
Aceasta linie este formata din text normal.<br>
Codul functiei f(x,y) este: <code> Function f(x,y) {return x+y;}</code><br>
Tastati urmatoarea comanda comanda DOS:
<kbd> copy c:\windows\* c:\temp</kbd><br>
<tt>Asa scrie un teleprinter</tt><br>
Acest cuvant clipeste<blink>Blink</blink>
</body></html>
8
Blocul <q>...</q> permite inserarea în-line a citatelor. Brouwser-ul afișează citatele în ghilimele. " q "
vine de la " în-line quotation " (citate inserate în-line). Și blocurile " q " pot fi imbricate.
Simbolurile "<" și ">" sunt percepute de sistemele browser ca inceputuri și sfârșituri de HTML-taguri.
Apare intrebarea, cum săreprezentăm aceste simboluri pe ecran?
În limbajul HTML aceasta se poate realiza cu ajutorul &- consecutivităților (ele se mai numesc obiecte
simbolice sau escapeconsecutivități).
Există mai multe consecutivități de acest tip:
"<" - <
">" - >
"&" (ampersand) &
Ghilimelele(") se codifică - "
Pentru escape-consecutivități sunt două restricții suplimentare:
Fiecare consecutivitate se scrie numai cu minuscule
Sfârșitul fiecărei consecutivități este marcat de ;
În general, asemenea consecutivități există pentru toate simbolurile cu codurile ASCII mai mari decât 127.
Motivul este că unele servere nu susțin transmiterea datelor câte 8 biți.
Există mai multe metode de a include semnele diacritice române în documentele HTML. Cea mai simplă
este codificarea directă a lor prin &-consecutivități:
ă - ă Ă - Ă
i - î i - Î
ș - ş Ș - Ş
ț - ţ Ț - Ţ
â - â â - Â
Exemplu:
<html ><head><title>Codificarea semnelor diacritice românești în limbajul HTML </title></head>
<h3>Codificarea semnelor diacritice românești în limbajul HTML</h3>
<p> <b>Ă</b> - &#258;</p>
<p> <b>ă</b> - &#259;</p>
<p> <b>Î</b> - &Icirc;</p>
<p> <b>î</b> - &icirc;</p>
<p> <b>Ș</b> - &#350;</p>
<p> <b>ș</b> - &#351;</p>
<p> <b>Ț</b> - &#354;</p>
<p> <b>ț</b> - &#355;</p>
<p> <b>Â</b> - &Acirc;</p>
<p> <b>â</b> - &acirc;</p>
</body></html>
Comentarii
Sistemele browser ignoră reproducerea oricărui text situat între <!-- și -->. Este o opțiune specială pentru
introducerea în textul documentului HTML a unor comentarii, ce nu for fi afișate pe ecran.
<!--Acesta e un comentariu -->
9
1.2. Formatarea caracterelor, organizarea textului.
Un font este caracterizat de următoarele atribute:
culoare (stabilita prin atributul color);
tipul sau stilul (stabilit prin atributul face);
mărimea (definita prin atributul size);
mărimea în puncte tipografice (stabilita prin atributul point-size);
grosime (definita prin atributul weight).
Toate aceste atribute aparțin etichetei <font>, care permite inserarea de blocuri de texte personalizate.
Culori
O culoare poate fi precizata în două moduri:
prîntr-un nume de culoare.
printr-o constantă conform standardului de culoare RGB (Red, Green, Blue). O astfel de constantă se
formează astfel: #rrggbb, unde r, g și b sunt cifre hexazecimale.
Culoarea fontului
Pentru a scrie un fragment de text cu caractere de o anumită culoare se incadrează acest fragment între
delimitatorii <font>...</font> având stabilit atributul color la valoarea necesara. De exemplu:
<font color=red>fragment de text de culoare rosie</font>
Familia fontului
Pentru a scrie un text într-o pagină pot fi folosite mai multe fonturi (stiluri de caractere). Există cinci
familii generice de fonturi care sunt de regulă disponibile pe toate calculatoarele utilizatorilor: serif, sans
serif, cursive, monospace și fantasy.
Tipul de font necesar poate fi stabilit prin atributul face al etichetei <font>.
Pot fi introduse mai multe fonturi separate prin virgula.
<font face = " Arial, serif, monospace ">
în acest caz browser-ul va utiliza primul font pe care il cunoaște.
10
Mărimea fontului
Pentru a stabili mărimea unui font se utilizează atributul size al etichetei <font>. Valorile acestui atribut
pot fi:
1, 2, 3, 4, 5, 6, 7 ( 1 pentru cel mai mic font și 7 pentru cel mai mare);
+1, +2, etc. pentru a mari dimensiunea fontului cu 1, 2, etc. fata de valoarea curentă;
-1, -2, etc. pentru a micșora dimensiunea fontului cu 1, 2, etc. fata de valoarea curentă.
11
Adresa institutiei noastre este :<address> Str. Garii <br>
nr 59-61<br>
Galati </address>
</body></html>
Blocul preformatat
Într-un bloc <pre>...</pre>, semnificația marcajelor HTML se păstrează. Blocul <pre>...</pre> este
indicat pentru a insera rânduri vide ( spatiu între rândurile succesive ). Caracterul " spațiu " poate fi luat în
considerare de browser, dacă este inserat explicit prin .
<html><head><title> Bloc preformatat</title></head>
<body>
Orar:
<pre>
Ora/Ziua Luni Marti Miercuri
Într-un fișier HTML, caracterele "<"şi ">" au o semnificație specială pentru browser. Ele încadrează
comenzile și atributele de afișare a elementelor într-o pagină. Dacă dorim ca un fragment de text să
conțină astfel de caractere, acest fragment trebuie incadrat de una dintre perechile de etichete:
<xmp>...</xmp> ( 80 de caractere pe rând );
<listing>...</listing> ( 120 de caractere pe rând ).
Aceste marcaje interpreteaza corect caracterele " spatiu ", " eticheta "şi "CR/LF ". Textul afișat în pagina
este monospațiat.
<html><head>
<title> xmp și listing</title>
</head>
<body></html>
12
Un fișier html standard arată astfel:
<xmp>
<html><head><title> </title></head>
<body>
O pagina Web ...
</body>
</html>
</xmp>
</body></html>
Blocuri paragraf
Cu ajutorul etichetei paragraf <p> este posibil trecerea la o linie nouă și permite:
inserarea unui spatiu suplimentar înainte de blocul paragraf;
inserarea unui spatiu suplimentar dupa blocul paragraf, Dacă se folosește delimitatorul </p> (acesta
fiind optional);
alinierea textului cu ajutorul atributului align, avand valorile posibile " left ", " center " sau " right ".
Blocuri de titlu
Într-un text titlurile ( headers ) de capitole pot fi introduse cu ajutorul etichetelor <h1>. <h2>, <h3>,
<h4>, <h5>, <h6>.
Toate aceste etichete se refera la un bloc de text și trebuie insotite de o eticheta de incheiere similara.
Aceste etichete accepta atributul align pentru alinierea titlului blocului de text la stânga (în mod prestabilit
) , în centru și la dreapta. Tag-ul <h1> permite scrierea unui titlu cu caractere mai mari și aldine, pe când
<h6> folosește caracterele cele mai mici.
<html><head>
<title> Blocuri de titlu</title>
</head>
<body>
<h1 align="center"> Titlu de marime 1 aliniat în centru </h1>
<h2 align="right"> Titlu de marime 2 aliniat la dreapta. </h2>
<h4> Titlu de marime 4 aliniat la stânga (implicit) </h4>
</body></html>
13
Linii orizontale
Într-o pagina Web pot fi inserate linii orizontale. Acest lucru se face cu ajutorul etichetei <hr>. Pentru a
configura o linie orizontală se utilizează următorele atribute ale etichetei <hr>:
align - permite alinierea liniei pe orizontală. Valorile posibile sunt " left " ," center " și " right ";
width - permite alegerea lungimii liniei;
size - permite alegerea grosimii liniei;
noshade - când este prezent definește o linie fără umbră;
color - permite definirea culorii liniei.
Blocuri <center>
Blocul introdus de etichetele <center>...</center> aliniaza centrat toate elementele pe care le conține.
<html><head>
<title> Linii orizontale</title>
</head>
<body>
<center> <hr width=10%> <hr width=40%> <hr width=70%><hr width=100%> <hr width=70%>
<hr width=40%> <hrwidth=10%> </center>
</body></html>
Blocuri <nobr>
Blocul de text cuprins între etichetele <nobr>...</nobr> va fi afisat pe o singura linie.
<html><head>
<title> Blocul <nobr></title>
</head>
<body>
<nobr> O singura linie.O singura linie.O singura linie.O singura linie.O singura linie. O singura
linie.O singura linie.O singura linie.O singura linie.O singura linie. O singura linie.O singura
linie.O singura linie.O singura linie.O singura linie.
</nobr>
</body></html>
14
Blocuri <div>
Modalitatea cea mai eficienta de delimitare și de formatare a unui bloc de text este folosirea
delimitatorilor <div>...</div>. Un parametru foarte foarte util pentru stabilirea caracteristicilor unui bloc
<div> ( diviziune ) este align ( aliniere ). Valorile posibile ale acestui parametru sunt:
left " ( aliniere la stânga );
center " ( aliniere centrală );
right " ( aliniere la dreapta ).
Un bloc <div>...</div> poate include alte subblocuri. În acest caz , alinierea precizata de atributul align al
blocului are efect asupra tuturor subblocurilor incluse în blocul <div>.
Un bloc <div>...</div> admite atributul " nowrap " care interzice intreruperea rândurilor de catre browser.
1.4. Liste
Unul din cele mai obișnuite elemente din documentele cu mai multe pagini este un set de definiții,
referințe sau indexuri. Glosarele sunt exemple clasice în acest sens; cuvintele sunt listate în ordine
alfabetică, urmate de definiții ale termenilor respectivi. În HTML, intreaga secțiune a unui glosar va fi
gestionată printr-o lista de definiții, care este inclusa într-o pereche de marcaje de lista de definiții:
<dl>...</dl> (de la "definition list" = lista de definiții).
Observații:
- Un termen al listei este inițiat de eticheta <dt> (de la "definition term" = termen definit);
- Definitia unui termen este inițiata de eticheta <dd> (de la "definition description" = descrierea
definiției);
- Definitia unui termen incepe pe o linie noua și este indentată;
<html>
<head>
<title>Liste_ex1</title>
</head>
<body><h1 align="center">O lista de definitii</h1><hr>
15
<dl>
Glosar de termeni de World Wide Web
<dt><b>hypertext</b>
<dd> - o interconectare Web de informatii de tip text, în care orice cuvant sau fraza poate face legatura
catre un alt punct din document sau catre un alt document
<dt><b>date</b>
<dd> - fluxul nesfarsit de materiale care apar pe Internet, spre deosebire de <em>informatii</em> care
sunt date cu un anumit inteles sau valoare
<dt><b>informatie</b>
<dd> - sub-setul de date care are efectiv semnificație și care este util la momentul curent
</dl>
</body>
</html>
Liste neordonate
O lista neordonata este un bloc de text delimitat de etichetele corespondente <ul>...</ul> (" ul " vine de la
" unordered list " = lista neordonata). Fiecare element al listei este inițiat de eticheta <li> (list item).
Lista va fi intentata fata de restul paginii Web și fiecare element al listei incepe pe un rând noua.
<html><head><title>Liste_ex2</title></head>
<body><h1 align="center">O lista neordonata</h1><hr>
Glosar de termeni de World Wide Web
<ul>Culori uzuale disponibile prin nume
<li>Black</li>
<li>White</li>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
<li>Yellow</li>
<li>Purple</li>
<li>Aqua</li>
</ul>
</body></html>
Tag-urile <ul> și <li> pot avea un atribut type care stabilește caracterul afișat în fața fiecărui element al
listei. Valorile posibile al acestui atribut sunt:
"circle" (cerc)
"disc" (disc plin) (valoarea prestabilita);
"square" (pătrat)
Liste ordonate
O listă ordonată de elemente este un bloc de text delimitat de etichetele corespondente <ol>...</ol> (" ol "
vine de la " ordered list " = lista ordonată). Fiecare element al listei este inițiat de eticheta <li> (list item).
Lista va fi identată față de restul paginii Web și fiecare element al listei incepe pe un rând nou.
<html><head>
<title>listex_4</title>
</head>
<body>
<h1 align="center">O lista ordonata</h1>
<hr>
<ol>Culori uzuale disponibile prin nume
<li>Black</li>
<li>White</li>
<li>Red</li>
</ol>
</body></html>
Tag-urile <ol> și <li> pot avea un atribut type care stabilește tipul de caractere utilizate pentru ordonarea
listei. Valorile posibile sunt:
" A " pentru ordonare de tipul A , B , C , D etc. ( litere mari );
" a " pentru ordonare de tipul a , b , c , d etc. ( litere mici );
" I " pentru ordonare de tipul I , II , III , IV etc. ( cifre romane mari );
" i " pentru ordonare de tipul i , ii , iii , iv etc. ( cifre romane mici );
" 1 " pentru ordonare de tipul 1 , 2 , 3 , 4 etc. ( cifre arabe - opțiune prestabilita );
<html><head><title>Liste_ex6</title></head>
<body>
<h1 align="center">O lista ordonata cu litere mari, incepând de la valoarea C</h1>
<hr>
<ol type="A" start="3">Culori uzuale disponibile prin nume
<li>Red</li>
<li>Green</li>
</ol>
</body></html>
Tag-ul <li> poate avea un atribut value care stabilește valoare pentru elementul respectiv al listei.
Valoarea acestui atribut trebuie să fie un număr intreg pozitiv.
<html><head><title>Liste_ex7</title></head>
<body>
<h1 align="center">O lista ordonata avand itemi setati individual</h1>
<hr>
<ol start="3">Repetati urmatorii pasi ai algoritmului
<li>salvati fișierul</li>;
<li value="6">incarcati fișierul în browser; </li>
<li>schimbati browserul utilizat</li>
<li>incarcati din nou fișierul</li>
</ol>
</body></html>
Listele ordonate pot fi imbricate între ele sau cu liste neordonate, ca în exemplul următor:
<html><head><title>listex_8</title></head>
<body><h1 align="center">O lista ordonata de liste ordonate și neordonate</h1><hr>
<ol>Un sistem informatic include:
<li>Hardware:
<ol type="A">
<li>placa de baza</li>
<li>procesor</li>
<li>memorie</li>
<li>harddisk</li>
</ol>
<li>Software: </li>
<ul>
18
<li>Linux</li>
<li>Windows</li>
</ul>
<li>Software de aplicatie: </li>
<ul type="disc">
<li>VisualC++</li>
<li>Java</li>
<li>CorelDraw</li>
</ul>
</ol>
</body></html>
O lista de meniuri este un bloc delimitat de etichete corespondente <menu>...</menu>. Fiecare element
al listei este initiat de eticheta <li> ( list item ). Cele mai multe browsere afișează lista de meniuri ca pe o
lista neordonata. O lista de directoare este un bloc delimitat de etichete corespondente <dir>...</dir> (de
la " director "). Fiecare element al listei este inițiat de eticheta <li> (list item). Cele mai multe browsere
afișează lista de directoare ca pe o lista neordonata.
(Nu se recomanda utilizarea acestori tipuri de liste).
<html><head>
<title>Liste_ex9</title>
</head>
<body>
<h1>Un bloc de text indentat</h1><hr>
<ul>Un bloc de text indentat. Un bloc de text indentat. Un bloc de text indentat. Un bloc de text
indentat.
Un bloc de text indentat. Un bloc de text indentat. Un bloc de text indentat. Un bloc de text
indentat. Un bloc de text indentat.
</ul></body></html>
Ultimul exemplu este o lista neordonata personalizată care utilizează pe post de elemente imagini și texte.
<html><head><title>Liste_ex11</title></head>
<body><h1>O lista personalizata</h1><hr>
<ul>Lista disciplinelor:<br />
<img src="images/r1.gif">Afaceri electronice<br />
<img src="images/r1.gif">Birotica<br />
<img src="images/r1.gif">Baze de date<br />
<img src="images/r1.gif">Informatica pentru economisti<br />
</body></html>
1.5. Tabele
Tabelele ne permit să cream o rețea dreptunghiulară de domenii, fiecare domeniu având propriile opțiuni
pentru culoarea fondului, culoarea textului, alinierea textului etc.
Pentru a insera un tabel se folosesc etichetele corespondente <table>...</table>. Un tabel este format din
rânduri. Pentru a insera un rând într-un tabel se folosesc etichetele <tr>...</tr> ( de la " table row "= rând
de tabel ).Folosirea etichetei de sfârșit </tr> este opțională.
Un rând este format din mai multe celule ce conțin date.
O celulă de date se introduce cu eticheta <td>..</td>, exemplu:
<html><head><title>Tabel_ex1</title></head>
<body>
<h1 align="center">Un tabel simplu format din 4 linii și 2 coloane</h1>
<hr>
<table>
<tr><td>cell 11</td><td>cell 11</td></tr>
<tr><td>cell 21</td><td>cell 22</td></tr>
<tr><td>cell 31</td><td>cell 32</td></tr>
<tr><td>cell 41</td><td>cell 42</td></tr>
</table>
</body></html>
În mod prestabilit, un tabel nu are chenar. Pentru a adăuga un chenar unui tabel, se utilizează un atribut al
etichetei <tabel>numit border. Acest atribut poate primi ca valoare orice număr intreg ( inclusiv 0 ) și
reprezintă grosimea în pixeli a chenarului tabelului. Dacă atributul border nu este urmat de o valoare
atunci tabelul va avea o grosime prestabilită egală cu 1 pixel, o valoare egală cu 0 a grosimii semnifică
absenta chenarului. Când atributul border are o valoare nenulă chenarul unui tabel are un aspect
tridimensional, exemplu:
<html><head><title>Tabel_ex2</title></head>
<body>
<h1 align="center">Un tabel simplu cu chenar</h1>
<hr>
<table border="4">
20
<tr><td>cell 11</td> <td>cell 11</td></tr>
<tr><td>cell 21</td> <td>cell 22</td></tr>
<tr><td>cell 31</td> <td>cell 32</td></tr>
<tr><td>cell 41</td> <td>cell 42</td></tr>
</table>
</body></html>
Alinierea tabelului
Pentru a alinia un tabel într-o pagină Web se utilizează atributul align al etichetei <table>, cu următoarele
valori posibile:
"left " ( valoarea prestabilita );
"center ";
"right ".
<html><head><title>Tabel_ex3</title></head>
<body>
<h1 align="center">Un tabel aliniat la dreapta</h1>
<hr>
Text înainte de tabel. Text înainte de tabel. Text înainte de tabel. Text înainte de tabel. Text înainte
de tabel. Text înainte de tabel. Text înainte de tabel. Text înainte de tabel. Text înainte de tabel.
Text înainte de tabel. Text înainte de tabel. Text înainte de tabel.
<table border align="right">
<tr><td>cell 11</td><td>cell 11</td></tr>
<tr><td>cell 21</td><td>cell 22</td></tr>
</table>
Text după tabel.Text după tabel.Text după tabel.Text după tabel.Text după tabel.Text după tabel.
Text după tabel.Text după tabel.Text după tabel.Text după tabel.Text după tabel.Text după tabel.
Text după tabel.Text după tabel.Text după tabel.Text după tabel.Text după tabel.Text după tabel.
</body></html>
Distanța dintre tabel și celelalte elemente din pagina Web poate fi stabilită cu ajutorul atributelor hspace și
vspace al etichetei <table>. Valoarea atributului hspace poate fi orice număr pozitiv, inclusiv 0, și
reprezintă distanta pe orizontala dintre tabel și celelalte elemente ale paginii Web.
Valoarea atributului vspace poate fi orice număr pozitiv, inclusiv 0, și reprezintă distanta pe verticala
dintre tabel și celelalte elemente ale paginii Web.
Aceste atribute funcționează numai cu Netscape Communicator.
<font color="valoare">...</font>.
Distanța dintre marginea unei celule și conținutul ei poate fi definita cu ajutorul atributului cellpadding al
etichetei <table>. Valorile acestui atribut pot fi numere întregi pozitive, și reprezintă distanta în pixeli
dintre celule și conținutul ei. Valoarea prestabilita a atributului cellpadding este 1.
<html><head><title>tabelex_6</title></head>
<body><h1 align=center>Un tabel de celule mari</h1>
<hr>
<table border cellpadding="20">
<tr><td>gri 11</td><td>rosu 12</td></tr>
<tr><td>albastru 21</td><td>galben 22</td></tr>
</table>
</body></html>
22
Dimensionarea unui tabel
Dimensiunile unui tabel - lățime și inălțimea - pot fi stabilite exact prin intermediul a doua atribute, width
și height, ale etichetei <table>. Valorile acestor atribute pot fi:
numere întregi pozitive reprezentând lățime respectiv inălțimea în pixeli a tabelului;
numere întregi între 1 și 100, urmate de semnul %, reprezentând fracțiunea din lățime și înălțimea
totală a paginii.
<html><head><title>Tabel_ex7</title></head>
<body>
<h1 align="center">Un tabel de de 200 pixeli X 50%</h1>
<hr>
<table border width="200" height="50%">
<tr><td>cell 11</td><td>cell 12</td></tr>
<tr><td>cell 21</td><td>cell 22</td></tr>
</table>
</body></html>
În exemplul următor se utilizează un truc care permite afișarea într-o pagină Web a unui text poziționat în
centrul paginii.
<html><head><title>Tabel_ex8</title></head>
<body>
<h1 align="center">Un text centrat într-o pagina</h1>
<table width="100%" height="100%">
<tr><td align="center"><h2>Text centrat.</h2></td></tr>
</table>
</body></html>
<html><head><title>Tabel_ex9</title></head>
<body>
<h1 align="center">Un tabel cu titlu</h1>
<table border><caption align="top">Masini
<tr><td>Mercedes</td><td>Citroen</td><td>Jaguar</td></tr>
<tr><td>BMW</td><td>Volvo</td><td>Renault</td></tr>
</table>
</body></html>
23
Cap de tabel
Un tabel poate avea celule cu semnificația de cap de tabel. Aceste celule sunt introduse de eticheta <th> (
de la " tabel header " = cap de tabel ) în loc de <td>. Toate atribute care pot fi atașate etichetei <td> pot fi
de asemenea atașate etichetei <th>. Conținutul celulelor definite cu <th>este scris cu caractere aldine și
centrat.
<html><head><title>Tabel_ex10</title></head>
<body>
<h1 align="center">Un tabel cu titlu și cap de tabel</h1>
<table border><caption align="bottom">Preturile masinii
<tr><th>Pret</th><th>Citroen</th><th>Jaguar</th><th>BMW</th><th>Volvo</th></tr>
<tr><th>în dolari</th><td>5000</td><td>100000</td><td>50000</td><td>80000</td></tr>
<tr><th>în
lei</th><td>2000000</td><td>2000000000</td><td>2000000</td><td>16000000</td></tr>
</table></body></html>
Alinierea pe verticala a conținutului unei celule se face cu ajutorul atributului valign care poate lua
valorile:
"baseline" ( la baza );
"bottom" ( jos );
"middle" ( la mijloc, valoarea prestabilita );
"top" ( sus ).
Aceste atribute pot fi atașate atât etichetei <tr> pentru a defini tuturor elementelor celulelor unui rând, cat
și etichetelor <td> și <th> pentru a stabili alinierea textului într-o singura celulă.
<html><head><title>Tabel_ex11</title></head>
<body>
<h1 align="center">Un tabel avand conținutul celulelor aliniate</h1>
<table border width="50%" height="50%">
<tr align="right"><td>Aici</td><td>alinierea</td><td>este centru</td><td>dreapta</td></tr>
<tr><td align="left">stânga</td><td align="center">centru</td><td
valign="top">sus</td><tdvalign="bottom">jos</td></tr>
<tr align="left"><td>aici</td><td>alinierea</td><td>este centru</td><td>stânga
(implicita)</td></tr></table>
</body></html>
24
Dimensionarea exacta a celulelor unui tabel
Dimensiunea unei celule de tip <td> sau de tip <th> pot fi stabilite exact cu ajutorul a două atribute ale
acestor etichete: widthpentru lățime și height pentru inălțime. Valorile posibile ale acestor atribute sunt:
numere întregi pozitive ( inclusiv 0 ) reprezentand dimensiunea în pixeli a latimii, respectiv a inaltimii
unei celule;
procente din lățime , respectiv înălțimea tabelului.
<html><head><title>Tabel_ex12</title></head>
<body><h1 align=center>Un tabel cu celule de 100x150 de pixeli</h1>
<hr>
<table border>
<tr><td width="100" height="150">cell 11</td><td width="100" height="150">cell 11</td></tr>
<tr><td width="100" height="150">cell 21</td><td width="100" height="150">cell 22</td></tr>
</table>
</body></html>
Sunt posibile extinderi simultane ale unei celule pe orizontala și pe verticala. În acest caz , în etichetele
<td> și <th> vor fi prezente ambele atribute colspan și rowspan.
<html><head><title>Tabel_ex13</title></head>
<body>
<h1 align="center">Un tabel simplu cu chenar</h1>
<hr>
<table border="3">
<tr><td rowspan="3">cell 11<br>cell 21<br>cell 31</td><td>cell 12</td><td colspan="2"
rowspan="3">cell 13, cell 14<br>cell 23, cell 24<br>cell 33, cell 34</td></tr>
<tr><td>cell 22</td></tr>
<tr><td>cell 32</td></tr>
<tr><td>cell 41</td> <td colspan="3">cell 42, cell 43, cell 44</td></tr>
</table>
</body></html>
Dacă un tabel are celule vide, atunci aceste celule vor aparea în tabel fară un chenar de delimitare. În
scopul de a afișa un chenar pentru celule vide se utilizează urmatoarele trucuri:
dupa <td> se pune ;
dupa <td> se pune <br>.
Caracterul ( no break space ) este de fapt caracterul spatiu. Un spațiu introdus prin intermediul
acestui caracter nu va fi ignorat de browser.
<html><head><title>Tabel_ex15</title></head>
<body>
<h1 align="center">Un tabel cu celule vide</h1>
<hr>
<table border>
<tr><td>cell 11<td><td>cell 12</td><td>cell 13</td></tr>
<tr><td> </td> <td></td></tr>
</table>
</body></html>
Grupuri de coloane
Blocul <colgroup>...</colgroup> permite definirea unui grup de coloane. Atributele acceptate de
<colgroup> sunt:
span determina numărul de coloane dintr-un grup;
width determina o lățime unica pentru coloanele din grup;
align determina un tip unic de aliniere pentru coloanele din grup.
Exemplu:
<colgroup span="3" width="100"></colgroup>
într-un bloc <colgroup>, coloanele pot avea configurări diferite dacă se utilizează elementul <col>, care
admite atributele:
span identifica acea coloană din grup pentru care se face configurarea. Dacă lipsește, atunci coloanele
sunt configurate în ordine;
width determina o lățime pentru coloana identificata prin span;
align determina o aliniere pentru coloana identificata prin span.
<html><head><title>Tabel_ex17</title></head>
<body>
<h1 align="center">Grupuri de coloane</h1>
<hr>
<table width="400" cellspacing="10">
26
<colgroup><col width="100" align="right"><col width="100" align="center"><col width="200"
align="right"></colgroup>
<tr><td valign="top">Text în prima coloana. Text în prima coloana. Text în prima coloana. Text
în prima coloana.</td> <td valign="top">Text în coloana doua.Text în coloana doua.Text în
coloana doua.Text în coloana doua.</td><td valign="top">Text în coloana a treia. Text în coloana
a treia. Text în coloana a treia. Text în coloana a treia.</td></tr>
</table>
</body></html>
<html><head><title>Tabel_ex18</title></head>
<body>
<h1 align="center">Atributele frames și rules</h1>
<table width="400" frame="box" rules="rows" cellspacing="10">
<tr><td>cell 11</td><td>cell 12</td><td>cell 13</td></tr>
<tr><td>cell 21</td><td>cell 22</td><td>cell 23</td></tr>
</table>
</body></html>
Subblocurile unui table - în specificatiile HTML 4.0, conținutul unui tabel poate fi împărțit în subblocuri
prin elementele:
<thead><tr><td>...</thead> ( un singur rând );
<tfoot><tr><td>...</tfoot> ( un singur rând );
<tbody><tr><td>...</tbody> ( oricâte rânduri );
într-un tabel există un singur subbloc de tipul <thead> și un singur subbloc de tipul <tfoot>, dar pot
există mai multe subblocuri de tip <tbody>.
27
1.6. Operarea cu imagini, obiecte audio și video
1.6.1. Inserarea imaginilor
Folosirea imaginilor sporește atractivitatea și designul paginii, duce la o mai bună ințelegere a mesajului,
dar trebuie luat în considerație și faptul că excesul de imagini va duce la incărcarea greoaie a site-ului.
Există numeroase formate grafice, dar cele mai răspândite sunt:
GIF – pentru majoritatea imaginilor din web, butoane, panouri publicitare, desene etc., datorită
dimensiunii mici a fișierelor.
JPEG pentru fotografii, când se dorește să se redea cât mai exact culoarea reală a imaginii.
PNG – pentru desene complexe, dar și pentru fotografii, acesta fiind formatul care imbină
caracteristicile celor două.
Imaginile pot fi descărcate de la adrese absolute sau relative. Adresele URL (Uniform Resource Locator)
reprezintă standarde de identificare a resurselor (de exemplu, fișiere) și pot fi adrese URL absolute și
relative.
<html><head></head>
<body>
Imagine
<img src="Poza.jpg" height="150" width="150" border="4"> de la Atlantic City
<body><html>
28
Pentru ca acest exemplu să poată fi executat, trebuie ca fișierul Taj_Mahal.jpg să fie în același folder cu
pagina, deoarece nu s-a indicat nicio adresă.
Atributul alt Există posibilitatea ca imaginile să nu se poată incărca din diferite motive, situație în care se
folosește atributul alt al elementului <img>. Valoarea acestui atribut este un text, care va fi afișat în locul
imaginii.
<html>
<head></head>
<body>
<img src="Poza.jpg" height =150 width = 150 alt="Hotelul ">de la Galati
</body>
</html>
Atributul align
Atributul align indică browser-ului cum va fi aliniată poza față de text. În lipsa unei opțiuni, poza este
plasată acolo unde este scrisă în cod (<img>este element inline, iar textul incepe de la baza
pozei).Valorile atributului sunt:
left – aliniere la stânga și textul „curge” pe lângă imagine în dreapta ei, incepând din partea superioară;
right – aliniere la dreapta și textul „curge” pe lângă imagine în stânga ei, incepând din partea superioară
;
top – textul este plasat în partea superioară a imaginii;
middle – textul are plasat, la mijlocul imaginii, numai primul rând, restul continuând sub imagine;
bottom – textul este plasat în partea de jos a imaginii și continuă sub imagine.
Atributul border
Atunci când se inserează o imagine, browser-ul o va afișa fără chenar. Pentru a adăuga un chenar unei
imagini se folosește atributul border=”nr_pixeli”, unde nr_pixeli reprezintă grosimea chenarului în
pixeli. Valoarea implicită este 0. Dacă în exemplul de mai sus se mai adaugă acest atribut <img
src="Poza.jpg" height ="150" width = "150" border = "4"> browser-ul va afișa: vezi ...
Observații: Dacă se modifică doar o dimensiune, imaginea va fi afișată de browser proporțional. Dacă
se modifică ambele dimensiuni, imaginea va fi afișată de browser deformată.
<html><head></head>
<body>
<img src="Poza.jpg" height="150" width="150" alt="Imagine">de la Atlantic City
<img src="Poza.jpg" width="80" height="200" alt="Imagine">de la Atlantic City
<img src="Poza.jpg" height="350" alt="Imagine">de la Atlantic City
</body></html>
30
Atributele hspace și vspace
Aceste atribute au același efect ca și atributele cu același nume ale elementului <table>, și, anume, asigură
distanța de la imagine la celelalte componente din pagină, pe orizontală (hspace) și pe verticală (vspace),
adică definesc spații albe în jurul imaginilor.
Un exemplu în care sunt folosite aceste atribute este dat mai jos.
<html><head></head>
<body>
<p>text text text text text text text text text text text text text text text text text text text text text text
text text text text text text text text text text text text text text.</p>
<p>Imagine <img src="Poza.jpg" height="150" width="150" alt="Imagine"hspace="50"
vspace="20"> inca text text text text text text text text text text text text text text text text
</body></html>
Atributul clear al elementului BR
Dacă se dorește a se șterge textul din jurul unei imagini se folosește elementul <br clear=”valoare”>,
unde valoare poate fi:
all – se șterge tot textul din jurul imaginii
left – se șterge tot textul din stânga imaginii
right – se șterge tot textul din dreapta imaginii
none – se lasă textul din jurul imaginii
Notă: Deși, în funcție de browser-ul folosit, mai pot fi folosite și alte elemente, cum ar fi <BGSOUND>,
recunoscut de Internet Explorer, și <EMBED>, recunoscut de Internet Explorer și Netscape, consorțiul
W3C (World Wide Web Consortium) recomandă utilizarea elementului <OBJECT>.
Acest element necesită în mod obligatoriu tag-ul de inchidere corespunzător </OBJECT>. Împreună cu
elementul <OBJECT> (în interiorul acestuia) se folosește și elementul asociat <PARAM> care definește
parametrii elementului <OBJECT>.
32
type Determină tipul conținutului
value Specifică valoarea parametrului
valuetype Specifică tipul valoarii parametrului
Folosind codul de mai sus veți obține o pagină web pe fundalul cărei se va auzi o piesă
instrumentală.Elementul <EMBED> este folosit pentru a insera elemente multimedia într-o pagină web în
cazul browsere-lor care nu suportă elementul <OBJECT>. Elementul <OBJECT> poate fi folosit cu
browserele mai noi, care suportă controale ActiveX (Internet Explorer ³ 5), în vreme ce elementul
<EMBED> este recomandat să fie folosit pentru browserele mai vechi. Pentru compatibilitate, se
recomandă folosirea simultană a celor două elemente. În această situație, un browser care recunoaște
elementul <OBJECT> va ignora elementul <EMBED>.
33
Stabilește dacă obiectul multimedia este vizibil pentru vizitatorul paginii web. Poate
hidden
lua valorile true sau false
src Precizează locația (URL-ul) fișierului ce conține sunete
width Specifică lățimea suprafeței în care va fi afișat obiectul
volume Precizează volumul. Poate lua valori între 0 (max.) și -10000 (min.)
Se poate folosi chiar și o combinație între elementele <EMBED> și <BGSOUND>, astfel incât, dacă unul
din elemente nu este suportat de browser, să fie recunoscut celălalt.
Folosirea codului următor:
<html><body>
<embed src="m_v/RM.mid" width ="100" height="40" >
<noembed>
<h2>Muzica în fundal </h2>
<bgsound src="m_v/RM.mid">
</noembed>
</body></html>
Pentru exemplificare, vom crea un fișier test.html ce va cuprinde o parte dintre elementele prezentate
anterior:
<html><head><title>Adaugarea de informatii multimedia unei pagini web</title></head>
<body>
<h2>Inserarea unei imagini</h2>
<object height="200" width="200" type="image/jpeg" data="../images/Poza.jpg">
</object>
<br />
<h2>Inserarea unui sunet (format .wav)</h2>
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
<param name="FileName" valua="Ready.wav">
<embed src="m_v/Ready.wav" width="100" height="40" >
<noembed> Browser-ul dvs. nu suportă elementele object și nici embed</noembed>
</object>
34
<br />
<h2>Inserarea unui film (format .wmv)</h2>
<object width="240" height="160" type="video/x-ms-asf" url="3d.wmv"
data="m_v/news.wmv"classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">
<param name="url" value="m_v/news.wmv">
<param name="filename" value="m_v/news.wmv">
<param name="autostart" value="1">
<param name="uiMode" value="full">
<param name="autosize" value="1">
<param name="playcount" value="1">
<embed type="application/x-mplayer2" src="m_v/news.wmv" width="240" height="160"
autostart="true"showcontrols="true"
pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"></embed>
</object>
<br />
<h2>Inserarea unei pagini web</h2>
<object type="text/html" heght="200" width="400" data="ex40.html">
</object>
<br />
<h2>Inserarea unei animatii Flash (format .swf)</h2>
<object width="400" height="200" classid="clsid:D27CDB6E-AE6D-11cf-96B8-
444553540000"codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#4,0,
0,0">
<param name="movie" value="m_v/flash.swf">
<embed src="m_v/flash.swf" width="400" height="200">
</embed>
</object>
</body></html>
1.7. Referințe
Până acum am invățat să creăm documente HTML în care am introdus text și imagini. În acest capitol
vom arăta cum putem accesa orice resursă Web, Internet și internă cu ajutorul referințelor (legături, link-
uri, hiperlegături).
35
1.7.1. Marcajul <a>
Pentru a crea o legătură se folosește marcajul <a> ancoră, care are sintaxa: <a atribute> conținut </a>.
Conținutul dintre marcajele <a> și </a> poate fi text și/sau imagine, este afișat de browser sub formă de
legătură (colorat și subliniat), și poate accepta comenzi de la mouse (un clic) sau de la tastatură (ENTER).
Când este deasupra unei legături, cursorul grafic ia forma unei mâini, indicându-ne astfel că browser-ul
este pregătit să descarce resursa Internet de la adresa URL indicată. Dacă un document are mai multe
legături ne putem deplasa de la una la alta și cu mouse-ul și cu ajutorul tastei TAB, iar pentru a face o
legătură activă se execută clic cu butonul stâng pe legătură sau se tastează ENTER.
Atributele tag-ului <a> sunt:
href;
target;
title;
name;
Atributul href
Atributul href (referință hipertext) este obligatoriu pentru tag-ul legătură (ca src pentru elementul <img>),
are sintaxa href="adresa URL" și are rolul de a identifica o adresă URL absolută (de pe Internet) sau
relativă (locală). În exemplul de mai jos dăm o referință către un fișier local, flori.jpg, și către pagina
Colegiului de Informatică, de pe WEB:
<html><head> <title>Referinte</title></head>
<body>
<p>Florile mele preferate<a href="images/crini.jpg">Crini</a>
<p>Detalii despre Colegiul de Informatica
<a href="http://edugal.ro">CIC</a>
</body></html>
Atributul target
Când utilizatorul activează o legătură, browser-ul inlocuiește fereastra care conține legătura cu o nouă
fereastră, specificată de adresa URL din href. Atributul target face să se schimbe această operație implicită
și el are sintaxa target="nume", unde numedefinește fereastra în care va fi incărcată noua pagină.
Numele este orice șir de caractere sau valori constante:
_blank pagina va fi incărcată într-o nouă fereastră;
_parent pagina va fi incărcată în fereastra părinte;
_top pagina va fi incărcată în fereastra top a cadrului;
_self pagina va fi incărcată în aceeași fereastră(implicită).
<html><head> <title>Referinte</title></head>
<body>
<p>Florile mele preferate<a href="images/crini.jpg">Crini</a>
<p>Detalii
<a href="http://edugal.ro" target="_blank" >CIC</a>
</body>
</html>
36
Atributul title
Acest atribut are un caracter general și poate fi atașat la majoritatea elementelor HTML. Sintaxa acestui
element este: title="valoare". Când mouse-ul este deasupra conținutului tag-ului <a> conținut </a> se
transformă într-o mână și va afișa valoarea atributului title, într-o sugestie de instrument (într-un cadru).
<html><head> <title>Referinte</title></head><body>
<p>Florile mele preferate<a href="images/crini.jpg">Crini</a>
<p>Detalii
<a href="http://edugal.ro" title="Platforma" >CIC</a>
</body>
</html>
Atributul name
Acest atribut este utilizat pentru a defini o ancoră în interiorul unei pagini. Sintaxa acestui atribut este:
name="valoare".
Același rezultat obținem dacă scriem și numele fișierului index(default) care se incarcă <a
href="http://www.edu.md/index.php"> ME </a>
Dacă se dorește să se viziteze altă pagină a respectivului site, se scrie numele fișierului .php(.html),
respectiv.
37
<body>
Platforma <a href="http://edugal.ro">CIC
<img src= "http://edugal.ro/galerie/content/Exteriorul colegiului/IMG_1631.jpg" width=70
height=70>
</a>
</body></html>
Conform structurei arboriscente date din pagina pag6.html din mapa M5 se pot accesa celelalte pagini,
utilizând următoarele referințe:
1. ../../pag1.html
2. ../../M1/pag2.html
3. ../../M3/M6/pag7.html
4. ...
38
Se pot face referințe și la adrese URL absolute de pe Internet, care nu sunt resurse Web. În adresele URL
absolute se inlocuiește protocolul http cu alte protocoale non Web (ftp, telnet, gopher etc.).
Exemplu:
<html><head></head>
<body>
<ul>
<li><a href="ftp://gatekepper.dec.com" >Vizitati locatia</a></li>
<li><a href="ftp://ftp.arsc.edu"> Educatie</a> </li>
<li><a href="telnet://well.com" > Whole Earth</a></li>
<li><a href="gopher://gopher.loc.gov"> GongresGopher</a></li>
</ul>
</body></html>
Pentru a crea o legătură la o ancoră se folosește tag-ul <a>...</a> cu atributul href, care are ca valoare o
referință de ancoră, precedată de simbolul “#”, astfel:
# valoare_nume
# valoare_id
Fișierul trebuie să fie suficient de mare, astfel оncât secvența care conține o ancoră să nu fie vizibilă în
momentul trimiterii către ea. Ca exemplu să considerăm agenda:
39
<html><head><title>Agenda grupei</title></head>
<body>
<h1 align="center"> Agenda grupei I-942<br />
<p>
<a href="#a-c"> [A-C] </a>
<a href="#d-h"> [D-H] </a>
<a href="#i-l"> [I-L] </a>
</h1>
<br />
<hr size="4" width="100%" align="center" color="#666666">
<br />
<pre>
<h1>
<p id="a-c"> [A-C] </p>
1.Bogdan Constantin
2.Budu Tudor
<p id="d-h"> [D-H] </p>
1.Daria Viorel
2.Ganea Radu
<p id="i-l"> [I-L] </p>
1.Lungu Inga
2. ...
</body></html>
Se poate folosi elementul <adress> de formatare logică, care are rolul de a evidenția o adresă (mesajul se
va scrie la început de linie), așa cum reiese din exemplu de mai jos. Sintaxa elementului <adress> este:
Când se execută clic pe o legătură e-mail, se va deschide o aplicație e-mail care are, în câmpul To, adresa
din legătură și care permite să introducem mesajul. Se poate trece și un subiect, care va fi despărțit de
adresă prin “?”, precum și un text în interiorul mesajului (de forma body=text) și care se va separa de
subiect prin caracterul “&”, ca în exemplul de mai jos:
<html><head></head>
<body>
<adress>
<a href="mailto:cristinaenache15@yahoo.com"> Puteți să-mi scrieti</a>
40
</adress>
</body></html>
Culorile referințelor
O referință poate fi în una din stările:
activă
vizitată
nevizitată
41
- acestea definesc zonele hartii imaginii și forma acestora (prin valorile atributelor),
- numărul de elemente "AREA" reprezinta numărul de suprafete (cu link-uri specifice) în care este
"impartita" imaginea.
În următorul exemplu puteți vedea forma generala a creari unei "harti de imagini" (cu 2 cadre), URL poate
fi orice adresa de site sau pagina a site-ului curent:
În tabelul de mai jos puteți vedea atributele care se folosesc și descrierea acestora:
Instructiune Atribute Descriere
- marcaj de includere a imaginilor
specifica faptul ca este o harta de imagine pe server
ismap (se folosește mai rar; de obicei folosim harti de
<img atribute > imagine la client)
usemap="nume_harta" specifica harta de imagine la client
imaginea de rezolutie scazuta care se incarca prima
lowscr = "url"
(doar pentru Netscape)
43
name - setat la valoarea keywords;
content - care va primi ca valoare lista cuvintelor cheie separate prin ",".
Drepturile de autor
Atributul name poate fi utilizat pentru a furniza informații legate de autorul paginii și despre Copyright
(drepturile de autor). Exemplul următor ilustrază aceste lucruri:
<meta name="author" content="web Cristina">
<meta name="copyright" content="edugal.ro">
Persoana de contact
Pentru a putea furniza informații despre persoana care administrează site-ul, se utilizează atributul http-
equiv. În acest caz valoarea atributului content va conține o adresă e-mail eventual urmată în paranteze
rotunde de un nume complet al persoanei.
Exemplu:
<meta http-equiv="from" content="web@edugal.ro (web Nadejda)">
<meta http-equiv="reply-to" content=="cristinaenache15@yahoo.com">
1.10. Formulare
Un formular este un ansamblu de zone active alcătuit din butoane ,casete de selecție,câmpuri de editare
etc. Formularele va asigura construirea unori pagini Web care permit utilizatorilor să introducă efectiv
informații și să le transmită serverului. Formularele pot varia de la o simplă casetă de text, pentru
introducerea unui șir de caractere pe post de cheie de cautare - element caracteristic tuturor motoarelor de
căutare din Web - până la o structură complexă ,cu multiple secțiuni, care oferă facilități puternice de
transmisie a datelor. O sesiune cu o pagină web ce conține un formular cuprinde următoarele etape:
- Utilizatorul completează formularul și il expediează unui server;
- O aplicație dedicată de pe server analizează formularul completat și (dacă este necesar) stochează datele
într-o bază de date;
- Dacă este necesar serverul expediează un raspuns utilizatorului.
Un formular este definit într-un bloc delimitat de etichetele corespondente <form>şi </form>.
<form action="http://www.yahoo.com/cgi-bin/nume_fis.cgi">
45
Un formular cu un câmp de editare și un buton de expediere
Majoritatea elementelor unui formular sunt definite cu ajutorul etichetei <input>. Pentru a preciza tipul
elementului se folosește atributul type al etichetei <input>. Pentru un câmp de editare, acest atribut
primeste valoarea "text". Alte atribute pentru un element <input> sunt:
name - permite atașarea unui nume fiecărui element al formularului;
value - care permite atribuirea unei valori inițiale unui element al formularului.
Un buton de expediere al unui formular se introduce cu ajutorul etichetei <input>, în care atributul type
este configurat la valoarea "submit".Acest element poate primi un nume prin atributul name. Pe buton
apare scris "Submit Query" sau valoarea atributului value, dacă această valoare a fost stabilită.
<html><head><title>Form_ex1</title></head>
<body>
<h1>Un formular cu un camp de editare și un buton de expediere</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
Numele:<input type="text" name="numele" value="Numele și prenumele"><br />
<input type="submit" value="Expedieaza">
</form>
</body></html>
Pentru elementul <input> de tipul câmp de editare (type = "text") , alte doua atribute pot fi utile:
size - specifică lățimea câmpului de editare ce depășește această lățâme ,atunci se execută automat o
derulare acestui câmp;
maxlength - specifică numărul maxim de caractere pe care le poate primi un câmp de editare,
caracterele tastate peste numărul maxim sunt ignorate.
Observații:
Dacă atributul type lipsește într-un element <input>, atunci câmpul respectiv este considerat în mod
prestabilit ca fiind de tip "text";
Formularele cu un singur câmp (de tip text) nu au nevoie de un buton de expediere, datele sunt
expediate automat dupa completarea și apăsarea tastei ENTER.
Butonul Reset
Dacă un element de tip <input> are atributul type configurat la valoarea "reset", atunci în formular se
introduce un buton pe care scrie "Reset". La apăsarea acestui buton, toate elementele din formular primesc
valorile prestabilite (definită odata cu formularul ), chiar dacă aceste valori au fost modificate de
utilizator. Un buton Reset poate primi un nume cu ajutorul atributului name și o valoare prîntr-un atribut
value. Un asemenea buton afișează textul "Reset" dacă atributul value lipsește, respectiv valoarea acestui
atribut în caz contar.
<html><head><title>Form_ex2</title></head>
<body>
46
<h1>Un formular cu un buton reset</h1><br />
<hr> <br />
<form action="mailto:xxxxx@xxx.com" method="post"> <br />
Introduceti numele:<input type="text" name="nume" value="Numele"><br /> <br />
Introduceti prenumele:<input type="text" name="prenume" value="Prenumele"><br /><br />
<input type="reset" value="Sterge"> <input type="submit" value="Expedieaza"> <br />
</form>
</body></html>
Butoane radio
Butoanele radio permit alegerea, la un moment dat, a unei singure variante din mai multe posibile.
Butoanele radio se introduc prin eticheta <input> cu atributul type având valoarea "radio".
<html><head><title>Form_ex4</title></head>
<body>
<h1>Un formular cu butoane radio</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
<p>
Alegeti sexul:<br>
Barbatesc: <input type="radio" name="sex" value="b"> <br />
Femeiesc: <input type="radio" name="sex" value="f"> <br />
<input type="reset"> <input type="submit">
</p>
</form></body></html>
La expedierea formularului se va transmite una dintre perechile "sex=b" sau "sex=f", în funcție de
alegerea făcută de utilizator.
47
Casete de validare
O casetă de validare (checkbox) permite selectarea sau deselctarea unei opțiuni. Pentru inserarea unei
casete de validare se utilizează eticheta <input> cu atributul type configurat la valoarea "checkbox".
Observații:
Fiecare casetă poate avea un nume definit prin atributul name.
Fiecare casetă poate avea valoarea prestabilită selectat definită prin atributul checked.
<html><head><title>Form_ex5</title></head>
<body>
<h1>Un formular cu casete checkbox</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
Alegeti meniul:<br />
<input type="checkbox" name="pizza" value="o portie"> Pizza<br />
<input type="checkbox" name="nectar" value="un pahar"> Nectar<br />
<input type="checkbox" name="bere" value="o sticla"> Bere<br />
<input type="checkbox" name="cafea" value="o ceasca"> Cafea<br />
<input type="reset"> <input type="submit">
</form></body></html>
Casete de fișiere
Într-o pereche "name = value" a unui formular se poate folosi intregul conținut al unui fișier pe post de
valoare. Pentru aceasta se inserează un element <input> într-un formular, cu atributul type având
valoarea "file"(fișier).
Atributele pentru un element de tip casetă de fișiere:
name - permite atașarea unui nume;
value - primește ca valoare adresa URL a fișierului care va fi expediat o dată cu formularul. Această
valoare poate fi atribuită direct atributului value, sau poate fi selectată prin intermediul unei casete de
tip File Upload sau Choose File care apare la apăsarea butonului Browse... din formular;
enctype - precizează metoda utilizată la criptarea fișierului de expediat.Valoarea acestui atribut este
"multipart/form-data".
<html><head><title>Form_ex6</title></head><body>
<h1>Un formular cu caseta de fișiere</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
Alegeti fișierul:<input type="file" name="fișier" enctype="multipart/form-data"><br />
<input type="reset"> <input type="submit">
</form>
</body></html>
48
Liste de selecție
O listă de selecție permite utilizatorului să aleagă unul sau mai multe elemente dintr-o listă finită. Lista de
selecție este inclusă în formular cu ajutorul etichetelor corespondente <select>și </select>.
O listă de selecție poate avea următoarele atribute:
name - atașează listei un nume (utilizat în perechile "name=value" expediat serverului);
size - care precizează(prîntr-un număr intreg pozitiv, valoarea prestabilită fiind 1) câte elemente din
listă sunt vizibile la un moment dat pe ecran(celelalte devenind vizibile prin acționarea barei de
derulare atașate automat listei).
Elementele unei liste de selecție sunt incluse în lista cu ajutorul etichetei <option>. Două atribute ale
etichetei <option> se dovedesc utile:
value - primește ca valore un text care va fi expediat server-ului în perechea "name=value", dacă
acest atribut lipsește, atunci către server va fi expediat textul ce urmează după <option>;
selected(fara alte valori) - permite selectarea prestabilită a unui element al listei.
<html><head><title>Form_ex7</title></head><body>
<h1>Un formular cu o lista de selectie</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
Universitatea absolvita:<br><br>
<select name="universitate" size="3">
<option value="UDJ">Universitatea Dunarea de Jos
<option value="UD" selected>Universitatea Danubius
<option value="UB">Universitatea Bucuresti
</select>
<br><br>
<input type="reset"> <input type="submit">
</form>
</body></html>
<html><head><title>Form_ex8</title></head><body>
<h1>Un formular cu o lista de selectie ce accepta selectii multiple</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
Limbi straine cunoscute:<br><br>
<select name="limbi straine" size="5" multiple >
<option value="e"> Engleza
<option value="f" selected>Franceza
<option value="s">Spaniola
<option value="i">Italiana
</select><br><br>
49
<input type="reset"> <input type="submit">
</form>
</body></html>
<html><head><title>Form_ex9</title></head><body>
<h1>Un formular cu un camp de editare multilinie</h1>
<hr>
<form action="mailto:xxxxx@xxx.com" method="post">
<textarea name="text multilinie" cols="30" rows="5" wrap="off">
Prima linie din textul initial.
A doua linie din textul initial.
</textarea><br /><br />
<input type="reset"> <input type="submit">
</form></body></html>
Un formular complex
În exemplul următor este prezentat un formular conținând elemente prezentate anterior. Câmpurile
formularului sunt incluse în celulele unui tabel pentru a obține o aliniere dorită.
<html><head><title>Form_ex10</title></head><body>
<h1>Un formular complex</h1>
<hr>
<center>
<table bgcolor="orange"> <form action="mailto:xxxxx@xxx.com" method="post">
<caption align="top">MENIU</caption>
<tr align="left"><th>Numele: <td><input type="text" name="numele">
<tr align="left"><th>Preumele: <td><input type="text" name="prenumele">
<tr align="left"><th>Telefonul: <td><input type="text" name="telefonul">
<tr align="left"><th>Alegeti pizza:
<td>
50
<input type="checkbox" name="ciuperci">cu ciuperci
<input type="checkbox" name="mexicana">mexicana
<input type="checkbox" name="europeana">europeana
<tr align="left"><th>Alegeti plata:
<td bgcolor="lightblue">
<ul>
<li><input type="radio" name="plata">cash
<li><input type="radio" name="plata">card
</ul>
<tr align="left"><th>Comentarii:
<td>
<textarea name="comentarii" cols="30" rows="5" wrap="off">
Inserati aici aprecierile dumneavoastra legate de calitatea serviciilor noastre
</textarea>
<tr align="left" valign="top">
<td>
<input type="reset" value="Sterge"><td><input type="submit" value="Expedieaza">
</form>
</table></body></html>
Butoane
Într-un formular pot fi afișate butoane. Când utilizatorul apasă un buton, se lansează în execuție o funcție
de tratare a acestui eveniment. Limbajul HTML nu permite scrierea unor astfel de funcții (acest lucru este
posibil dacă se utilizează limbajele Javascript sau Java).
Pentru a insera un buton într-un formular, se utilizează eticheta <input> având atributul type configurat la
valoarea "button". Alte două atribute ale elementului <input> sunt:
name - permite atașarea unui nume butonului;
value -primește ca valoare textul ce va fi afișat pe buton.
Un buton pentru lansarea în execuție a unei acțiuni poate fi introdus într-un formular prin elementul
<input> având atributul typeconfigurat la valoarea "button", așa cum s-a văzut mai înainte. Există o a
doua modalitate de a introduce într-o pagina Web un buton, și anume prin intermediul blocului
<button>...</button>. Un astfel de buton poate fi inserat într-un formular, în acest caz declanșând
acțiuni legate de acel formular, sau poate fi introdus oriunde în pagină pentru inițierea unor acțiuni
independente de formulare. Atributele posibile ale elementului "button" sunt:
name - acordă elementului un nume;
value - precizează textul care va fi afișat pe buton;
type - precizează acțiunea ce se va executa la apăsarea butonului dacă acesta este inclus într-un
formular. Valorile posibile pentru acest atribut sunt: "button/submit/reset".
În corpul blocului <button>...</button> se poate afla un text sau un marcaj de inserare a unei
imagini.
Observații:
Elementul <form> poate avea un atribut target, care primește ca valoare numele unei ferestre a
browserului în care va fi incărcat răspunsul trimis serverului WWW la expedierea unui formular.
51
Toate elementele cuprinse într-un formular pot avea un atribut disabled care permite dezactivarea
respectivului element.
Toate elementele de tip text cuprinse într-un formular pot avea un atribut readonly care interzice
modificarea conținutului acestor elemente.
În acest caz, am specificat că doresc o fereastră de cadru intern care are 40% din inălțimea și 50% din
lățimea paginii curente.
Atributele acceptate de eticheta <iframe> sunt în parte preluate de la etichetele <frame>şi <frameset>,
cum ar fi: src, frameborder, marginheight, marginwidth, scrolling, name, noresize; sau de la eticheta
<img>: vspace, hspace, align, width, height.
<html><head><title>Fer_ex1</title></head>
<body>
<a href="p1.html" target="icad">Pagina1</a><br />
<a href="p2.html" target="icad">Pagina2</a><br />
<a href="p3.html" target="icad">Pagina3</a><br />
<a href="p.html" target="icad">Home</a><br>
<center>
<iframe width="60%" height="50%" frameborder="1" name="icad" src="p.html"> Dacă vedeti acest text
inseamna ca browserul dumnevoastra nu suporta cadre interne.
<a href="p0.html">Pagina fara cadre interne</a>
</iframe>
</center>
</body></html>
<base target="nume_ferastra/frame_de_baza">
52
prin plasarea în eticheta <a> a atributului target, care precizează numele ferestrei (cadrului) în care se
va incărca pagina nouă referită de legătură, conform sintaxei: <a href="legatura"
target="nume_fereastra/frame">...</a>
2. CSS
2.1. Introducere în CSS
În cursul de HTML, am vorbit despre cum să structurăm și să dăm sens informațiilor conținutului
paginilor web. În acest curs ne vom ocupa de stilizare, de modul și locul în care sunt redate elementele
HTML în pagină. CSS (Cascading Style Sheets) sau foi de stil în cascadă, reprezintă un mecanism simplu
de a adăuga elemente de stil (tipuri de caractere, culori, aliniere, spațiere etc.) unui document web. Tag-
urile HTML au avut inițial rolul de defini conținutul unui document, de a face distincția între titlul unui
paragraf (definit prin tag-urile <Hn>), conținutul paragrafului (definit prin tag-ul <p>), tabele (definite
prin tag-ul <table>) etc. Aspectul și modul de afișare al unui site cădeau în sarcina browserului, fără a fi
folosite niciun fel de tag-uri de formatare. Dar cum cele două principale browsere – Internet Explorer și
Netscape Navigator – au continuat să adauge noi tag-uri și atribute limbajului HTML original, a devenit
tot mai dificil să creezi un site în care conținutul documentului HTML să fie clar separat de modul său de
prezentare. Pentru a rezolva această problemă, consorțiul W3C, responsabil de standardizarea
specificațiilor HTML, a creat stilurile și le-a adăugat specificațiilor HTML 4.0.
unde:
selector - această componentă, identifică elementul HTML, căreia i se aplică stilul dat;
acoladele - delimitează, care proprietăți și cu ce valori se aplică elementului HTML;
proprietăți - sunt elementele de aspect care vrem să le modificăm;
valori ale proprietăților - sunt noile valori pe care vrem să le atribuim proprietății respective.
Fiecare proprietate suportă, anumite tipuri de valori, de exemplu culoarea poate fi dată în trei moduri:
hexazecimal - #ffaa99;
prin denumire - red;
cu valori rgb - rgb(123,255,17).
53
Observație: Declarațiile CSS se încheie întotdeauna cu ";".
Exemplu:
p {color:red; text-align:center;}
Pentru a face declarațiile CSS mai ușor de citit, puteți scrie fiecare declarație pe câte o linie ca în exemplul
următor:
p{
color:red;
text-align:center;
}
Documentul HTML care conține declarațiile CSS de mai sus va arăta astfel:
<html><head>
<style type="text/css">
p{
color:red;
text-align:center;
}
</style>
</head>
<body>
<p>Buna ziua!</p>
<p>Acest paragraf este stilizat cu CSS.</p>
</body>
</html>
Exemplu:
/*Acesta este un comentariu și nu se va afișa */
p{
text-align:center;
/*Acesta este un alt comentariu*/
color:blue;
font-family:arial; }
54
2.4. Foi de stil
O foaie de stil poate fi inserată în trei moduri:
Foaie externă de stil;
Foaie internă de stil;
Stil inline.
Fiecare pagină trebuie să se lege la foaia de stil folosind tagul <link> în interiorul secțiunii head:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
...
</body>
</html>
unde:
atributul rel specifică relația dintre documentul apelant și documentul legat. Are numeroase valori
posibile, dar în cazul de față valoarea să trebuie să fie stylesheet;
atributul type specifică tipul documentului legat, adică definește ce fel de resursă este (extensia
fișierului nu este suficientă pentru a determina această) - în cazul nostru trebuie să aibă valoarea
text/css;
55
atributul href cum am văzut și la elementul link, specifică adresa (URL) de unde se introduce fișierul
foaie de stil.
Sau
<html><head>
<style type="text/css" media="all">
@import url(style.css);
</style>
</head>
<body>
...
</body></html>
O foaie externă de stil poate fi scrisă în Notepad++, nu trebuie să conțină taguri html și trebuie salvată cu
extensia .css. Un exemplu de foaie de stil externă, memorată în fișierul style.css, este prezentată mai jos:
hr {color:sienna;}
p {margin-left:20px;}
body {background-image:url("roses.gif");}
Observație: Nu lăsați spații între valoarea proprietății și unitatea de măsură! Dacă scrieți "margin-
left:20 px" (în loc de "margin-left:20px") va merge în browser-ul IE, dar nu în Firefox sau Opera.
56
2.4.4. Foi multiple de stiluri
Dacă anumite proprietăți ale unui selector au fost setate în foi de stiluri diferite, valorile vor fi moștenite
din cea mai specifică foaie de stil. Spre exemplu,într-o foaie de stil externă, selectorul h3 are setate
următoarele trei proprietăți:
h3 {
color:red;
text-align:left;
font-size:8pt;
}
Dacă pagina care conține această foaie internă de stil se leagă și la foaia de stil externă, atunci proprietățile
pentru h3 vor fi:
color:red;
text-align:right;
font-size:20pt;
Culoarea este moștenită din foaia externă, iar alinierea și dimensiunea fontului sunt înlocuite cu valorile
din foaia internă de stil.
Stilurile pot fi specificate:
într-un element HTML;
în secțiunea head a unei pagini HTML;
-într-un fișier extern CSS.
Observație: Într-un document HTML pot fi referite mai multe foi de stiluri externe.
Ordinea de aplicare
Ce stil va fi utilizat când într-un document HTML sunt specificate mai multe foi de stil pentru un element
HTML? La modul general, putem spune că stilurile se vor mixa într-o foaie de stil virtuală după
următoarele reguli, unde prioritatea crește odată cu numărul de ordine:
setările implicite ale browserului;
foi de stiluri externe (din fișiere CSS);
foi de stiluri interne (din secțiunea head);
stiluri inline (din tagul elementului HTML).
57
Deci, stilul inline al unui element suprascrie stilul definit în <head>, într-un fișier extern sau în browser.
Observație: Dacă legătura către o foaie externă de stil este amplasată în secțiunea <head> după foaia
internă de stiluri, atunci fișierul extern va suprascrie stilul intern!
h5 {
color:blue;
}
58
2.5.2. Selectorul id
Selectorul id este utilizat pentru a specifica stilul unui singur element . Selectorul id folosește atributul id
al unui element HTML, și este definit cu "#".
<html><head>
<style type="text/css">
.center {
text-align:center;
}
</style>
</head>
<body>
<h1 class="center">Acest titlu este aliniat la centru cu CSS</h1>
<p class="center">Acest paragraf este de asemenea aliniat la centru cu CSS.</p>
</body></html>
Puteți de asemenea specifica ce elemente din clasă vor fi afectate de stil. În exemplul următor, numai
elementele p din clasa center vor fi aliniate la centru:
<html><head>
<style type="text/css">
p.center {
text-align:center;
59
}
</style>
</head>
<body>
<h1 class="center">Acest titlu nu este afectat de stilul CSS</h1>
<p class="center">Acest paragraf este aliniat la centru cu CSS.</p>
</body></html>
Observație: Nu începeți un nume de clasă cu un număr deoarece numai Internet Explorer acceptă acest
lucru.
Proprietatea background-color
Proprietatea specifică culoarea de fundal a unui element. Culoarea de fundal pentru întreaga pagină este
definită în selectorul body ca în exemplul următor:
<html><head>
<style type="text/css">
body {
background-color:#b0c4de;
}
</style>
</head>
<body>
<h1>Pagina stilizata cu CSS!</h1>
<p>Buna ziua! Acesta este un exemplu de utilizare a stilurilor.</p>
</body></html>
Proprietatea background-image
Această proprietate definește imaginea folosită ca fundal pentru un element. Implicit, imaginea se repetă
pe suprafața întregului element. Imaginea de fundal a paginii poate fi setată ca în exemplul următor:
<html><head>
<style type="text/css">
body {background-image:url("paper.gif");}
</style>
</head>
<body>
<h1>Buna ziua!</h1>
</body></html>
Observație: Construcția url(...) precizează locul în care este stocată imaginea. Dacă provine de pe net,
precizați adresa completă ca în exemplul următor:
url(“http://www.image.com/image.gif”).
Imaginea de fundal trebuie aleasă astfel încât textul să poată fi citit cu ușurință.
Proprietatea background-repeat
Prin definiție, proprietatea background-image repetă o imagine și vertical și orizontal. Unele imagini
trebuie repetate numai vertical sau numai orizontal. Dacă doriți ca imaginea să se repete numai pe
orizontală, folosiți valoarea repeat-x, iar pentru verticală folosiți repeat-y.
Exemplu:
<html><head>
<style type="text/css">
body {
background-image:url("gradient2.png");
61
background-repeat:repeat-x;
}
</style>
</head>
<body>
<h1>Buna ziua!</h1>
</body></html>
<html><head>
<style type="text/css">
body {
background-image:url("tree.jpg");
background-repeat:no-repeat;
}
</style>
</head>
<body>
<h1>Buna ziua!</h1>
<p>Exemplu de imagine de fundal.</p>
<p>Imaginea este afisata o singura data,dar incomodeaza cititorul!</p>
</body></html>
62
Proprietăți multiple pentru background
Pentru a scurta codul, puteți preciza toate proprietățile într-o proprietate numită scurt background ca în
exemplul următor:
<html><head>
<style type="text/css">
body {
background:#ffff00 url("tree.jpg") no-repeat top right;
margin-right:200px;
}
</style>
</head>
<body>
<h1>Buna ziua!</h1>
<p>Imaginea este afisata o singura data și pozitionata în afara textului.</p>
<p>În acest exemplu,marginea dreapta a textului a fost setata la 200 pixeli. În acest fel, textul nu
se va suprapune cu imaginea.</p>
</body></html>
Nu contează dacă valoarea unei proprietăți lipsește, atât timp cât valorile prezente sunt scrise în această
ordine.
Exemplu: Stabilirea unei imagini fixe de fundal. Imaginea nu se va deplasa odată cu restul paginii.
<html><head>
<style type="text/css">
body {
background-image:url("smiley.gif");
background-repeat:no-repeat;
background-attachment:fixed;
}
</style>
</head>
<body>
<p>Imaginea de fundal este fixa. Incercati să micsorati fereastra și să derulati până la sfarsitul
paginii.</p>
</body></html>
Observație: Conform cerințelor W3C, dacă ați definit proprietatea color în body, trebuie să definiți și
proprietatea background-color.
Alinierea textului
Proprietatea text-align este utilizată pentru a seta alinierea orizontală a textului. Textul poate fi aliniat la
dreapta, la stânga, centrat sau justified.
Exemplu:
<html><head>
<style type="text/css">
h1 {text-align:center;}
p.date {text-align:right;}
p.main {text-align:justify;}
</style>
</head>
<body>
<h1>Exemplu de aliniere a textului cu CSS</h1>
<p class="date">Ianuarie, 2010</p>
<p class="main">” Dacă asi sti ca efortul pentru scrierea unui roman ma poate costa viata, mi-asi
lua toate masurile de siguranta pentru a inlatura o eventualitate cum ar fi boala din care sa mi se
traga moartea.Dar unica masura hotaratoare, aceea de a renunta la scris, nu asi lua-o.”
<br />Marin Preda</p><p><b>Observație:</b>
Modificați dimensiunea ferestrei browser-ului pentru a vedea cum arată alinierea justified.</p>
</body></html>
Decorarea textului
Proprietatea text-decoration este utilizată pentru a stabili decorarea unui text. Cel mai des este utilizată
pentru a înlătura sublinierea link-urilor din motive de aspect, ca în exemplul următor:
<html><head><style type="text/css">
a {text-decoration:none;}
</style>
</head>
<body>
65
<p>Link catre: <a href="http://www.yahoo.com">Yahoo</a></p>
</body></html>
Transformarea textului
Proprietatea text-transform este utilizată pentru a specifica literele mici și literele mari dintr-un text.
Poate fi utilizată pentru a transforma tot textul în minuscule sau majuscule, sau pentru a transforma în
majusculă prima literă din fiecare cuvânt.
<html><head>
<style type="text/css">
p.uppercase {text-transform:uppercase;}
p.lowercase {text-transform:lowercase;}
p.capitalize {text-transform:capitalize;}
</style>
</head>
<body>
<p class="uppercase">Acesta este un text scris cu litere mari.</p>
<p class="lowercase">Acesta este un text scris cu litere mici.</p>
<p class="capitalize">Acesta este un text în care fiecare cuvant incepe cu litera mare.</p>
</body></html>
Indentarea textului
Proprietatea text-indentation este utilizată pentru a specifica indentarea primei linii dintr-un text.
<html>
<head>
<style type="text/css">
p {text-indent:50px;}
</style>
66
</head>
<body>
<p>”Dacă asi sti ca efortul pentru scrierea unui roman ma poate costa viata, mi-asi lua toate masurile
de siguranta pentru a inlatura o eventualitate cum ar fi boala din care să mi se traga moartea. Dar
unica masura hotaratoare, aceea de a renunta la scris, nu asi lua-o.”</p>
<p>Marin Preda</p>
</body>
</html>
Exemplul 5: Ilustrează cum se forțează scrierea textului dintr-un element pe singură linie.
<html><head>
<style type="text/css">
p{
white-space:nowrap;
}
</style>
</head>
<body>
<p>
Acesta este un text. Acesta este un text. Acesta este un text.
Acesta este un text. Acesta este un text. Acesta este un text.
Acesta este un text. Acesta este un text. Acesta este un text.
Acesta este un text. Acesta este un text. Acesta este un text.
</p>
</body></html>
Exemplul 6: Ilustrează cum se stabilește alinierea verticală a unei imagini din text.
<html><head>
<style type="text/css">
img.top {vertical-align:text-top;}
68
img.super {vertical-align:super;}
</style>
</head>
<body>
<p>O <img src="../Poza.jpg" alt="Hotelul" width="100" /> imagine în interiorul unui paragraf, cu
aliniere verticala implicita.</p>
<p>O <img class="top" src="../Poza.jpg" alt="Hotelul" width="100" /> imagine în interiorul unui
paragraf,cu aliniere la marginea de sus a textului.</p>
<p>O <img class="super" src="../Poza.jpg" alt="Hotelul" width="100" /> imagine în interiorul unui
paragraf, cu aliniere la marginea de jos a textului.</p>
</body></html>
69
none
underline
text-decoration Adaugă decorațiuni unui text overline
line-through
blink
length
text-indent Indentează prima linie de text dintr-un element
%
none
text-shadow Adaugă umbră unui text color
length
none
capitalize
text-transform Controlează literele unui element
uppercase
lowercase
baseline
sub
super
top
text-top
vertical-align Setează alinierea verticală a unui element
middle
bottom
text-bottom
length
%
normal
white-space Setează spațiul alb din interiorul unui element pre
nowrap
normal
word-spacing Mărește sau micșorează spațiul dintre cuvinte
length
2.8. Fonturi
Proprietățile CSS pentru fonturi definesc familia de fonturi, îngroșarea, mărimea și stilul unui text.
Familiile de fonturi în CSS
În CSS, numele unei familii de fonturi se poate defini în două moduri:
Familie generică – un grup de familii de fonturi care au un aspect similar (ca "Serif" sau
"Monospace");
Familie de fonturi – o familie specifică de fonturi (ca "Times New Roman" sau "Arial").
Familia
Familia specifică Descriere
generică
Serif Times New Roman Fonturile de tip serif au linii mici la sfârșitul unora
70
Georgia dintre caractere.
Arial "Sans" înseamnă fără – aceste fonturi nu au linii la
Sans-serif
Verdana sfârșitul caracterelor
Courier New
Monospace Toate caracterele monospace au aceeași lățime
Lucida Console
Familia de fonturi a unui text este stabilită cu proprietatea font-family. Această proprietate ar trebui să
precizeze cel puțin două familii de fonturi. Dacă browserul nu recunoaște prima familie, o va încerca pe a
doua. Începeți cu fontul pe care îl doriți și terminați cu o familie generică.
Observație: Dacă numele familiei de fonturi este format din mai multe cuvinte, numele trebuie scris
între ghilimele, ca: "Times New Roman". Dacă folosiți mai multe nume de fonturi, ele trebuie
separate în listă prin virgulă.
<html><head>
<style type="text/css">
p.serif {font-family:"Times New Roman", Times, Serif;}
p.sansserif {font-family:Arial, Helvetica, Sans-serif;}
</style>
</head>
<body>
<h1>Familiile de fonturi în CSS</h1>
<p class="serif">Acest paragraf folosește fontul Times New Roman.</p>
<p class="sansserif">Acest paragraf folosește fontul Arial.</p>
</body></html>
Proprietatea font-style
Această proprietate este utilizată frecvent pentru a seta textul italic. Proprietatea are trei valori:
normal – textul este afișat normal;
italic – textul este afișat italic;
oblique – foarte similar cu italic, dar mai puțin recunoscut de browsere.
<html><head>
<style type="text/css">
p.normal {font-style:normal;}
71
p.italic {font-style:italic;}
p.oblique {font-style:oblique;}
</style>
</head>
<body>
<p class="normal">Acest paragraf este scris cu fontul normal.</p>
<p class="italic">Acest paragraf este scris cu fontul italic.</p>
<p class="oblique">Acest paragraf este scris cu fontul oblic.</p>
</body></html>
Proprietatea font-size
Această proprietate stabilește dimensiunea unui text. Valoarea proprietății poate fi absolută sau relativă.
Dimensiunea absolută:
Fixează textul la dimensiunea specificată;
Nu permite user-ului să modifice dimensiunea textului în toate browserele (dezavantaj);
Este utilă când este cunoscută dimensiunea fizică a ferestrei de afișare.
Dimensiunea relativă:
Stabilește dimensiunea textului în funcție de elementele înconjurătoare;
Permite utilizatorului să modifice în browser dimensiunea textului.
Observație: Dacă nu specificați dimensiunea fontului, mărimea implicită pentru textul normal (cum
ar fi paragraful) este de 16px (16px=1em).
Observație: Textul poate fi redimensionat în orice browser folosind instrumentul zoom. Aceasta se
aplică însă întregii pagini, nu numai textului dorit.
72
Stabilirea dimensiunii textului în em
Pentru a evita problemele de redimensionare din Internet Explorer, mulți proiectanți web utilizează em în
loc de pixeli. Unitatea de măsură em este recomandată și de W3C. 1em este egal cu dimensiunea fontului
normal, adică 16px. Pentru a trece de la pixeli la em folosim formula: pixels/16=em
<html><head>
<style type="text/css">
h1 {font-size:2.5em;} /* 40px/16=2.5em */
h2 {font-size:1.875em;} /* 30px/16=1.875em */
p {font-size:0.875em;} /* 14px/16=0.875em */
</style>
</head>
<body>
<h1>Acesta este un titlu 1</h1>
<h2>Acesta este un titlu 2</h2>
Deși textul arată la fel ca în exemplul precedent, el poate fi redimensionat în orice browser. Totuși, în
Internet Explorer, când un text este redimensionat, devine mai mic sau mai mare decât ar trebui.
Combinație de procente și em
Soluția care funcționează în toate browserele, este să stabiliți în procente dimensiunea implicită pentru
elementul body, ca în exemplul următor:
<html><head>
<style type="text/css">
body {font-size:100%;}
h1 {font-size:2.5em;}
h2 {font-size:1.875em;}
p {font-size:0.875em;}
</style>
</head>
<body>
<h1>Acesta este un titlu 1</h1>
<h2>Acesta este un titlu 2</h2>
<p>Acesta este un paragraf.</p>
<p>Dacă specificati dimensiunea fontului în procente și em,textul va fi afisat la fel în toate
browserele și va putea fi redimensionat!</p>
</body></html>
Exemplul 3: Ilustrează cum puteți folosi proprietatea scurtă pentru a stabili toate caracteristicile fontului
într-o singură declarație.
<html><head>
<style type="text/css">
p.ex1{
font:15px arial,sans-serif;
}
p.ex2{
font:italic bold 12px/30px Georgia, serif;
}
</style>
</head>
<body>
<p class="ex1">Acesta este un paragraf. Acesta este un paragraf. Acesta este un paragraf. Acesta este
un paragraf. Acesta este un paragraf. Acesta este un paragraf. Acesta este un paragraf. Acesta este un
paragraf. </p>
<p class="ex2"> Acesta este un paragraf. Acesta este un paragraf. Acesta este un paragraf. Acesta
este un paragraf. Acesta este un paragraf. Acesta este un paragraf. Acesta este un paragraf. Acesta
este un paragraf. </p>
74
</body></html>
75
600
700
800
900
Unitățile de măsură absolute sunt recomandate a fi utilizate pentru imprimarea unui document, unde
unitățile de măsură fizice, cum ar fi mm, cm, etc., sunt recunoscute, în timp ce utilizarea lor pentru
monitorul calculatorului nu sunt recomandate, deoarece aceste unități de măsură absolute sunt
independente de browser și rezoluția monitorului unui calculator.
76
% Procent
Unitățile de măsură relative sunt recomandate a fi folosite pentru aspectul unei pagini web, deoarece sunt
dependente de browser și rezoluția monitorului. Unitatea em este utilizată pentru dimensiunea fontului,
pixelii sunt utilizați pentru rezoluția monitorului și procentajul se aplică în funcție de proprietatea
utilizată.
Notă: În documentele W3C, pixelii sunt considerați o unitate de măsură absolută. Sunt specialiști în
web design și CSS care consideră că pixelii sunt unități de măsură relativi, deoarece utilizarea să
depinde de mai mulți factori, dintre care cel mai important este rezoluția monitorului unui calculator.
Vom considera că pixelii sunt unități de măsură relativi, datorită faptului că utilizarea să este relativă,
în mod deosebit, în ceea ce privește rezoluția monitorului.
2.9. Linkuri
Formatarea linkurilor
Linkurile pot fi stilizate cu ajutorul proprietăților CSS , cum ar fi color, font-family, background-color.
Special pentru linkuri este faptul că ele trebuie formatate diferit, în funcție de starea în care sunt. Cele
patru stări ale unui link sunt:
a:link - link normal, nevizitat;
a:visited - link care a fost vizitat de user;
a:hover - link peste care se mișcă mouse-ul;
a:active - link apăsat (activ).
<html><head>
<style type="text/css">
a:link {color:#FF0000} /* link nevizitat */
a:visited {color:#00FF00} /* link vizitat */
a:hover {color:#FF00FF} /* link peste care se misca mouse-ul */
a:active {color:#0000FF} /* link selectat */
</style>
</head>
<body>
<p><b><a href="http://www.google.com" target="_blank">Acesta este un link</a></b></p>
<p><b>Nota:</b> a:hover TREBUIE scrisa în definitia CSS dupa a:link și a:visited pentru a fi
efectiva.</p>
<p><b>Nota:</b> a:active TREBUIE scrisa în definitia CSS dupa a:hover pentru a fi efectiva.</p>
</body></html>
Când stabiliți stilul linkurilor, există anumite reguli privind ordinea declarațiilor:
- a:hover trebuie scrisă după a:link și a:visited
- a:active trebuie scrisă după a:hover
Decorarea textului
77
Proprietatea text-decoration este folosită cel mai des pentru a înlătura sublinierea link-urilor.
<html><head>
<style type="text/css">
a:link {text-decoration:none} /* link nevizitat */
a:visited {text-decoration:none} /* link vizitat */
a:hover {text-decoration:underline} /* mouse peste link */
a:active {text-decoration:underline} /* link selectat */
</style>
</head>
<body>
<p><b><a href="http://www.google.com" target="_blank">Acesta este un link</a></b></p>
</body></html>
Culoarea fundalului
Proprietatea background-color este utilizată pentru a specifica culoarea de fundal a linkurilor.
<html><head>
<style type="text/css">
a:link {background-color:#B2FF99;} /* link nevizitat */
a:visited {background-color:#FFFF85;} /* link vizitat */
a:hover {background-color:#FF704D;} /* mouse peste link */
a:active {background-color:#FF704D;} /* link selectat */
</style>
</head>
<body>
<p><b><a href="http://www.google.com" target="_blank">Acesta este un link</a></b></p>
</body></html>
Exemple:
Exemplul 2: Ilustrează cum se combină mai multe proprietăți CSS pentru a afișa link-urile ca niște căsuțe
colorate.
<html><head>
<style type="text/css">
a:link,a:visited {display:block;
font-weight:bold;
color:#FFFFFF;
background-color:#98bf21;
width:120px;
text-align:center;
padding:4px;
text-decoration:none;
}
a:hover,a:active {
background-color:#7A991A;
}
</style>
</head>
<body>
<a href="http://www.google.com" target="_blank">Acesta este un link</a>
</body></html>
2.10. Liste
Proprietățile CSS pentru liste vă permit să:
setați diferiți marcatori pentru itemii dintr-o listă ordonată sau neordonată
să setați o imagine ca marcator pentru itemii unei liste neordonate
79
Tipul marcatorilor itemilor dintr-o listă neordonată se stabilește cu proprietatea list-style-type.
Exemplu:
<html><head>
<style type="text/css">
ul.a {list-style-type:circle;}
ul.b {list-style-type:square;}
ol.c {list-style-type:upper-roman;}
ol.d {list-style-type:lower-alpha;}
</style>
</head>
<body>
<p>Exemplu de lista neordonata:</p>
<ul class="a">
<li>Cafea</li>
<li>Ceai</li>
</ul>
<ul class="b">
<li>Cafea</li>
<li>Ceai</li>
</ul>
<p>Exemplu de listă ordonată:</p>
<ol class="c">
<li>Cafea</li>
<li>Ceai</li>
</ol>
<ol class="d">
<li>Cafea</li>
<li>Ceai</li>
</ol>
</body></html>
Observație: Nici-o versiune de Internet Explorer (inclusiv IE8) nu acceptă valorile "decimal-leading-
zero", "lower-greek", "lower-latin", "upper-latin", "armenian", sau "georgian".
Proprietatea scurtă
Puteți specifica toate proprietățile unei liste într-o singură declarație folosind list-style ca în următorul
exemplu:
<html>
<head>
<style type="text/css">
ul
{
list-style:square url("sqpurple.gif");
}
81
</style>
</head>
<body>
<ul>
<li>Cafea</li>
<li>Ceai</li>
<li>Lapte</li>
</ul>
</body></html>
84
upper-latin
lower-roman
upper-roman
2.11. Tabele
Aspectul unui tabel HTML poate fi îmbunătățit folosind CSS.
Chenarele tabelului
Pentru a specifica chenarele unui tabel în CSS, se folosește proprietatea border. Exemplul următor
setează un chenar negru pentru tabel și pentru elementele th și td:
<html><head>
<style type="text/css">
table,th,td{
border:1px solid black;
}
</style>
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th></tr>
<tr><td>Scutelnic</td><td>Speranța</td></tr>
<tr><td>Cojocaru</td><td>Cristian</td></tr>
</table>
</body></html>
Observați că tabelul din exemplul anterior are chenare duble. Acest lucru se întâmplă deoarece
elementele table, th, și td au chenare separate. Pentru a afișa un singur chenar pentru tabel, folosiți
proprietatea border-collapse.
Proprietatea border-collapse
Această proprietate specifică dacă chenarele tabelului sunt sau nu reunite întrunul singur.
<html><head>
<style type="text/css">
table {
border-collapse:collapse;
}
table, td, th{
border:1px solid black;
}
</style>
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th></tr>
85
<tr><td>Scutelnic</td><td>Speranța</td></tr>
<tr><td>Cojocaru</td><td>Cristian</td></tr>
</table>
</body></html>
<html><head>
<style type="text/css">
table,td,th {
border:1px solid black;
}
table {
width:100%;
}
th {
height:50px;
}
</style>
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th><th>Economii</th></tr>
<tr><td>Scutelnic</td><td>Speranța</td><td>5000 MDL</td></tr>
<tr><td>Cojocaru</td><td>Cristian</td><td>3500 MDL</td></tr>
<tr><td>Barbu</td><td>Lucia</td><td>3000 MDL</td></tr>
<tr><td>David</td><td>Andrei</td><td>4500 MDL</td></tr>
</table>
</body></html>
<html><head>
<style type="text/css">
table,td,th {
border:1px solid black;
}
td {
text-align:right;
}
</style>
86
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th><th>Economii</th></tr>
<tr><td>Scutelnic</td><td>Speranța</td><td>5000 MDL</td></tr>
<tr><td>Cojocaru</td><td>Cristian</td><td>3500 MDL</td></tr>
<tr><td>Barbu</td><td>Lucia</td><td>3000 MDL</td></tr>
<tr><td>David</td><td>Andrei</td><td>4500 MDL</td></tr>
</table>
</body></html>
Proprietatea vertical-align stabilește alinierea verticală a textului, și poate avea valorile top, bottom sau
middle:
<html><head>
<style type="text/css">
table, td, th {
border:1px solid black;
}
td {
height:50px;
vertical-align:bottom;
}
</style>
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th><th>Economii</th></tr>
<tr><td>Scutelnic</td><td>Speranța</td><td>5000 MDL</td></tr>
<tr><td>Cojocaru</td><td>Cristian</td><td>3500 MDL</td></tr>
<tr><td>Barbu</td><td>Lucia</td><td>3000 MDL</td></tr>
<tr><td>David</td><td>Andrei</td><td>4500 MDL</td></tr>
</table></body></html>
<html><head>
<style type="text/css">
table, td, th {
border:1px solid black;
}
td {
padding:15px;
}
</style>
87
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th><th>Economii</th></tr>
<tr><td>Ion</td><td>Ion</td><td>5000 Ron</td></tr>
<tr><td>Ion</td><td>Ana</td><td>3500 Ron</td></tr>
<tr><td>Petru</td><td>Ion</td><td>3000 Ron</td></tr>
</table>
</body></html>
Culoarea tabelelor
În exemplul următor este precizată culoarea chenarului tabelului și culorile pentru textul și fundalul
elementelor th:
<html><head>
<style type="text/css">
table, td, th {
border:1px solid green;
}
th {
background-color:green;
color:white;
}
</style>
</head>
<body>
<table>
<tr><th>Nume</th><th>Prenume</th><th>Economii</th></tr>
<tr><td>Scutelnic</td><td>Speranța</td><td>5000 MDL</td></tr>
<tr><td>Cojocaru</td><td>Cristian</td><td>3500 MDL</td></tr>
<tr><td>Barbu</td><td>Lucia</td><td>3000 MDL</td></tr>
<tr><td>David</td><td>Andrei</td><td>4500 MDL</td></tr>
</table></body></html>
Exemple:
Exemplul 1: Ilustrează cum puteți crea un tabel cu un aspect deosebit.
<html>
<head>
<style type="text/css">
#customers {
font-family:"Trebuchet MS", Arial, Helvetica, sansserif;
width:100%;
border-collapse:collapse;
}
#customers td, #customers th {
font-size:1em;
border:1px solid #98bf21;
88
padding:3px 7px 2px 7px;
}
#customers th {
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#A7C942;
color:#ffffff;
}
#customers tr.alt td{
color:#000000;
background-color:#EAF2D3;
}
</style>
</head>
<body>
<table id="customers">
<tr><th>Compania</th><th>Contact</th><th>Tara</th></tr>
<tr><td>Alfreds Futterkiste</td><td>Maria Anders</td><td>Germania</td></tr>
<tr class="alt"><td>Berglunds snabbköp</td><td>Christina Berglund</td><td>Suedia</td></tr>
<tr><td>Centro comercial Moctezuma</td><td>Francisco Chang</td><td>Mexic</td></tr>
<tr class="alt"><td>Ernst Handel</td><td>Roland Mendel</td><td>Austria</td></tr>
<tr><td>Island Trading</td><td>Helen Bennett</td><td>UK</td></tr>
<tr class="alt"><td>Königlich Essen</td><td>Philip Cramer</td><td>Germania</td></tr>
<tr><td>Laughing Bacchus Winecellars</td><td>Yoshi Tannamuri</td><td>Canada</td></tr>
<tr class="alt"><td>Magazzini Alimentari Riuniti</td><td>Giovanni
Rovelli</td><td>Italia</td></tr>
<tr><td>North/South</td><td>Simon Crowther</td><td>UK</td></tr>
<tr class="alt"><td>Paris spécialités</td><td>Marie Bertrand</td><td>Franta</td></tr>
</table></body></html>
Explicarea componentelor:
Margin - o zonă goală în jurul unui chenar. Marginea nu are culoare de fundal și este complet
transparentă.
Border - un chenar care înconjoară conținutul.
Padding - o zonă goală în jurul conținutului. Această zonă este afectată de culoarea de fundal a
casetei.
Content - conținutul casetei, unde apar textul și imaginile.
Pentru a stabili corect înălțimea și lățimea unui element în orice browser, trebuie să înțelegeți cum
lucrează modelul box.
Important: Când specificați în CSS proprietățile width și height ale unui element, stabiliți de fapt
dimensiunile numai pentru zona de conținut din desenul de mai sus. Pentru a cunoaște adevăratele
dimensiuni ale unui element, trebuie să adăugați padding-ul, chenarul și marginea. Lățimea totală a
elementului din exemplul următor este 300px:
width:250px;
padding:10px;
border:5px solid gray;
margin:10px;
90
Să socotim: 250px (lățimea conținutului) + 20px (padding-ul stâng și drept) + 10px (chenarul din
stânga și din dreapta) + 20px (marginea din stânga și din dreapta) = 300px
Să presupunem că există doar 250px spațiu pentru un element și să construim un element cu lățimea
totală de 250px:
<html><head>
<style type="text/css">
div.ex{
width:220px;
padding:10px;
border:5px solid gray;
margin:0px;
}
</style>
</head>
<body>
<img src="..250px.gif" width="250" height="10" /><br /><br />
<div class="ex">Linia de deasupra are 250px lungime.<br />
Lungimea totală a acestui element este tot 250px.
</div>
<p><b>Important:</b> Acest exemplu nu va fi afisat corect în IE!<br /></p>
</body></html>
Lățimea totală a unui element trebuie calculată astfel: Lățimea totală a elementului = lățime +
padding-ul stâng + padding-ul drept + chenarul stâng + chenarul drept + marginea stângă + marginea
dreaptă
Înălțimea totală a unui element trebuie calculată astfel:
Înălțimea totală a elementului = înălțime + padding-ul de sus + padding-ul de jos + chenarul de sus+
chenarul de jos + marginea de sus + marginea de jos
2.12.2. Chenare
Proprietatea CSS border definește chenarul din jurul unui element. Puteți specifica stilul și culoarea unui
element al chenarului.
Stilul chenarului
Proprietatea border-style specifică ce fel de bordură va fi afișată.
Observație: Nici-una din celelalte proprietăți ale chenarului nu va avea efect, dacă proprietatea
border-style nu este setată. Acest exemplu ilustrează ce valori poate avea proprietatea border-style și
cum arată fiecare chenar:
<html>
<head>
<style type="text/css">
p.none {border-style:none}
p.dotted {border-style:dotted}
p.dashed {border-style:dashed}
p.solid {border-style:solid}
p.double {border-style:double}
p.groove {border-style:groove}
p.ridge {border-style:ridge}
p.inset {border-style:inset}
p.outset {border-style:outset}
p.hidden {border-style:hidden}
</style>
</head>
<body>
<p class="none">Fara chenar.</p>
<p class="dotted">Chenar punctat.</p>
<p class="dashed">Chenar tip linie intrerupta.</p>
92
<p class="solid">Chenar plin.</p>
<p class="double">Chenar dublu.</p>
<p class="groove">Chenar tip groove.</p>
<p class="ridge">Chenar tip ridge.</p>
<p class="inset">Chenar tip inset.</p>
<p class="outset">Chenar tip outset.</p>
<p class="hidden">Chenar ascuns.</p>
</body>
</html>
Grosimea chenarului
Grosimea chenarului se stabilește cu proprietatea border-width. Grosimea se stabilește în pixeli sau se
folosește una din valorile predefinite: thin, medium, sau thick.
Observație: Proprietatea border-width nu funcționează dacă este utilizată singură; mai întâi trebuie
stabilită proprietatea border-style.
Exemplu:
<html><head>
<style type="text/css">
p.one{
border-style:solid;
border-width:5px;
}
p.two{
border-style:solid;
border-width:medium;
}
p.three{
border-style:solid;
border-width:1px;
}
</style>
</head>
<body>
<p class="one">Un text oarecare.</p>
<p class="two">Un text oarecare.</p>
<p class="three">Un text oarecare.</p>
</body></html>
Culoarea chenarului
Pentru a stabili culoarea chenarului se utilizează proprietatea border-color. Culoarea poate fi precizată
prin:
nume - numele culorii, ca "red"
RGB - valoare RGB, ca "rgb(255,0,0)"
Hex - valoare hexazecimală, ca "#ff0000"
93
Puteți stabili culoarea chenarului și cu valoarea "transparent".
Observație: Proprietatea border-color nu are nici-un efect dacă nu a fost setată mai întâi proprietatea
border-style.
Exemplu:
<html><head>
<style type="text/css">
p.one{
border-style:solid;
border-color:red;
}
p.two{
border-style:solid;
border-color:#98bf21;
}
</style>
</head>
<body>
<p class="one">Un chenar rosu plin.</p>
<p class="two">Un chenar verde plin.</p>
</body></html>
Proprietatea scurtă
Pentru a scurta codul, este posibil să specificăm toate proprietățile chenarului într-o singură proprietate.
Pentru chenare, varianta scurtă este border:
<html><head>
<style type="text/css">
p{
border:5px solid red;
}
</style>
</head>
<body>
<p>Acesta este un paragraf oarecare.</p>
</body></html>
Nu contează ce valori lipsesc (oricum border-style trebuie să apară), atât timp cât valorile prezente sunt
specificate în această ordine.
95
Exemple:
Exemplul 1: Ilustrează utilizarea variantei scurte pentru a seta toate proprietățile chenarului cu o singură
declarație.
<html><head>
<style type="text/css">
p{
border-style:solid;
border-top:thick double #ff0000;
}
</style>
</head>
<body>
<p>Acesta este un paragraf oarecare.</p>
</body></html>
98
none
hidden
dotted
dashed
solid
border-style Stabilește stilul pentru întregul chenar
double
groove
ridge
inset
outset
border-top-width
Stabilește toate proprietățile laturii de sus cu o
border-top border-top-style
singură declarație.
border-top-color
border-top-color Stabilește culoarea laturii de sus border-color
border-top-style Stabilește stilul laturii de sus border-style
border-top-width Stabilește grosimea laturii de sus border-width
thin
medium
border-width Stabilește grosimea pentru întreg chenarul
thick
length
Exemple:
Exemplul 1: Ilustrează cum se trasează o linie exterioară (verde, groasă, punctată) în jurul unui element,
în afara chenarului.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<style type="text/css">
p{
border:1px solid red;
outline:green dotted thick;
}
</style>
</head>
<body>
<p><b>Obs:</b> Internet Explorer 8 accepta proprietatea outline dacă este specificat !DOCTYPE în
codul html.</p>
</body></html>
99
Exemplul 2: Ilustrează cum se stabilește stilul unei linii exterioare.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
p {border:1px solid red}
p.dotted {outline-style:dotted}
p.dashed {outline-style:dashed}
p.solid {outline-style:solid}
p.double {outline-style:double}
p.groove {outline-style:groove}
p.ridge {outline-style:ridge}
p.inset {outline-style:inset}
p.outset {outline-style:outset}
</style>
</head>
<body>
<p class="dotted">O linie exterioară punctata.</p>
<p class="dashed">O linie exterioara intrerupta.</p>
<p class="solid">O linie exterioara plina.</p>
<p class="double">O linie exterioara dubla.</p>
<p class="groove">O linie exterioara groove</p>
<p class="ridge">O linie exterioara ridge</p>
<p class="inset">O linie exterioara inset</p>
<p class="outset">O linie exterioara outset</p>
<b>Obs:</b> Internet Explorer 8 accepta proprietatea outline dacă este specificat !DOCTYPE.
</body></html>
101
2.12.4. Margini
Proprietatea CSS margin definește spațiul din jurul unui element (în afara chenarului). Marginea nu are
culoare de fundal și este complet transparentă. Cele patru margini ale elementului pot fi modificate în mod
independent, folosind proprietăți separate. O proprietate scurtă poate fi, de asemenea, folosită pentru a
schimba toate cele patru margini simultan.
Valori posibile:
Valoare Descriere
auto Marginile sunt stabilite de către browser. Rezultatul depinde de browser.
length Definește o margine fixă (în pixeli, puncte, em, etc.)
% Definește o margine în procente față de elementul conținut
Laturile marginii
În CSS, este posibil să definim margini diferite pe cele patru laturi:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
p{
background-color:yellow;
}
p.margin
{
margin-top:100px;
margin-bottom:100px;
margin-right:50px;
margin-left:50px;
}
</style>
</head>
<body>
<p>Acesta este un paragraf cu margini nedefinite.</p>
<p class="margin">Acesta este un paragraf cu margini definite.</p>
</body></html>
Proprietatea prescurtată
Pentru a scurta codul, pot fi specificate cele patru margini într-o singură declarație, utilizând proprietatea
scurtă margin:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
102
<html><head>
<style type="text/css">
p{
background-color:yellow;
}
p.margin
{
margin:100px 50px;
}
</style>
</head>
<body>
<p>Acest paragraf nu are marginile definite.</p>
<p class="margin">Acest paragraf are marginile definite.</p>
</body></html>
Exemple:
Exemplul 1: Ilustrează cum se stabilește marginea de sus a unui text utilizând o valoare în cm.
<html><head>
<style type="text/css">
p.ex1 {margin-top:2cm}
</style>
</head>
<body>
<p>Un paragraf cu margini nedefinite.</p>
<p class="ex1">Un paragraf cu marginea de sus de 2cm.</p>
<p>Un paragraf cu margini nedefinite.</p>
</body></html>
Exemplul 2:Ilustrează cum se stabilește marginea de jos a unui text utilizând o valoare procentuală.
103
<html><head>
<style type="text/css">
p.bottommargin {margin-bottom:25%}
</style>
</head>
<body>
<p>Acest paragraf are margini nedefinite.</p>
<p class="bottommargin">Acest paragraf are marginea de jos definita.</p>
<p>Acest paragraf are margini nedefinite.</p>
</body></html>
2.12.5. Padding
Proprietatea CSS padding definește spațiul dintre chenar și conținut. Acest spațiu este afectat de culoarea
de fundal a elementului. Spațiul drept, stâng, de sus și de jos (relativ la conținut) poate fi modificat în mod
independent folosind proprietăți diferite. Există și varianta scurtă a proprietății pentru a modifica cele
patru spații simultan.
Valori posibile:
Valoare Descriere
length Definește un spațiu fix (în pixel, puncte, em, etc.)
% Definește un spațiu în valoare procentuală relativ la conținut
104
Modificarea individuală a celor patru spații
În CSS, puteți specifica spații diferite pe cele patru laturi ale elementului, ca în exemplul următor:
<html><head>
<style type="text/css">
p{
border: 1px solid #ccc;
background-color:yellow;
}
p.padding{
border: 1px solid #ccc;
padding-top:25px;
padding-bottom:25px;
padding-right:50px;
padding-left:50px;
}
</style>
</head>
<body><p>Acesta este un paragraf cu spatiul nedefinit.</p>
<p class="padding">Acest paragraf are cele patru spatii definite cu proprietatea padding.</p>
</body></html>
Proprietatea scurtă
Pentru a scurta codul, puteți specifica toate cele patru spații într-o singură proprietate numită simplu
padding, ca în exemplul următor :
<html><head>
<style type="text/css">
p{
border: 1px solid #ccc;
background-color:yellow;
}
p.padding{
border: 1px solid #ccc;
padding:25px 50px;
}
</style>
</head>
<body>
<p>Acesta este un paragraf cu spatiul nedefinit.</p>
<p class="padding">Acest paragraf are cele patru spatii definite cu proprietatea padding.</p>
</body></html>
Exemple:
Exemplul 1: Ilustrează utilizarea proprietății scurte pentru a seta spațiile unui element.
<html><head>
<style type="text/css">
p.ex1{
border:1px solid #ccc;
padding:2cm;
}
p.ex2{
border: 1px solid #ccc;
padding:0.5cm 3cm;
}
</style>
</head>
<body>
<p class="ex1">Acest text are cele patru spatii egale. Spatiul pe fiecare latura a textului este de
2cm.</p>
<p class="ex2">Acest text are spatiile de sus și de jos de cate 0.5cm și spatiile din dreapta și din
stânga de cate 3cm.</p>
</body></html>
Gruparea selectorilor
În foile de stil se regăsesc deseori elemente care au același stil. Exemplu:
h1{
color:green;
}
h2{
color:green;
}
p{
color:green;
}
Pentru a micșora codul, puteți grupa selectorii într-o listă în care selectorii sunt separați prin virgulă. În
exemplul următor, selectorii de mai sus au fost grupați:
<html><head>
<style type="text/css">
h1,h2,p{
color:green;
}
</style>
</head>
<body>
<h1>Un titlu!</h1>
<h2>Un titlu mai mic!</h2>
<p>Un paragraf oarecare.</p>
</body></html>
Imbricarea selectorilor
Este posibil să aplicați un stil unui selector aflat în interiorul unui alt selector. În exemplul următor, este
precizat un stil pentru toate elementele p, și un alt stil pentru elementele p aflate în clasa "marked":
<html><head>
<style type="text/css">
p{
color:blue;
text-align:center;
}
.marked{
background-color:blue;
}
.marked p{
color:white;
}
109
</style>
</head>
<body>
<p>Acest paragraf are culoarea albastra și este aliniat la centru.</p>
<div class="marked">
<p>Acest paragraf din clasa marked trebuie să aiba culoarea alba.</p>
</div>
<p>Paragrafele declarate în clasa "marked" păstrează stilul de aliniere, dar textul are o culoare
diferita.</p>
</body></html>
Exemple:
Exemplul 1: Ilustrează cum se pot stabili dimensiunile unui element.
<html>
<head>
<style type="text/css">
img.normal {height:auto;}
img.big {height:150px;}
p.ex{
height:100px;
width:100px;
}
</style>
</head>
<body>
<img class="normal" src="logo.gif" width="95" height="69" /><br />
<img class="big" src="logo.gif" width="95" height="69" />
Exemplul 2: Ilustrează cum se setează înălțimea unui element folosind o valoare procentuală.
<html><head>
<style type="text/css">
img.normal {height:auto;}
img.big {height:50%;}
img.small {height:10%;}
</style>
</head>
110
<body>
<img class="normal" src="logo.gif" width="95" height="69" /><br />
<img class="big" src="logo.gif" width="95" height="69" /><br />
<img class="small" src="logo.gif" width="95" height="69" />
</body></html>
Exemplul 3: Ilustrează cum se setează lățimea unui element folosind o valoare în pixeli.
<html><head>
<style type="text/css">
img{
width: 200px;
}
</style>
</head>
<body>
<img src="logo.gif" width="95" height="84" />
</body></html>
Exemplul 5: Ilustrează cum se setează lățimea maximă a unui element folosind o valoare procentuală.
Textul va ocupa 50% din lățimea ferestrei browserului, chiar dacă redimensionați fereastra.
<html><head>
<style type="text/css">
p{
max-width: 50%;
background-color:cyan;
}
111
</style>
</head>
<body>
<p>
Acesta este un text. Acesta este un text. Acesta este un text.
Acesta este un text. Acesta este un text. Acesta este un text.
Acesta este un text. Acesta este un text. Acesta este un text.
</p>
</body>
</html>
Exemplul 7: Ilustrează cum se setează lățimea minimă a unui element folosind o valoare în pixeli.
<html><head>
<style type="text/css">
p.ex{
min-width:50px;
background-color:cyan;
}
</style>
</head>
<body>
<p class="ex">
Lățimea minima a acestui paragraf este setata la 50px.
</p>
<p>
Un alt paragraf. Un alt paragraf. Un alt paragraf. Un alt paragraf.
Un alt paragraf. Un alt paragraf. Un alt paragraf. Un alt paragraf.
</p>
</body></html>
112
Toate proprietățile CSS pentru dimensiuni:
Proprietate Descriere Valori
auto
height Stabilește înălțimea unui element length
%
none
max-height Stabilește înălțimea maximă a unui element length
%
none
max-width Stabilește lățimea maximă a unui element length
%
length
min-height Stabilește înălțimea minimă a unui element
%
length
min-width Stabilește lățimea minimă a uni element
%
auto
width Stabilește lățimea unui element length
%
Proprietatea display:none ascunde elementul astfel încât acesta nu va mai ocupa spațiu în pagină.
<html><head>
<style type="text/css">
h1.hidden {display:none;}
</style>
113
</head>
<body>
<h1> Acesta este un titlu vizibil </h1>
<h1 class="hidden"> Acesta este un titlu ascuns </h1>
<p> Observati ca titlul ascuns nu ocupa spatiu în pagina.</p>
</body></html>
Observație: Schimbând modul de afișare a unui element, nu schimbăm și tipul acestuia. De exemplu,
un element inline cu proprietatea display:block nu poate avea un element bloc în interiorul lui.
Exemple:
Exemplul 1: Ilustrează cum se afișează un element bloc ca element inline.
<html><head>
<style type="text/css">
p {display:inline;}
</style>
</head>
<body>
<p>Deoarece proprietatea display a elementului p a fost setata la inline</p>
<p>intre aceste doua paragrafe nu mai există intreruperile de linie.</p>
</body></html>
Poziționarea statică
Este modul implicit de poziționare a elementelor HTML. Un element poziționat static respectă
întotdeauna fluxul normal al paginii web. Elementele poziționate static nu sunt afectate de proprietățile
top, bottom, left, și right.
Poziționarea fixă
Un element cu poziționare fixă este poziționat relativ la fereastra browserului și nu se va deplasa chiar
dacă fereastra este derulată.
Exemplu:
<html>
<head>
<style type="text/css">
p.pos_fixed{
color:red;
116
position:fixed;
top:30px;
right:5px;
}
</style>
</head>
<body>
<p class="pos_fixed">Un text cu pozitia fixa</p>
<p><b>Note:</b>Internet Explorer accepta pozitionarea fixa numai dacă există declaratia
!DOCTYPE.</p>
<p>Un text normal</p><p>Un text normal</p><p>Un text normal</p><p>Un text
normal</p><p>Un text normal</p>
<p>Un text normal</p><p>Un text normal</p><p>Un text normal</p><p>Un text
normal</p><p>Un text normal</p>
<p>Un text normal</p><p>Un text normal</p><p>Un text normal</p><p>Un text
normal</p><p>Un text normal</p>
</body></html>
Elementele cu poziția fixă sunt înlăturate din fluxul normal al documentului. Documentul și alte elemente
se comportă ca și cum elementele cu poziția fixă nu ar exista. Elementele cu poziția fixă se pot suprapune
peste alte elemente.
Poziționarea relativă
Un element cu poziționare relativă este poziționat relativ la poziția lui normală în document.
Exemplu:
<html><head>
<style type="text/css">
h2.pos_left{
position:relative;
left:-30px;
}
h2.pos_right{
position:relative;
left:30px;
}
</style>
</head>
<body>
<h2>Acest titlu are pozitionarea statica (implicita)</h2>
<h2 class="pos_left">Acest titlu este deplasat la stânga cu 30px fata de pozitia lui normala</h2>
<h2 class="pos_right">Acest titlu este deplasat la dreapta cu 30px fata de pozitia lui normala</h2>
</body></html>
Conținutul unui element poziționat relativ poate fi mutat și suprapus peste alte elemente, dar spațiul
rezervat elementului este păstrat în document.
117
Exemplu:
<html><head>
<style type="text/css">
h2.pos_top{
position:relative;
top:-40px;
}
</style>
</head>
<body>
<h2>Acest titlu are pozitia implicita</h2>
<h2 class="pos_top">Acest titlu este mutat în sus cu 40px fata de pozitia lui normala</h2>
</body></html>
Elementele poziționate relativ sunt folosite frecvent ca blocuri container pentru elementele cu poziționare
absolută.
Poziționarea absolută
Pozitionarea absolută este o poziționare destul de des folosită. O poziționare absolută înseamnă
poziționarea elementului relativ la elementul parinte la care deja s-a definit o poziționare. Dacă
elementul părinte nu a fost poziționat, adică are o poziționare statică, atunci elementul părinte este
considerat tagul <html>, adică pagina în sine.
Atentie! – ca să funcționeze corect poziționarea absolută, elementul părinte trebuie să aibă proprietatea
de poziționare definită, și nu are voie să fie poziționată static.
Exemplu:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<div style="position:relative; margin-bottom:80px;">
<p style="position:absolute;left:60px; background-color:#000000;color:#FFFFFF;">
Acest paragraf a fost pozitionat cu pozitionare absoluta la 60 de pixeli de la partea stânga a
elementului parinte care este un div pozitionat relativ.
</p>
</div>
</body>
</html>
118
Un element cu poziționarea absolută poate fi plasat oriunde în pagină. Aceste elemente sunt îndepărtate
din fluxul normal și documentul se comportă ca și cum nu ar exista. Elementele cu poziționare absolută se
pot suprapune peste alte elemente.
Suprapunerea elementelor
Când elementele sunt poziționate în afara fluxului normal al documentului, ele pot acoperi alte elemente.
Proprietatea z-index specifică ordinea elementelor suprapuse: care element va fi plasat în fața sau în
spatele celorlalte elemente. Ordinea în listă poate fi pozitivă sau negativă.
<html><head>
<style type="text/css">
img{
position:absolute;
left:0px;
top:0px;
z-index:-1;
}
</style>
</head>
<body>
<h1>Acesta este un titlu pozitionat static</h1>
<img src="logo.gif" width="100" height="140" />
<p>Deoarece imaginea are proprietatea z-index egala cu -1, va fi afisata în spatele textului.</p>
</body></html>
Un element cu indexul mai mare va fi plasat întotdeauna în fața elementului cu indexul mai mic.
Exemple
Exemplul 1: Ilustrează cum se stabilește forma unui element. Imaginea din exemplul următorul este
prinsă în forma dorită (cu proprietatea clip) și afișată.
<html><head>
<style type="text/css">
img {
position:absolute;
clip:rect(0px,80px,200px,0px);
}
</style>
</head>
<body>
<img src="roses.gif" width="100" height="140" />
<hr/>
</body></html>
Exemplul 2: Ilustrează cum se folosește proprietatea overflow pentru a crea o bară de derulare atunci când
conținutul elementului este prea mare pentru zona specificată.
<html><head>
119
<style type="text/css">
div.scroll{
background-color:#00FFFF;
width:100px;
height:100px;
overflow:scroll;
}
div.hidden{
background-color:#00FF00;
width:100px;
height:100px;
overflow:hidden;
}
</style>
</head>
<body>
<p>
Folositi proprietatea overflow atunci când conținutul elementului depaseste marimea zonei rezervate.
</p>
<p><b>overflow:scroll</b></p>
<div class="scroll">
Folositi proprietatea overflow pentru a controla mai bine aspectul documentului.Valoarea implicita
este visible.
</div>
<p><b>overflow:hidden</b></p>
<div class="hidden">
Folositi proprietatea overflow pentru a controla mai bine aspectul documentului.Valoarea implicita
este visible.
</div>
</body></html>
Exemplul 3: Ilustrează cum poate fi setat browserul astfel încât să gestioneze în mod automat depășirea
spațiului rezevat de către conținutul unui element.
<html><head>
<style type="text/css">
div{
background-color:#00FFFF;
width:150px;
height:120px;
overflow:auto;
}
</style>
</head>
<body>
<p>
Proprietatea overflow are valoarea auto și detectează dacă conținutul elementului depaseste zona
120
rezervată și este necesara bara de derulare.
</p>
<div>
Puteti folosi proprietatea overflow pentru a controla mai bine aspectul documentului. Valorile
posibile sunt: visible, hidden, scroll, inherit. Valoarea implicita este visible.
</div>
</body></html>
122
imagine este deplasată spre dreapta, textul care urmează se va aranja în jurul imaginii ca în exemplul
următor:
<html><head>
<style type="text/css">
img{
float:right;
}
</style>
</head>
<body>
<p>În paragraful urmator este o imagine cu proprietatea style setata la <b>float:right</b>. Ca
urmare, imaginea se va deplasa în paragraf spre dreapta.</p>
<p>
<img src="logo.gif" width="95" height="69" />
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
</p>
</body></html>
Observație: Micșorați fereastra browserului pentru a observa aranjarea textului în jurul imaginii.
123
2.17.2. Proprietatea clear
Elementele de după un element deplasabil se vor organiza în jurul lui. Pentru a împiedica acest lucru,
folosiți proprietatea clear. Această proprietate specifică care laturi nu sunt permise pentru deplasare. În
exemplul următor a fost adăugată o linie de text în galeria de imagini, folosind proprietatea clear:
<html><head>
<style type="text/css">
.thumbnail{
float:left;
width:110px;
height:90px;
margin:5px;
}
.text_line{
clear:both;
margin-bottom:2px;
}
</style>
</head>
<body>
<h3>Galerie de imagini</h3>
<p>Micsorati fereastra browserului pentru a vedea ce se intampla cu imaginile când nu mai au spatiu
suficient.</p>
<img class="thumbnail" src="roses.gif" width="107" height="90">
<img class="thumbnail" src=" roses.gif" width="107" height="80">
<img class="thumbnail" src=" roses.gif " width="116" height="90">
<img class="thumbnail" src=" roses.gif " width="120" height="90">
<h3 class="text_line">A doua linie</h3>
<img class="thumbnail" src="roses.gif" width="107" height="90">
<img class="thumbnail" src=" roses.gif" width="107" height="80">
<img class="thumbnail" src=" roses.gif " width="116" height="90">
<img class="thumbnail" src=" roses.gif " width="120" height="90">
</body></html>
Exemple:
Exemplul 1: Ilustrează cum se deplasează o imagine la dreapta unui paragraf. Imaginea are bordură și
margini.
<html><head>
<style type="text/css">
img{
float:right;
border:1px dotted black;
margin:0px 0px 15px 20px;
}
</style>
</head>
124
<body>
<p>
Imaginea din paragraful urmator se va deplasa spre dreapta.Imaginea are un chenar negru
punctat.Imaginea are și margini pentru a tine textul la distanta fata de imagine:0px deasupra și în
partea dreapta a imaginii, 15px sub imagine și 20px în partea stânga a imaginii.
</p>
<p>
<img src="logo.gif" width="95" height="84" />
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
</p>
</body></html>
Exemplul 2: Ilustrează utilizarea unei imagini cu un titlu care se deplasează spre dreapta.
<html><head>
<style type="text/css">
div{
float:right;
width:120px;
margin:0 0 15px 20px;
padding:15px;
border:1px solid black;
text-align:center;
}
</style>
</head>
<body>
<div>
<img src="logo.gif" width="95" height="84" /><br />
CSS este distractiv!
</div>
<p>
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
</p>
<p>
În acest exemplu, elementul div are 120 pixeli lățime și conține imaginea.Elementul div se va deplasa
spre dreapta. Au fost adaugate margini pentru a indeparta textul de element.Elementul are chenar și
padding pentru a incadra imaginea și titlul.
</p>
</body></html>
125
Exemplul 3: În acest exemplu, prima literă din paragraf este stilizată și deplasată spre stânga.
<html><head>
<style type="text/css">
span{
float:left;
width:0.7em;
font-size:400%;
font-family:algerian,courier;
line-height:80%;
}
</style>
</head>
<body>
<p>
<span>A</span>cesta este un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
Un text. Un text. Un text. Un text. Un text. Un text.
</p>
<p>
În paragraful de mai sus, prima litera este inclusa într-un element span. Elementul are lățimea de 0.7
din marimea fontului curent.Dimensiunea fontului pentru elementul span este de 400% și înălțimea
liniei este de 80%. Fontul literei din span este "Algerian".
</p>
</body></html>
Exemplul 4: Ilustrează cum se folosește float cu o listă de link-uri pentru a crea un meniu orizontal.
<html><head>
<base target="_blank"/>
<style type="text/css">
ul{
float:left;
width:100%;
padding:0;
margin:0;
list-style-type:none;
}
a{
float:left;
width:6em;
text-decoration:none;
color:white;
background-color:purple;
padding:0.2em 0.6em;
border-right:1px solid white;
}
126
a:hover {background-color:#ff3300;}
li {display:inline;}
</style>
</head>
<body>
<ul>
<li><a href="http://www.google.com">Google</a></li>
<li><a href="http://www.yahoo.com">Yahoo</a></li>
</ul>
<p>
În acest exemplu elementele ul și a se deplaseaza spre stânga cu proprietatea float. Elementele li vor
fi afisate unul dupa altul pe aceeasi linie. În acest fel lista de link-uri devine un meniu
orizontal.Elementul ul are lățimea de 100% și fiecare link din lista are lățimea de 6em (de 6 ori
marimea fontului curent).Au fost adugate culori și chenare pentru a imbunatati aspectul listei.
</p>
</body></html>
Exemplul 5: Ilustrează crearea unei pagini web (homepage) cu antet, subsol, conținut stâng și conținut
principal utilizând proprietatea float.
<html><head>
<style type="text/css">
div.container{
width:100%;
margin:0px;
border:1px solid gray;
line-height:150%;
}
div.header,div.footer{
padding:0.5em;
color:white;
background-color:gray;
clear:left;
}
h1.header{
padding:0;
margin:0;
}
div.left{
float:left;
width:160px;
margin:0;
padding:1em;
}
div.content{
margin-left:190px;
border-left:1px solid gray;
127
padding:1em;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1 class="header">Web Data</h1>
</div>
<div class="left">
<p>"Niciodata nu mariti, mai mult decat este necesar, numărul notiunilor necesare pentru a explica
ceva." William of Ockham (1285-1349)</p>
</div>
<div class="content">
<h2>Programare web</h2>
<p>În acest site veti gasi informatiile necesare pentru programarea web.</p>
<p>Fiti competitivi!</p>
</div>
<div class="footer">
Copyright
</div>
</div>
</body></html>
Specificând marginile laterale ca auto, spațiul disponibil va fi împărțit în mod egal rezultând un element
aliniat la centru.
Exemplu:
<html><head>
<style type="text/css">
.center{
margin:auto;
width:70%;
background-color:#b0e0e6;
}
</style>
</head>
<body>
<div class="center">
<p>"Judecam oamenii nu numai prin ceea ce ei gandesc și nici macar prin sentimentele care ii
domina, ci prin interferentele cu viata noastra, pe care soarta i-a silit să le traiasca."</p>
<p>Marin Preda - "Cel mai iubit dintre pamanteni"</p>
</div>
</body></html>
Observație: Când aliniați astfel de elemente cu float sau position, este indicat să definiți elementele
margin și padding pentru elementul <body>. În acest fel nu vor apărea diferențe vizibile între
browsere.
<html><head>
<style type="text/css">
a:link {color:#FF0000;} /* link nevizitat */
a:visited {color:#00FF00;} /* link vizitat */
a:hover {color:#FF00FF;} /* mouse peste link */
a:active {color:#0000FF;} /* link selectat */
</style>
130
</head>
<body>
<p><b><a href="mypage.htm" target="_blank">Acesta este un link</a></b></p>
</body></html>
Pseudo-clasa: first-child
Această pseudo-clasă se aplică unui element care este primul descendent (child) al unui alt element.
Selectarea tuturor elementelor <i> din primul element <p> care este descendent al unui alt element
Exemplu:
<html><head>
<style type="text/css">
p:first-child i{
color:blue;
}
</style>
</head>
<body>
<p>Acesta este primul <i>element italic</i> din primul paragraf.
Acesta este al doilea <i>element italic</i> din primul paragraf.</p>
<p>Acesta este primul <i>element italic</i> din al doilea paragraf.
Acesta este al doilea <i>element italic</i> din al doilea paragraf.</p>
</body></html>
132
Selectarea primului descendent al tuturor elementelor li dintr-o listă
Exemplu:
<html><head>
<style type="text/css">
li>*:first-child{
color:red;
}
</style>
</head>
<body>
<ul>
<li>Cafea <i>- bautura neagra fierbinte</i></li>
<li>Coca Cola <i>- bautura neagra rece</i></li>
</ul>
<ul>
<li>Cafea <i>- bautura neagra fierbinte</i></li>
<li>Lapte <i>- bautura alba rece</i></li>
</ul>
</body></html>
Pseudo-clasa : lang
Această clasă vă permite să definiți reguli speciale pentru diferite limbi.
Observație: Internet Explorer recunoaște pseudo-clasa: lang numai dacă declarația <!DOCTYPE> este
inclusă în document.
În exemplul următor, pseudo-clasa : lang definește modul de marcare a citatelor pentru elementele q care
au lang="no":
<html><head>
<style type="text/css">
q:lang(no){
quotes: "~" "~";
}
</style>
</head>
<body>
<p>Un text în paragraf.<q lang="no">Un citat în cadrul paragrafului</q> Un text în paragraf.</p>
</body></html>
Exemple:
Exemplul 1: Ilustrează cum se stabilesc diferite stiluri pentru link-uri.
<html><head>
<style type="text/css">
a.one:link {color: #ff0000;}
133
a.one:visited {color: #0000ff;}
a.one:hover {color: #ffcc00;}
a.two:link {color: #ff0000;}
a.two:visited {color: #0000ff;}
a.two:hover {font-size: 150%;}
a.three:link {color: #ff0000;}
a.three:visited {color: #0000ff;}
a.three:hover {background: #66ff66;}
a.four:link {color: #ff0000;}
a.four:visited {color: #0000ff;}
a.four:hover {font-family: monospace;}
a.five:link {color: #ff0000; text-decoration: none;}
a.five:visited {color: #0000ff; text-decoration:none;}
a.five:hover {text-decoration: underline;}
</style>
</head>
<body>
<p>Miscati mouse-ul peste link-uri pentru a vedea cum li se schimba aspectul..</p>
<p><b><a class="one" href="http://www.google.com" target="_blank">Acest link isi schimba
culoarea</a></b></p>
<p><b><a class="two" href="http://www.google.com" target="_blank">Acest link isi schimba
dimensiunea fontului</a></b></p>
<p><b><a class="three" href="http://www.google.com" target="_blank">Acest link isi schimba
culoarea de fundal</a></b></p>
<p><b><a class="four" href="http://www.google.com" target="_blank">Acest link isi schimba
familia fontului</a></b></p>
<p><b><a class="five" href="http://www.google.com" target="_blank">Acest link isi schimba
modul de decorare</a></b></p>
</body></html>
134
Pseudo-clasele CSS
Nume Descriere
:active Adaugă un stil unui element care este activat
Adaugă un stil unui element care este primul
:first-child
descendent al unui alt element
Adaugă un stil unui element care este focusat pentru
:focus
intrare de la tastatură
Adaugă un stil unui element când mouse-ul trece peste
:hover
el
Adaugă un stil unui element care are un anumit atribut
:lang
lang
:link Adaugă un stil unui link nevizitat
:visited Adaugă un stil unui link vizitat
Pseudo-elementele CSS
Sunt folosite pentru a adăuga efecte speciale unor selectori.
Sintaxă
Sintaxa unui pseudo-element este:
selector:pseudo-element {property:value;}
Pseudo-elementele pot fi folosite împreună cu clasele CSS:
selector.class:pseudo-element {property:value;}
Pseudo-elementul : first-line
Acest pseudo-element este utilizat pentru a adăuga un stil primei linii dintr-un text. În exemplul următor,
stilul se aplică primei linii din elementele p:
<html><head>
<style type="text/css">
p:first-line{
color:#ff0000;
font-variant:small-caps;
}
</style>
</head>
<body>
<p>Prima linie din fiecare paragraf are un stil special, adaugat cu pseudo-elementul :first-line.</p>
<p>Pentru a vedea efectul, redimensionati fereastra browserului astfel incat aceste doua paragrafe
sa fie afisate pe doua sau mai multe linii.</p>
</body></html>
135
Observație: Pseudo-elementul "first-line" poate fi utilizat numai cu elementele bloc.
Pseudo-elementul: first-letter
Acest pseudo-element este utilizat pentru a adăuga un anumit stil primei litere dintr-un text:
<html>
<head>
<style type="text/css">
p:first-letter{
color:#ff0000;
font-size:xx-large;
}
</style>
</head>
<body>
<p>Prima litera din acest paragraf este stilizata cu ajutorul pseudo-elementului :first-letter.
Prima litera din acest paragraf este stilizata cu ajutorul elementului :first-letter.</p>
</body>
</html>
Exemplul de mai sus va afișa prima literă din toate paragrafele care fac parte din clasa "articol", în roșu.
Pseudo-elemente multiple
Pseudo-elementele pot fi combinate. În exemplul următor, prima literă din paragraf este roșie cu
dimensiunea fontului xx-large. Restul textului din prima linie este albastru, cu majuscule mici (small-
caps). Restul textului din paragraf are culoarea și dimensiunea fontului implicite:
<html><head>
<style type="text/css">
p:first-letter{
color:#ff0000;
font-size:xx-large;
}
p:first-line{
color:#0000ff;
font-variant:small-caps;
}
</style>
</head>
<body>
<p>
Puteti combina pseudo-elementele :first-letter și :first-line pentru a adauga
efecte speciale primei litere, respectiv primei linii dintr-un text.
</p>
</body></html>
Pseudo-elementul: before
Acest pseudo-element poate fi utilizat pentru a insera un conținut înaintea unui element. În exemplul
următor este inserată o imagine înaintea fiecărui element <h1> din document:
<html><head>
<style type="text/css">
h1:before {content:url(roses.gif);}
</style>
</head>
<body>
<h1>Acesta este un titlu</h1>
<p>Pseudo-elementul :before insereaza un conținut înaintea unui element.</p>
<h1>Acesta este un titlu</h1>
<p><b>Note:</b> Internet Explorer accepta aceasta proprietate numai dacă este specificat
137
!DOCTYPE.</p>
</body></html>
Pseudo-elementul: after
Acest pseudo-element poate fi folosit pentru a insera un conținut după un element. În exemplul următor
este inserată o imagine după fiecare element <h1>:
<html><head>
<style type="text/css">
h1:after {content:url(roses.gif);}
</style>
</head>
<body>
<h1>Acesta este un titlu</h1>
<p>Pseudo-elementul :after insereaza un conținut dupa un element.</p>
<h1>Acesta este un titlu</h1>
<p><b>Note:</b> Internet Explorer accepta aceasta proprietate numai dacă este specificat
!DOCTYPE.</p>
</body></html>
Pseudo-elementele CSS
Nume Descriere
:after Adaugă conținut după un element
:before Adaugă conținut înaintea unui element
:first-letter Adaugă un stil primei litere dintr-un text
:first-line Adaugă un stil primei linii dintr-un text
Explicații: Codul din exemplul următor este codul standard utilizat în construirea barelor de navigare
verticale sau orizontale.
- list-style-type:none – înlătură marcatorii; ei nu sunt necesari într-o bară de navigare
- proprietățile margins și padding au valoarea 0 pentru a înlătura setările implicite ale browserului
Explicații:
- display:block – afișând linkurile ca blocuri, întreaga zonă poate fi acționată cu mouse-ul, nu numai
textul, și se poate specifica lățimea
- width:60px – elementele bloc ocupă toată lățimea disponibilă, de aceea se specifică lățimea dorită
Observație: Specificați întotdeauna lățimea pentru elementele <a> dintr-o bară de navigare verticală,
altfel puteți obține rezultate nedorite în IE.
Explicații:
- display:inline - implicit, elementele <li> sunt elemente bloc. Au fost înlăturate întreruperile de linie
dinaintea și după fiecare element, pentru a fi afișate pe aceeași linie.
- dacă setați padding-ul pentru elementele <li> (și nu pentru <ul>), linkurile se vor deplasa în afara
elementului < ul>. Din acest motiv, a fost specificat padding-ul de sus și de jos pentru elementul ul.
Itemi float
În exemplul anterior, link-urile au lățimi diferite. Pentru ca toate link-urile să aibă aceeași lățime,
elementele <li> trebuie declarate ca float și trebuie specificată lățimea pentru elementele <a>:
<html>
<head>
<style type="text/css">
ul{
list-style-type:none;
margin:0;
padding:0;
overflow:hidden;
}
li{
float:left;
}
a:link,a:visited{
display:block;
width:120px;
font-weight:bold;
color:#FFFFFF;
background-color:#98bf21;
141
text-align:center;
padding:4px;
text-decoration:none;
text-transform:uppercase;
}
a:hover,a:active{
background-color:#7A991A;
}
</style>
</head>
<body>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#news">News</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#about">About</a></li>
</ul>
</body></html>
Explicații:
- float:left - se folosește float pentru ca elementele bloc să se deplaseze unele lângă celelalte
- display:block - afișând link-urile ca elemente bloc, întreaga zonă (nu numai textul) poate fi acționată
cu mouse-ul și se poate specifica lățimea fiecărei zone
- width:60px - deoarece elementele bloc ocupă întreaga lățime disponibilă, nu se pot deplasa unul
lângă altul. Din acest motiv, se specifică lățimea dorită a link-urilor.
Exemple de meniuri:
Exemplul 1: Meniu orizontal cu trei nivele
Documentul HTML:
<!doctype html>
<html>
<head>
<title>CSS3 Dropdown Menu</title>
<meta charset="utf-8">
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Tutorials</a>
<ul>
<li><a href="#">Photoshop</a></li>
<li><a href="#">Illustrator</a></li>
142
<li><a href="#">Web Design</a>
<ul>
<li><a href="#">HTML</a></li>
<li><a href="#">CSS</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Articles</a>
<ul>
<li><a href="#">Web Design</a></li>
<li><a href="#">User Experience</a></li>
</ul>
</li>
<li><a href="#">Inspiration</a></li>
</ul>
</nav>
</body>
</html>
Documentul CSS:
nav ul ul {
display: none;
}
nav ul {
background: #efefef;
background: linear-gradient(top, #efefef 0%, #bbbbbb 100%);
background: -moz-linear-gradient(top, #efefef 0%, #bbbbbb 100%);
background: -webkit-linear-gradient(top, #efefef 0%,#bbbbbb 100%);
box-shadow: 0px 0px 9px rgba(0,0,0,0.15);
padding: 0 20px;
border-radius:12px;
list-style: none;
position: relative;
display: inline-table;
}
nav ul:after {
content: ""; clear: both; display: block;
}
nav ul li {
float: left;
143
}
nav ul li:hover {
background: #4b545f;
background: linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -moz-linear-gradient(top, #4f5964 0%, #5f6975 40%);
background: -webkit-linear-gradient(top, #4f5964 0%,#5f6975 40%);
}
nav ul li:hover a {
color: #fff;
}
nav ul li a {
display: block; padding: 20px 45px;
color: #757575; text-decoration: none;
}
nav ul ul {
background: #5f6975; border-radius: 0px; padding: 0;
position: absolute; top: 100%;
}
nav ul ul li {
float: none;
border-top: 1px solid #6b727c;
border-bottom: 1px solid #575f6a;
position: relative;
}
nav ul ul li a {
padding: 15px 45px;
color: #fff;
}
nav ul ul li a:hover {
background: #4b545f;
}
nav ul ul ul {
position: absolute; left: 100%; top:0;
}
Documentul CSS:
body {
font: normal .8em/1.5em Arial, Helvetica, sans-serif;
background: #ebebeb;
width: 900px;
margin: 100px auto;
color: #666;
}
a{
color: #333;
}
#nav {
margin: 0;
padding: 7px 6px 0;
background: #7d7d7d url(img/gradient.png) repeat-x 0 -110px;
line-height: 100%;
border-radius: 2em;
-webkit-border-radius: 2em;
-moz-border-radius: 2em;
-webkit-border-radius: 1.6em;
-moz-border-radius: 1.6em;
-webkit-box-shadow: none;
-moz-box-shadow: none;
}
#nav ul a:hover {
background: #0078ff url(gradient.png) repeat-x 0 -100px !important;
color: #fff !important;
-webkit-border-radius: 0;
-moz-border-radius: 0;
/* dropdown */
#nav li:hover > ul {
display: block;
}
/* level 2 list */
#nav ul {
display: none;
margin: 0;
padding: 0;
width: 185px;
position: absolute;
top: 35px;
left: 0;
background: #ddd url(img/gradient.png) repeat-x 0 0;
border: solid 1px #b4b4b4;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
#nav ul a {
font-weight: normal;
text-shadow: 0 1px 0 #fff;
}
/* level 3+ list */
#nav ul ul {
left: 181px;
top: -3px;
}
-webkit-border-top-right-radius: 9px;
-moz-border-radius-topright: 9px;
}
#nav ul li:last-child > a {
-webkit-border-bottom-left-radius: 9px;
-moz-border-radius-bottomleft: 9px;
-webkit-border-bottom-right-radius: 9px;
-moz-border-radius-bottomright: 9px;
}
/* clearfix */
#nav:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
#nav {
display: inline-block;
}
html[xmlns] #nav {
display: block;
}
* html #nav {
height: 1%;
}
149
text-align: center;
}
div.img img{
display: inline;
margin: 3px;
border: 1px solid #ffffff;
}
div.img a:hover img {border: 1px solid #0000ff;}
div.desc{
text-align: center;
font-weight: normal;
width: 120px;
margin: 2px;
}
</style>
</head>
<body>
<div class="img">
<a target="_blank" href="roses.htm"><img src="roses.jpg" alt="Roses" width="110" height="90"
/></a>
<div class="desc">Adaugati o descriere a imaginii</div>
</div>
<div class="img">
<a target="_blank" href="roses.htm"><img src="images/roses.jpg" alt="Roses" width="110"
height="90" /></a>
<div class="desc">Adaugati o descriere a imaginii</div>
</div>
<div class="img">
<a target="_blank" href="roses.htm"><img src="images/roses.jpg" alt="Roses" width="110"
height="90" /></a>
<div class="desc">Adaugati o descriere a imaginii</div>
</div>
<div class="img">
<a target="_blank" href="roses.htm"><img src="images/roses.jpg" alt="Roses" width="110"
height="90" /></a>
<div class="desc">Adaugati o descriere a imaginii</div>
</div>
</body></html>
Imagini sprite
O imagine sprite este o colecție de imagini asamblate într-o singură imagine. O pagină web care conține
multe imagini are nevoie de mult timp pentru a fi încărcată și generează numeroase cereri către server.
Folosirea imaginilor sprite reduce numărul acestor cereri către server și lățimea de bandă utilizată.
Exemplu:
În loc să folosiți trei imagini separate pentru navigarea în pagina web, folosiți imaginea sprite de mai jos
(„nav_sprite.gif"):
Cu CSS, putem afișa doar porțiunea de imagine pe care o dorim, așa cum ilustrează exemplul următor:
Crearea unei liste de navigare
Vom folosi o listă HTM, deoarece toate elementele pot fi linkuri și suportă o imagine de fundal:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<style type="text/css">
#navlist{position:relative;}
#navlist li{margin:0;padding:0;liststyle:none;position:absolute;top:0;}
#navlist li, #navlist a{height:44px;display:block;}
#home{left:0px;width:46px;}
#home{background:url('nav_sprite.gif') 0 0;}
#prev{left:63px;width:43px;}
#prev{background:url('nav_sprite.gif') -47px 0;}
#next{left:129px;width:43px;}
152
#next{background:url('nav_sprite.gif') -91px 0;}
</style>
</head>
<body>
<ul id="navlist">
<li id="home"><a href="default.asp"></a></li>
<li id="prev"><a href="css_intro.asp"></a></li>
<li id="next"><a href="css_syntax.asp"></a></li>
</ul>
</body></html>
Explicații:
#navlist{position:relative;} – poziția listei de navigare este relativă pentru a permite poziționarea
absolută în interiorul ei
#navlist li{margin:0;padding:0;liststyle: none;position:absolute;top:0;} – elementele listei au
marginile și padding-ul setate la 0, stilul caracteristic listelor este înlăturat și sunt poziționate absolut
#navlist li, #navlist a{height:44px;display:block;} – înălțimea pentru toate imaginile este setată la
44px
Acum vom adăuga un efect listei de navigare, atunci când mouse-ul se mișcă peste ea (hover). Noua
imagine ("nav_sprite_hover.gif") conține trei imagini normale de navigare și trei imagini pentru efect:
Deoarece este o singură imagine și nu șase imagini separate, pagina va fi încărcată rapid. Pentru a obține
acest efect adăugăm doar trei linii de cod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css">
#navlist{position:relative;}
#navlist li{margin:0;padding:0;liststyle:none;position:absolute;top:0;}
153
#navlist li, #navlist a{height:44px;display:block;}
#home{left:0px;width:46px;}
#home{background:url('nav_sprite_hover.gif') 0 0;}
#home a:hover{background: url('nav_sprite_hover.gif') 0 -45px;}
#prev{left:63px;width:43px;}
#prev{background:url('nav_sprite_hover.gif') -47px 0;}
#prev a:hover{background: url('nav_sprite_hover.gif') -47px -45px;}
#next{left:129px;width:43px;}
#next{background:url('nav_sprite_hover.gif') -91px 0;}
#next a:hover{background: url('nav_sprite_hover.gif') -91px -45px;}
</style>
</head>
<body>
<ul id="navlist">
<li id="home"><a href="home.htm"></a></li>
<li id="prev"><a href="page1.htm"></a></li>
<li id="next"><a href="page2.htm"></a></li>
</ul>
</body></html>
Explicații:
- deoarece itemii listei sunt link-uri, putem folosi pseudo-clasa : hover
- #home a:hover{background: transparent url(img_navsprites_hover.gif) 0 -45px;}
– pentru toate cele trei imagini cu efect, precizăm aceeași poziție a fundalului, dar cu 45px mai jos.
Atribute selector
Este posibil să stilizați elementele HTML care au un anumit atribut, nu numai class și id.
Observație: Internet Explorer recunoaște atributele selector numai dacă declarația ! DOCTYPE este
inclusă în document.
Exemplul 1: Exemplul următor ilustrează cum pot fi stilizate toate elementele care au atributul title:
<html>
<head>
<style type="text/css">
[title]{
color:blue;
}
</style>
</head>
<body>
<h2>Stilul va fi aplicat elementelor:</h2>
<h1 title="Salut">Buna ziua</h1>
<a title="Google" href="http://www.google.com">Google</a>
<hr />
154
<h2>Stilul nu va fi aplicat elementelor:</h2>
<p>Salutare!</p>
</body></html>
Exemplul 2: Ilustrează aplicarea unui stil tuturor elementelor care au atributul title="CSS":
<html>
<head>
<style type="text/css">
[title=CSS]{
border:5px solid green;
}
</style>
</head>
<body>
<h2>Stilul va fi aplicat elementelor:</h2>
<img title="CSS" src="logo.gif" width="170" height="50" /> <br />
<a title="CSS" href="http://www.cisco.com/">Cisco</a>
<hr />
<h2>Stilul nu va fi aplicat elementelor:</h2>
<p title="salutari">Buna!</p>
<a class="CSS" href="http://www.cisco.com/">Cisco</a>
</body></html>
Exemplul 3: Ilustrează cum pot fi stilizate toate elementele al căror atribut conține o anumită valoare:
<html><head>
<style type="text/css">
[title~=hello]{
color:blue;
}
</style>
</head>
<body>
<h2>Stilul va fi aplicat elementelor:</h2>
<h1 title="hello all">Buna ziua</h1>
<p title="elev hello">Buna ziua elevi!</h1>
<hr />
<h2>Stilul nu va fi aplicat elementelor:</h2>
<p title="elev">Buna ziua elevi!</p>
</body></html>
Exemplul 4: Exemplul următor ilustrează cum se stilizează toate elementele care conțin o anumită valoare
în atributul lang:
<html><head>
<style type="text/css">
[lang|=en]{
color:blue;
155
}
</style>
</head>
<body>
<h2>Stilul va fi aplicat elementelor:</h2>
<p lang="en">Hello!</p>
<p lang="en-us">Hi!</p>
<p lang="en-gb">Hello!</p>
<hr />
<h2>Stilul nu va fi aplicat elementelor:</h2>
<p lang="us">Hi!</p>
<p lang="no">Hei!</p>
</body></html>
Exemplul 5: Atributele selector sunt în mod deosebit utile pentru stilizarea formularelor fără atributele
class sau id:
<html><head>
<style>
input[type="text"]{
width:150px;
display:block;
margin-bottom:10px;
background-color:yellow;
}
input[type="button"]{
width:120px;
margin-left:35px;
display:block;
}
</style>
</head>
<body>
<form name="input" action="" method="get">
Nume:<input type="text" name="Nume" value="Scutelnic" size="20">
Prenume:<input type="text" name="Prenume" value="Speranța" size="20">
<input type="button" value="Trimite">
</form>
</body></html>
3. HTML 5
HTML5 este cea mai recentă versiune de HTML, în scopul de a simplifica dezvoltarea de aplicatii web.
Sintaxa HTML5 este mult mai ușoară în comparație cu HTML4, și oferă multe caracteristici noi. Acest
articol oferă o introducere în HTML5.
156
3.1. Utilizare HTML 5
Aplicațiile HTML5 pot fi pornite pentru a rula offline. HTML5 oferă funcția de stocare offline, numit un
cache al cererii pentru stocarea de fișiere. Deci, dacă utilizatorul este offline, browser-ul încă mai are
acces la fișierele necesare. Acesta poate fi HTML, CSS, Javascript, sau orice alte resurse necesare pentru a
vizualiza pagina de web.
Drag and Drop - HTML5 oferă o funcție incorporată Drag and Drop, care permite dezvoltarea de
aplicații interactive. Cu Drag & Drop aveți posibilitatea să mutați orice element în locul potrivit.
Geolocation - Geolocation API în HTML5, permite să partajați locația dvs. cu site-uri de încredere.
Confidențialitatea este importantă în funcția de geolocalizare. Browserele nu au nevoie să trimită
informații despre locație la site-uri Web, fără permisiunea expresă a utilizatorului. De exemplu, dacă un
utilizator accesează o pagină web, în care, de asemenea,este prezentă funcția de geolocalizare folosind
browser-ul Firefox. Browser-ul va cere permisiunea, dacă utilizatorul dorește să împărtășească locația lui.
Dacă utilizatorul consimte, Firefox va aduna informații despre punctele de acces fără fir în apropiere și
adresa IP a computerului vizitatorilor și va trimite aceste informații în Google Location Services, care este
un serviciu de geolocalizare Firefox implicit.
Audio și video - În prezent, există facilități HTML necesare pentru punerea în aplicare a fișierelor
multimedia. De aceea, fișierele media se includ în HTML folosind diferite plugin-uri . De exemplu, Flash
este utilizat pe scară largă pentru a încorpora video și fișiere audio. Cu toate acestea, acest lucru poate fi
foarte ușor de făcut în HTML5 cu ajutorul elementelor audio și video, fără utilizarea de plugin-uri.
Formulare de introducere - HTML5 introduce mai multe elemente noi de intrare, cum ar fi pop-up
calendare, selectoare de culori și multe altele. Cu aceste funcții de intrare se poate crea o forma foarte
eficienta, cu un control mai bun al intrării și verificării.
3.2. Sintaxa simplificată
Doctype: - Declarația DOCTYPE este primul lucru, ce trebuie de făcut într-un document HTML. Ea
indică browser-ui web versiunea limbajui de marcare a paginii.
Codificarea caracterelor:
Pentru a afișa documentul HTML, programul ar trebui să selecteze o codificare. Codificarea caracterelor
indică browser-ului ce set de caractere să utilizeze la conversia biților în caractere.
Tag-ul script - Tag-ul script este folosit pentru a defini partea de client, cum ar fi JavaScript. În HTML 4
este necesar de folosit atributul type, dar nu este necesar în HTML5.
Tag-ul link - defineste o relație dintre documente și resursele externe. Această etichetă este frecvent
utilizată pentru a include fișiere CSS.
<link rel="stylesheet" type="text/css" href="style.css" />
De exemplu:
<link rel="stylesheet" href="style.css" />
În HTML5, atributul type este opțional pentru tag-ul link, similar și pentru tag-ul script.
De exemplu:
<link rel="stylesheet" href="style.css" />
Tag-ul header - Tag-ul header conține titlul paginii web, care este, de obicei, în partea de sus a paginii
care conține logo-ul și alte informații, cum ar fi un slogan, și meniuri, etc. În loc de a folosi:
<div id="header">
puteți scrie pur și simplu
<header>
158
Tag-ul nav - Tag-ul nav este folosit pentru a naviga prin meniu. De exemplu, în loc de
<div id="nav">
aveți posibilitatea să utilizați
<nav>
pentru navigare.
Tag-ul arcticle - Tag-ul arcticle prezintă conținutul independent și separate. Un exemplu de utilizare a
tag-ul poate fi un post pe blog, articol de știri, postare pe forum, comentariul utilizatorului, etc.
Tag-ul section - Tag-ul section este folosit pentru a separa diferite secțiuni ale paginii. Tag-ul grupează
conținutul care, de obicei, vine după antet sau înaintea subsolului. Dacă este necesar, secțiunile pot fi
imbricate între ele.
Tag-ul aside - Tag-ul aside definește o secțiunea de pagină cu conținut care este tangențial legat de
conținutul din jurul lui. Tag-ul poate fi folosit pentru panourile laterale sau orice alt conținut care poate fi
analizat separat de conținutul principal al paginii.
Tag-ul figure - Tag-ul figure este folosit pentru comentarii la ilustrații, diagrame, fotografii, și la listele
de cod, etc.Tag-ul figcaption este utilizat ca titlu pentru tag-ul figure.
Tag-ul footer - Este folosit pentru a reprezenta secțiunea subsol și este, de obicei, situat în partea de jos a
paginii. Footer conține de obicei informații precum numele autorului, privind drepturile de autor, link-uri
către termenii de utilizare și politica de confidențialitate, etc. Informațiile de contact în footer trebuie să
fie scrisă în tag-ul address.
3.4. Elementele exluse
În afară de cele noi, există unele elemente care nu mai sunt acceptate în HTML5. Aici sunt unele dintre
elementele șterse:
<frameset>
<frame>
<noframes>
După cum a-ți văzut, elemente cum ar fi cadrele - frame, frameset și noframes au fost eliminate din
HTML5.
Tag-ul Font - Elementul font se utiliza pentru a determina fontul, dimensiunea și culoarea textului.
Tag-ul strike - Elementul strike a fost necesar pentru a determina textul tăiat cu o linie. În schimb,
utilizați acum <del>
159
folosit pentru a mari textul.
<applet></applet>
utilizată pentru a determina applet-ul încorporat. HTML5 suportă tag-ul object în loc.
<acronym></acronym>
Exemplu, de cod complet pentru o pagină simplă în HTML5:
<!doctype html><html><head>
<meta charset="utf-8" />
<title> Cursuri și Tutoriale</title>
<meta name="description" content="Examplu document în HTML5, template, cursuri și tutoriale" />
<meta name="keywords" content="html5, tutoriale html5, cursuri" />
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<header id="page_header">
<h1>Web Development Cursuri și Tutoriale</h1>
<nav>
<ul>
<li><a href="edugal.ro/" title="Principala">Home</a></li>
<li><a href="edugal.ro/lectii.php" title="Lectii">Lecții</a></li>
<li><a href="edugal.ro/lucrari.php" title="Lucrari">Lucrări</a></li>
<li><a href="edugal.ro/teste.php" title="Teste">Teste</a></li>
<li><a href="edugal.ro/referinte.php" title="Referinte">Referințe</a></li>
<li><a href="edugal.ro/descarca.php" title="Descarca">Descarcă</a></li>
<li><a href="edugal.ro/contacte.php" title="Contacte">Contacte</a></li>
</ul>
</nav>
</header>
<section id="posts">
<header id="posts_header">
<h2>Tutoriale HTML5</h2>
</header>
<article class="post">
<header>
<h3>Învață rapid HTML5</h3>
</header>
<div class="ctext">
Invata despre noile caracteristici din HTML5.<br />
Tag-uri noi, și elemente pentru structura.
</div>
<aside class="post_baner">Aici poate fi un banner</aside>
<p>
160
Noile caracteristici din <b>HTML5</b> sunt bazate pe HTML, CSS, DOM, și JavaScript; și reduc
necesitatea plugin-urilor externe (precum Flash).<br />
Multe alte noi caracteristici HTML5 sunt centrate pe crearea unei mai bune platforme pentru
aplicatiile web, <a href="http://www.w3schools.com/html/html5_intro.asp" title="HTML5">Cititi
mai mult</a> ...
</p>
</article>
<article class="post">
<header>
<h3>Elemente și attribute noi pentru formular în HTML5</h3>
</header>
<div class="ctext">
Formularele HTML sunt folosite în general ca să transfere date adaugate de utilizator la un script de
pe server sau JavaScript, ca să fie procesate de un limbaj de programare.
</div>
<p>
HTML5 adauga mai multe tipuri de casute input noi, pentru formular (datetime, datetime-local, date,
month, week, time, number, range, email, url, search, and color), <a
href="edugal.ro/lectii.php"title="Elemente de formular noi">Cititi mai mult</a> ...
</p>
</article>
<footer id="post_footer">
<p>Mai multe lectii și tutoriale HTML: <a href="http://www.w3schools.com" title="Lectii și
tutoriale">Lectii și tutoriale</a>.</p>
</footer>
</section>
<section id="sidebar">
<nav>
<ul>
<li><a href="edugal.ro/lectii_view.php?id=1" title="Initiere în HTML">Initiere în HTML</a></li>
<li><a href="edugal.ro/lectii_view.php?id=2" title="Stiluri CSS">Stiluri CSS</a></li>
<li><a href="edugal.ro/lectii_view.php?id=6" title="Initiere în PHP">Initiere în PHP</a></li>
<li><a href="edugal.ro/lectii_view.php?id=4" title="Macromedia Dreamweaver">Macromedia
Dreamweaver</a></li>
</ul>
</nav>
<aside class="sidebar_baner">Banner în sidebar</aside>
</section>
<footer id="page_footer">
<p>De la: <a href="edugal.ro/" title="Lectii WEB">edugal.ro/</a></p>
</footer>
</body></html>
header#page_header {
width: 100%;
margin: 4px auto;
border: 2px solid blue;
}
header#page_header nav ul {
list-style: none;
margin: 0;
padding: 0;
}
#page_header nav ul li {
display:inline;
margin: 0 20px 0 0;
padding: 1px;
}
section#posts {
float: right;
width: 79%;
background-color: #f1f2fe;
border: 1px solid yellow;
}
section#posts header#posts_header {
background-color: #abcdef;
border: 1px solid green;
}
article.post {
margin:10px;
background-color: yellow;
text-align: left;
}
article.post aside {
float: right;
margin-top: -58px;
width: 250px;
height: 120px;
background-color: #fefefe;
}
article.post p { clear: right;}
section#sidebar {
float: left;
162
width: 18%;
background-color: #d7d8fe;
border: 1px solid green;
padding:5px;
}
section#sidebar nav ul {
margin: 3px auto;
text-align: left;
padding: 0 0 0 15;
}
section#sidebar aside {
width: 160px;
height: 250px;
margin: 10px auto;
background-color: #fefefe;
}
footer#page_footer {
clear: both;
width: 100%;
margin: 4px auto;
border: 2px solid blue;
}
Design-ul de
bază
163
Header - ul - Conține numele și sigla companiei care deține site-ul, fotografii, etc. Sub header - Conține
meniul orizontal etc.
Pages - Conține cuprinsul specific fiecărei pagini, restul elementelor rămânând fixe.
Right - Poate conține: Noutăți; Contact; Hartă etc.
Footer - Poate conține: Contor de Trafic; Copyright; Bottom Menu; etc.
În Photoshop putem realiza cu ușurință layout-ul unui site. Pentru a transpune o idee într-un site
complet funcțional, vom mai avea nevoie și de alte programe (de ex Dreamweaver) sau dacă nu,
cunoștințe de html.
Pentru a face butoanele funcționale, dintr-un design, vom secționa layout-ul, folosind Slice Tool.
Cursorul va avea forma unui cuțit. Imediat sub slice tool găsim Slice Select Tool, cu care putem selecta
slice-urile și pe putem redimensiona, redenumi etc.
Începând din colțul din stânga sus, începem să conturăm slice-urile, având grija ca fiecare buton să
fie cuprins într-un singur slice și să nu avem nici o portiune libera. Este de recomandat ca măcar
butoanelor să le dăm un alt nume față de cel care îl dă implicit photoshop-ul. Putem face asta executând
click dreapta pe slice, și selectând Edit Slice Options.
După ce am terminat de "tăiat" layout-ul nostru, mergem la File - Save for Web, și după ce
selectăm toate slice-urile din dreapta alegem calitatea imaginilor, apoi Save și alegem opțiunea Html și
Images (de la Save As Type). În acest mod, photoshop-ul ne crează un fișier index.html incare sunt trecute
toate slice-urile noastre sub forma unui tabel, iar pe lângă acest fișier vom avea un director Images în care
se vom afla toate slice-urile noastre.
Dacă de exemplu lucrăm în Dreamweaver, și vrem ca butonul să aibă două stări diferite, ne
reintoarcem în Photoshop, schimbăm font-ul butoanelor și redenumim slice-urile respective apoi Save for
Web, dar nu mai selectăm opțiunea Html și Images ci doar Images.
Deja de câțiva ani smartphone-urile și tabletele sunt într-o continuă creștere. Un sfârsite al acestei
evoluții este greu de estimat, dimpotrivă, potențialii clienți care folosesc dispozitive mobile pentru a
naviga pe Internet sunt din ce în ce mai mulți, iar aceștia nu mai interacționează doar pe un ecran gigant.
Responsive reprezintă o tehnică care permite unei pagini web sa se ajusteze în mod automat
dispozitivului final (telefon inteligent, tabletă, calculator) al utiliztorului. Cu atât de multe rezoluții
diferite, sisteme de operare noi și un număr infinit de dispozitive, se vor implementa pe lângă Layout-ul
standard de monitor și alte layout-uri care nu vor fi lăsate la voia întâmplării, toatea acestea vor fi incluse
în proiectul receptiv al layout-ului și al programării. Fără “zoom” sau “scroll în dreapta și în stânga” și
nici cu elemente complicate care ar face dificilă funționalitatea paginii. Un concept bine gândit și adaptat
la dispozitivul final.
Web design personalizat, cunoscut sub acronimul englez RWD (Responsive Web Design) este o
filozofie de design și dezvoltare destinată adaptării apariției de pagini web pentru dispozitivul utilizat
pentru vizualizare.
Astăzi paginile web sunt afișate pe mai multe tipuri de dispozitive, cum ar fi tablete, Smartphone-
uri, cărți electronice, calculatoare, și asa mai departe. Mai mult, fiecare dispozitiv are caracteristicile sale
specifice: dimensiunea ecranului, rezoluție, putere CPU, capacitatea de memorie, printre altele. Această
tehnologie își propune ca, deși cu un design unic sa poată fi vizualizată de pe orice dispozitiv.
164
Proiectantul american și autor Ethan Marcotte a creat și furnizat această tehnică printr-o serie de
articole publicate pe A List Apart, o publicație specializată în design și dezvoltare web, pentru ca apoi sa
includă ideea în cartea sa Responsive Web Design.
Atât idea cât și rolul responsive web design au fost discutate și descrise în prealabil de World Wide Web
Consortium (W3C) în iulie 2008 în recomandarea sa "Mobile Web Best Practices" având subtitlul "One
Web".
Această recomandare, deși specifica pentru dispozitive mobile, subliniază ca este făcuta în
contextul One Web, și, prin urmare include nu numai experiența de navigare pe dispozitive mobile, ci și
pe dispozitive cu rezoluție a ecranului mai mare cum ar fi desktop-ul.
Conceptul One Web face referire la idea de a realiza un “Web pentru Toți” (Web for All) și
accesibil de pe orice tip de dispozitiv (Web on Everything).
În ziua de azi, varietatea tipurilor de dispozitive existente pe piață a făcut ca informația sa nu fie
accesibilă pe toate tipurile de dispozitive, sau, mai bine spus, este accesibilă, dar navigarea pe acestea este
foarte greoaie.
Utilizarea de dispozitive mobile este în creștere, dispozitivele de genul tabletelor și telefoanelor inteligente
mărindu-și vânzările în ultimii ani și în acest fel, navigarea pe Internet pe astfel de dispozitive a devenit
din ce în ce mai comuna. Acesta este motivul pentru care responsive web design a devenit atât de popular,
deoarece aceasta este o tehnologie ce propune o soluție web ce permite vizualizarea web atât pe un
dispozitiv desktop cât și pe unul mobil.
Cu o singura versiune în HTML și CSS se acoperă toate versiunile de ecran, adică, site-ul web
creat va fi optimizat pentru toate tipurile de dispozitive: PC, tablete, telefoane mobile, etc. Acest lucru va
îmbunătăți experiența utilizatorului spre deosebire de ceea ce se întâmplă cu site-urile fixe atunci când
sunt accesate de pe dispozitive mobile.
În acest fel se reduc costurile de creație și administrare atunci când design-ul ecranului este similar
pe dispozitive de mărimi diferite.
Se presupune de asemenea ca evita dezvoltarea de aplicații ad-hoc pentru versiuni mobile, sau nu,
de exemplu o aplicație specifica pentru iPhone, alta pentru mobile Android, etc, deși în ziua de azi site-
urile pentru mobile nu pot realiza aceleași funcții ca și aplicațiile native.
Din punctul de vedere al optimizării pe motoarele de căutare, ar apărea doar un URL în rezultatele
de căutare, prin intermediul cărora se șterg redirectările și erorile ce deriva din acestea.
Se evită de asemenea erorile la accesarea site-urilor web, în special de pe social links, adică, de pe
link-urile pe care utilizatorii le distribuie pe rețelele sociale de genul Facebook sau Twitter și care pot sa
sfârșească eronat, depinzând de link-ul ce a fost copiat (de pe ce dispozitiv a fost copiat) și de dispozitivul
de pe care se accesează.
165
3.5.3. Modul de funcționare al RWD
Web Design-ul Responsiv este posibil datorită introducerii Media Queries în proprietățile stilurilor CSS în
versiunea numărul 3. Media querie-urile sunt o serie de comenzi ce se includ în pagina de stiluri ce face
indică documentului HTML cum trebuie să se comporte pe diferite tipuri de ecrane.
Pentru a înțelege mai bine această tehnologie, design-ul paginii web, ca și ziarele și revistele, se
bazează pe coloane. Astfel că, după filozofia design-ului responsive, dacă o pagina web la rezoluția de PC
(1028x768 px) are 5 coloane, pentru o tabletă (800x600 px) ar fi necesare doar 4 și în cazul unui telefon
inteligent care are de obicei o lățime de 320 pana la 480 pixeli ar folosi doar 3 coloane.
Structura HTML
Headerul are o înălțime fixă de 180px, zona dedicată conținutului are 600px lățime, iar sidebar-ul
este de 300px lățime.
3. Crearea fișierului CSS
Utilizând Css3 site-urile pot deveni responsive. Practic, se specifică condițiile în care browserul va
reda o pagină în momentul în care se specifică dimensiunea prin tagul name viewport. Setul de reguli
de mai jos, este aplicabil doar pentru dispozitive care au dimensiuni de 980px sau mai mici. Practic, se
stabilește dimensiunea zonei dedicate conținutului din pixeli, în procente, astfel ea devine fluidă.
166
/* pentru 980px sau mai puțin */
Setul de reguli de mai jos, este aplicabil doar pentru dispozitive care au dimensiuni de 700px sau mai
mici. Se stabilește astfel lățimea cu valoarea auto pentru zonele definite de #content și #sidebar, iar pentru
float valoarea none, pentru ca aceste zone să nu plutească sau să devină fluide, să-și păstreze poziția
normală.
Setul de reguli de mai jos, este aplicabil doar pentru dispozitive care au dimensiuni de 480px sau mai mici
(ecran telefon mobil). Se stabilește înălțimea zonei header pe cea implicită, dimensiunea pentru
elementele H1 va fi de 24px, și se va ascunde zona definită de #sidebar.
167
/* pentru 480px sau mai puțin*/
Atât pe dispozitivele mobile cât și pe cele clasice (desktop), utilizatorii au fost obișnuiți să folosească
mai mult scroll-ul vertical decât pe cel orizontal. Acest lucru se datorează în principal construcției rotiței
mouse-ului, care permitea la început numai scroll-ul vertical. De aceea, pe dispozitivele mobile este
esențial să nu avem elemente mai mari decât dimensiunea orizontală a browserului, pentru a nu obliga
utilizatorul să navigheze folosind scroll-ul orizontal.
Un instrument util pentru a verifica căt de responsive este site-ul nostru cel de la google:
https://www.google.ro/webmasters/tools/mobile-friendly/
4. JAVASCRIPT
4.1. JavaScript - Noțiuni de bază
JavaScript a fost dezvoltat prima dată de către firma Netscape, cu numele de Live Script, un limbaj de
script care extindea capacitățile HTML, oferă o alternativă parțială la utilizarea unui număr mare de
scripturi CGI pentru prelucrarea informaţiilor din formulare și care adaugă dinamism în paginile web.
Limbajul HTML oferă autorilor de pagini Web o anumită flexibilitate, dar statică. Documentele HTML
nu pot interacționa cu utilizatorul în alt mod mai dinamic, decât pune la dispoziția acestuia legături la alte
resurse (URL-uri). Crearea de CGI-uri (Common Graphics Interface) - [programe care ruleaza pe serverul
Web și care accepta informatii primite din pagina de web și returneaza cod HTML] - a dus la îmbogăţirea
posibilităţilor de lucru. Astfel, un pas important spre interactivizare a fost realizat JavaScript, care
permite inserarea în paginile web a script-urilor care se executa în cadrul paginii web, mai exact în cadrul
browser-ului utilizatorului, usurand astfel și traficul dintre server și client. De exemplu, într-o pagina
pentru colectarea de date de la utilizator se pot adauga scripturi JavaScript pentru a valida corectitudinea
introducerii și apoi pentru a trimite serverului doar date corecte spre procesare. JavaScript conține o listă
destul de amplă de funcții și comenzi menite să ajute la operaţii matematice, manipulări de şiruri, sunete,
imagini, obiecte și ferestre ale browser-ului, link-urile URL și verificari de introduceri ale datelor în
formulare. Codul necesar acestor actiuni poate fi inserat în pagina web și executat pe calculatorul
vizitatorului.
168
În general se consideră că există zece aspecte fundamentale ale limbajului JavaScript pe care orice
programator în acest limbaj ar trebui să le cunoască :
1. JavaScript poate fi introdus în HTML - De obicei codul JavaScript este gazduit în documentele
HTML și executat în interiorul lor. Majoritatea obiectelor JavaScript au etichete HTML pe care le
reprezintă, astfel încât programul este inclus pe partea de client a limbajului. JavaScript folosește
HTML pentru a intra în cadrul de lucru al aplicațiilor pentru web.
2. JavaScript este dependent de mediu - JavaScript este un limbaj de scriptare; software-ul care
ruleaza de fapt programul este browser-ul web (Firefox, Opera, Netscape Navigator, Internet
Explorer, Safari, etc.) Este important să luăm în considerare această dependență de browser atunci
când utilizăm aplicații JavaScript.
3. JavaScript este un limbaj în totalitate interpretat - codul scriptului va fi interpretat de browser
înainte de a fi executat. JavaScript nu necesită compilări sau preprocesări, ci rămane parte
integranta a documentului HTML. Dezavantajul acestui limbaj este că rularea durează ceva mai
mult deoarece comenzile JavaScript vor fi citite de navigatorul Web și procesate atunci când user-
ul apelează la acele funcții (prin completare de formulare, apăsare de butoane, etc). Avantajul
principal este faptul că putem mult mai ușor să actualizăm codul sursă.
4. JavaScript este un limbaj flexibil - în aceasta privință limbajul diferă radical de C++ sau Java. În
JavaScript putem declara o variabilă de un anumit tip, sau putem lucra cu o variabilă deși nu-i
cunoaștem tipul specificat înainte de rulare.
5. JavaScript este bazat pe obiecte - JavaScript nu este un limbaj de programare orientat obiect, ca
Java, ci mai corect, este "bazat pe obiecte"; modelul de obiect JavaScript este bazat pe instanță și
nu pe moștenire.
6. JavaScript este condus de evenimente - mare parte a codului JavaScript răspunde la evenimente
generate de utilizator sau de sistem. Obiectele HTML, cum ar fi butoanele, sunt îmbunătățite
pentru a accepta handlere de evenimente.
7. JavaScript nu este Java - Cele doua limbaje au fost create de companii diferite, motivul
denumirii asemănătoare este legat doar de marketing.
8. JavaScript este multifuncțional - limbajul poate fi folosit într-o multitudine de contexte pentru a
rezolva diferite probleme: grafice, matematice, și altele.
9. JavaScript evoluează - limbajul evoluează, fapt pozitiv care însă poate genera și probleme,
programatorii trebuind să verifice permanent ce versiune să folosească pentru ca aplicațiile să
poată fi disponibile unui număr cât mai mare de utilizatori de browsere diferite.
10. JavaScript acoperă contexte diverse - programarea cu acest limbaj este îndreptată mai ales către
partea de client, dar putem folosi JavaScript și pentru partea de Server. JavaScript este limbajul
nativ pentru unele instrumente de dezvoltare web, ca Borland IntraBuilder sau Macromedia
Dreamweaver.
Observație: În exemplele vechi se utiliza atributul type pentru a defini limbajul în care este scris
scriptul. Atributul type nu este necesar, JavaScript este limbajul de scripting implicit în HTML.
Pentru inserarea script-urilor în documente HTML pot fi folosite cele 4 metode prezentate mai jos:
169
Metoda 1 – plasarea script-ului în antet-ul paginii (între <head> şi </head>);
Metoda 2 – plasarea script-ului în corpul paginii (între <body> şi </body>);
Metoda 3 – utilizarea fişierelor sursă externe;
Metoda 4 – crearea unui gestionar de evenimente.
<html> <head>
<script>
function message()
{
alert("Aceasta caseta de alertare este apelata și afisata cind are loc evenimentul onload");
}
</script>
</head>
<body onload="message()">
<h3>Casetele de alertare</h3> <hr/>
</body> </html>
<html> <head>
<script src="functie.js"></script>
</head>
<body >
<p onclick="afisare()"> Apasa aici!</p>
</body> </html>
170
Conţinutul fişierului functie.js
function afisare() {
document.write("<h2>Imi place să fiu asa cum sunt</h2>");}
Crearea unui gestionar de evenimente
Nu este obligatoriu ca toate script-urile JavaScript să se găsească în interiorul tag-urilor <script> ...
</script>. Puteţi apela, de asemenea la script-uri sub forma gestionarilor de evenimente, care indică
navigatorului cum să reacţioneze atunci când se produc anumite evenimente.
În exemplu de mai jos s-a creat un script care afişează un mesaj cu ajutorul gestionarului de evenimente
onClick.
Exemplu
<html> <head> </head>
<body >
<p onclick="alert('Imi place să fiu asa cum sunt')"> Apasa aici!</p>
</body> </html>
Utilizarea window.alert ()
Putem folosi o fereastră de alertare pentru a afișa date.
<!DOCTYPE html><html><body>
<h1>Prima mea pagina WEB.</h1>
<p>Primul meu paragraf.</p>
<script>
window.alert(5 + 6);
</script>
</body></html>
171
Utilizarea document.write ()
Pentru testare se recomandă de folosit metoda document.write ().
<!DOCTYPE html><html>
<body><h1>Prima mea pagina WEB.</h1>
<p>Primul meu paragraf.</p>
<script>
document.write(5 + 6);
</script>
</body></html>
Utilizarea metodei document.write () după ce este complet încărcat un document HTML, șterge toate
elementele HTML existente:
<!DOCTYPE html><html><body>
<h1>Prima mea pagina WEB.</h1>
<p>Primul meu paragraf.</p>
<button onclick="document.write(5 + 6)">Click aici!</button
</body></html>
Observație: document.write () este o metodă ce ar trebui să fie folosită numai pentru testare.
Utilizarea innerHTML
Pentru a accesa un element HTML, JavaScript poate utiliza metoda document.getElementById (id).
Atributul id definește elementul HTML. Proprietatea innerHTML definește conținutul HTML:
Utilizarea console.log ()
În browser-ul dvs., puteți utiliza metoda console.log () pentru a afișa date. Activați consola browserului cu
F12, și selectați "Console" din meniu.
172
Comentarii JavaScript
Comentariile pot fi adăugate pentru a explica codul sau a-l face mai uşor de citit. Comentariile care se
scriu pe o singură linie încep cu //.
În exemplul următor, comentariile tip linie sunt folosite pentru a explica codul:
<html> <body>
<script>
// Scrie un titlu:
document.write("<h1>Acesta este un titlu</h1>");
// Scrie doua paragrafe:
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt paragraf.</p>");
</script>
</body> </html>
Comentarii multi-linie
Aceste comentarii încep cu /* şi se încheie cu */, ca în exemplul următor:
<html> <body>
<script>
/*
Codul urmator va scrie în pagina
un titlu și doua paragrafe
*/
document.write("<h1>Acesta este un titlu</h1>");
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt paragraf.</p>");
</script>
</body> </html>
Prin definiţie, numerele în octal şi în hexazecimal sunt numere întregi care sunt exprimate într-un sistem
de numeraţie cu baza 8, respectiv baza 16. În JavaScript un număr întreg octal este precedat de zero iar un
număr hexazecimal este precedat de caracterele ”0x” sau ”0X”.
Observaţii:
JavaScript recunoaşte numerele întregi (în baza 10, pozitive sau negative) cuprinse între: +/–
1.7976931348623157 E 308 şi +/–5 E – 324.
Un număr întreg hexazecimal (hexadecimal, în limba engleză) începe în mod obligatoriu cu 0X sau 0x
şi este compus din următoarele simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Putem utiliza
majuscule sau minuscule.
Un număr întreg octal începe obligatoriu cu 0 (zero) şi este compus din următoarele simboluri:0, 1, 2,
3, 4, 5, 6, 7
174
Un număr în virgulă flotantă este în baza 10. El poate fi pozitiv sau negativ şi poate conţine zecimale.
El poate de asemenea include un exponent pozitiv sau negativ, prin E. Separatorul zecimal este
întotdeauna punctul. JavaScript recunoaşte numerele cuprinse între: +/–1.7976931348623157 E 308 şi
+/–5 E –324.
Variabile JavaScript
De obicei, limbajele de programare cer să definiţi tipul de date pe care-l va reprezenta o variabilă, în plus
se generează o eroare atunci când încercaţi să-i atribuiţi variabilei un alt tip de date. Din fericire, aşa ceva
nu se întâmplă în JavaScript, care este un limbaj flexibil. Variabilele JavaScript pot accepta oricând un
nou tip de date, fapt care duce la modificarea tipului variabilei.
Reguli pentru numele variabilelor JavaScript:
Numele este case-sensitive (y şi Y sunt două variabile diferite)
Numele trebuie să înceapă cu o literă sau cu liniuţa de subliniere (underscore)
Exemplu - Valoarea unei variabile se poate modifica în timpul execuţiei scriptului. Putem referi variabila
prin nume pentru a-i afişa sau modifica conţinutul, ca în exemplul următor:
<html> <body>
<h3>Declararea, initializarea, atribuirea și afisarea unei variabile</h3> <hr/>
<script>
var prenume;
prenume="Mihai";
document.write("<b>Numele variabilei</b>: prenume");
document.write("<br/>");
document.write("<b>Valoare initiala</b>: "+ prenume);
document.write("<br/>");
prenume="Adrian";
document.write("<b>Valoare dupa atribuire</b>: "+ prenume);
</script>
</body> </html>
175
După declarare, variabila nu conţine valori (este vidă). Puteţi să iniţializaţi o variabilă chiar în momentul
declarării: var x=8; var prenume="Matei";
Observație: când atribuiţi unei variabile o valoare de tip text, textul trebuie scris între ghilimele.
Dacă atribuiţi valori unei variabile care nu a fost încă declarată, ea va fi declarată automat.
Declaraţiile:
x=8; prenume="Matei";
au acelaşi efect cu declaraţiile:
var x=8; var prenume="Matei";
Operatorii aritmetici
Sunt folosiţi pentru a efectua operaţii aritmetice cu variabile şi/sau valori. Dacă y=5, tabelul următor
prezintă operatorii aritmetici:
Operator Descriere Exemplu Rezultat
+ adunare x=y+2 x=7
- scădere x=y-2 x=3
* inmulţire x=y*2 x=10
/ impărţire x=y/2 x=2.5
% modulo (restul impărţirii întregi) x=y%2 x=1
Operatorii de atribuire
Sunt folosiţi pentru a atribui valori variabilelor JavaScript. Dacă x=10 şi y=5, tabelul următor prezintă
operatorii de atribuire:
Operator Exemplu Echivalent cu Rezultat
= x=y x=5
+= x+=y x=x+y x=15
-= x-=y x=x-y x=5
*= x*=y x=x*y x=50
/= x/=y x=x/y x=2
%= x%=y x=x%y x=0
176
Operatorul + utilizat pentru şiruri de caractere
Acest operator poate fi utilizat şi pentru a concatena variabile tip şir de caractere (string sau text).
Exemplu:
<!DOCTYPE html> <html> <body>
<p>Operatorul + utilizat pentru şiruri de caractere.</p>
<script>
var txt1 = "Ce mai";
var txt2 = "faci azi?";
document.write(txt1 + txt2);
</script>
</body> </html>
Operatorii de comparare
Operatorii de comparare sunt utilizaţi în construcţii logice pentru a verifica egalitatea sau diferenţa dintre
două variabile sau valori. Dacă x=5, tabelul următor prezintă operatorii de comparare.
Operatorii logici
Operatorii logici sunt utilizaţi pentru a determina relaţia logică dintre variabile sau valori. Dacă x=6 şi
y=3, tabelul următor prezintă operatorii logici:
Operator Descriere Exemple
&& și (x < 10 && y > 1) este adevărat
178
|| sau (x==5 || y==5) este fals
! not !(x==y) este adevărat
Operatorul condiţional(ternar)
Acest operator atribuie o valoare unei variabile în funcţie de o anumită condiţie.
Sintaxă:
variabila=(conditie)?valoare1:valoare2
<!doctype html><html><head>
<title>Operatorul ternar ?</title>
</head>
<body>
<script>
var a=4;
document.write(
a <= 5 ?
"a este mai mic și egal ca 5" :
"a este mai mare ca 5"
)
</script>
</body></html>
Exemplul 2:
<html> <body>
<script>
var x=5; y=7;
document.write("x=2 y=3");
document.write("<br />");
document.write("Calculati elementul maxim.");
document.write("<br />");
document.write("Expresia conditionala este:");
document.write(" (x>y)?max=x:max=y");
document.write("<br />");
document.write("Rezultatul este: ",(x>y)?"max=x":"max=y");;
</script>
</body> </html>
Operatorul typeof
Operatorul typeof returnează tipul de date conținut de operandul său. Tipurile de date pe care le poate
returna sunt:
string – pentru şiruri de caractere
number – pentru numere
function – pentru functiile JavaScript
object – pentru obiectele JavaScript
Tabelul următor prezintă caracterele speciale ce pot fi inserate într-un text cu ajutorul caracterului
backslash:
Cod Ieşire
\' apostrof
\" ghilimele
\& ampersand
\\ backslash
\n linie nouă
\r retur de car
\t tab
\b backspace
\f form feed
180
Casete Popup
JavaScript are trei tipuri de casete popup: caseta Alert, caseta Confirm şi caseta Prompt.
Caseta Alert
O casetă de alertă se utilizează atunci doriţi să fiţi siguri că o anumită informaţie ajunge în atenţia
utilizatorului. când o casetă de alertă este afişată, utilizatorul va trebui să acţioneze butonul "OK" pentru
a putea continua.
Sintaxă:
alert("...un text....");
Exemplu:
<html> <head>
<script>
function afiseaza_alert()
{
alert("Sunt o caseta de alertare!");
}
</script>
</head>
<body>
<h3>La apasarea butonului va fi apelata o functie care afiseaza caseta alert</h3> <hr/>
<input type="button" onclick="afiseaza_alert()" value="Apasa" />
</body> </html>
Caseta Confirm
O casetă de confirmare se utilizează atunci când doriţi ca utilizatorul să verifice sau să accepte ceva. Când
caseta de confirmare este afişată, utilizatorul va trebui să acţioneze butonul "OK" sau butonul "Cancel"
pentru a putea continua. Dacă utilizatorul acţionează butonul "OK", caseta returnează valoarea true, dacă
acţionează butonul "Cancel", caseta returnează valoarea false.
Sintaxă:
confirm("...un text....");
Exemplu:
<html> <head>
<script>
function afiseaza_confirm()
{
var r=confirm("Apasati un buton");
if (r==true)
{
document.write("Ati apasat butonul OK!");
}
else
{
document.write("Ati apasat butonul Cancel!");
}
}
</script>
181
</head>
<body>
<h3>La apasarea butonului va fi apelata o functie care afiseaza caseta confirm și verifica ce buton ati
apasat</h3>
<hr/>
<input type="button" onclick="afiseaza_confirm()" value="Apasa" />
</body> </html>
Caseta Prompt
Această casetă se utilizează atunci când doriţi ca utilizatorul să introducă o anumită valoare înainte de a
accesa pagina. Când caseta prompt este afişată, utilizatorul va trebui să acţioneze butonul "OK" sau
butonul "Cancel" pentru a putea continua după ce introduce valoarea solicitată. Dacă utilizatorul
acţionează butonul "OK", caseta returnează valoarea true, dacă acţionează butonul "Cancel", caseta
returnează valoarea false.
Sintaxă:
prompt("....un text....","valoare_implicita");
Exemplu:
<html>
<head>
<script>
function afiseaza_prompt()
{
var name=prompt("Va rog să va introduceti numele","");
if (name!=null && name!="")
{
document.write("Buna ziua " + name + "! Ce mai faci?");
}
}
</script>
</head>
<body>
<h3>La apasarea butonului va fi apelata o functie care afiseaza caseta prompt</h3> <hr/>
<input type="button" onclick="afiseaza_prompt()" value="Apasa" />
</body>
</html>
Observație Dacă doriţi ca textul dintr-o casetă să fie afişat pe mai multe linii, procedaţi ca în exemplul
următor:
Blocuri JavaScript
Instrucţiunile JavaScript pot fi grupate în blocuri care se scriu între acolade. Instrucţiunile dintr-un bloc
vor fi executate împreună. În acest exemplu, instrucţiunile care scriu un titlu şi două paragrafe, au fost
grupate împreună într-un bloc.
<html> <body>
<script>
{
document.write("<h1>Acesta este un titlu</h1>");
document.write("<p>Acesta este un paragraf.</p>");
document.write("<p>Acesta este un alt paragraf.</p>");
}
</script>
</body> </html>
În mod normal, un bloc este folosit pentru a grupa un grup de instrucţiuni într-o funcţie sau într-o condiţie
(blocul va fi executat dacă o anumită condiţie este satisfăcută).
183
Instrucţiunile condiţionale
Adesea, când scrieţi cod JavaScript, trebuie să realizaţi operaţii diferite în funcţie de decizii diferite.
Pentru a realiza acest lucru, folosiţi în cod instrucţiunile condiţionale.
În JavaScript există următoarele instrucţiuni condiţionale:
if – folosiţi această instrucţiune dacă un cod trebuie executat când o condiţie este adevărată
if...else - folosiţi această instrucţiune pentru a executa un cod când o condiţie este adevărată şi alt
cod dacă condiţia este falsă
if...else if....else – folosiţi această instrucţiune pentru a selecta unul din mai multe blocuri de cod
pentru a fi executat
switch - folosiţi această instrucţiune pentru a selecta unul din mai multe blocuri de cod pentru a fi
executat
Instrucţiunea if
Sintaxă:
if (conditie) {
cod ce trebuie executat dacă conditia este adevarată
}
Exemplu:
<html>
<body>
<h3>Scriptul va afisa un mesaj dacă ora<10 folosind instructiunea if</h3> <hr/>
<script>
var d = new Date();
var time = d.getHours();
if (time < 10)
{
document.write("<b>Buna dimineata</b>");
}
</script>
</body>
</html>
Instrucţiunea if…else
Sintaxă:
if (conditie) {
cod executat dacă conditia este adevarată
}
else {
cod executat dacă conditia este falsa
}
Exemplu:
<html> <body>
<h3>Scriptul va afisa un mesaj sau altul în functie de ora, cu instructiunea if..else</h3> <hr/>
184
<script>
var d = new Date();
var time = d.getHours();
if (time < 10)
{
document.write("<b>Buna dimineata</b>");
}
else
{
document.write("<b>Buna ziua</b>");
}
</script> </body> </html>
Exemplu:
<html>
<body>
<h3>Scriptul va afisa unul din trei mesaje în functie de ora, cu instructiunea if-else-if-else</h3>
<hr/>
<script>
var d = new Date();
var time = d.getHours();
if (time<10)
{
document.write("<b>Buna dimineata</b>");
}
else if (time>=10 && time<17)
{
document.write("<b>Buna ziua</b>");
}
else
{
document.write("<b>Buna seara</b>");
}
</script> </body> </html>
185
Exemplu:
Link-ul din exemplul următor va deschide Google sau Yahoo
<html> <body>
<h3>Scriptul afiseaza în mod aleator unul din doua link-uri, folosind if..else</h3> <hr/>
<script>
var r=Math.random();
if (r>0.5)
{
document.write("<a href='http://www.google.com'>Google!</a>");
}
else
{
document.write("<a href='http://www.yahoo.com'>Yahoo!</a>");
}
</script> </body> </html>
Instrucţiunea switch
Sintaxă:
switch(exp) {
case val-1: executa bloc-1; break;
case val-2: executa bloc-2; break;
......
default: cod executat dacă exp este diferit de val-1, val-2,....
}
Exemplu:
<html>
<body>
<h3>Scriptul utilizează instructiunea switch</h3>
<hr/>
<script>
var d = new Date();
theDay=d.getDay();
switch (theDay)
{
case 5: document.write("<b>Vineri</b>"); break;
case 6: document.write("<b>Sambata</b>"); break;
case 0: document.write("<b>Duminica</b>"); break;
default: document.write("<b>Astept weekend-ul!</b>");
}
</script> </body> </html>
Exerciții:
1. Să se afle minimum şi maximum din trei numere date a, b, c, cu ajutorul instrucțiunii if else.
2. Sunt date trei numere a, b, c. De afişat numerele în ordine crescătoare(descrescătoare).
186
Instrucţiuni repetitive
Instrucţiunile repetitive sunt utilizate pentru a executa o secvenţă de cod în mod repetat. În JavaScript
putem folosi urmatoarele instrucţiuni repetitive:
for – repetă o secvenţă de cod de un număr precizat de ori
for...in – parcurge elementele unui tablou sau a enumera proprietăţile unui obiect
while – repetă o secvenţă de cod cît timp o condiţie este adevărată
do...while – întîi execută o dată secvenţă de cod apoi o repetă cît timp o condiţie este adevărată
Instrucţiunea for
Instrucţiunea for se utilizează când se cunoaşte dînainte numărul de iteraţii dorit pentru secvenţa de cod.
Sintaxă:
for (var=val_initiala; var<=val_finala; var=var+increment)
{
codul ce trebuie executat
}
Exemplu:
În exemplul următor, instrucţiunea for începe cu i=0, corpul instrucţiunii se repetă cît timp i≤50 şi
contorul i este incrementat cu 2 la fiecare iteraţie. Vor fi afişate numerele pare ≤50.
Observații: Valoarea increment poate fi şi negativă şi comparaţia se poate realiza şi cu orice alt
operator de comparare.
<html> <body>
<h3>Utilizarea instructiunii for</h3> <hr/>
<script>
document.write("Numerele pare mai mici sau egale cu 50: "+"<br/>");
var i=0;
for (i=0;i<=50;i+=2)
{
document.write(i +" ");
}
</script>
</body> </html>
Exemplu: În acest exemplu, instrucţiunea for este utilizată pentru a afişa cele 6 titluri HTML.
<html> <body>
<h3>Afisarea titlurilor HTML cu instructiunea
for</h3> <hr/>
<script>
for (i = 1; i <= 6; i++)
{
document.write("<h" + i + ">Aceste este un titlu " + i);
document.write("</h" + i + ">");
}
187
</script> </body> </html>
Instrucţiunea for...in
Această instrucţiune este utilizată pentru a parcurge elementele unui tablou sau a enumera proprietăţile
unui obiect.
Sintaxă:
for (variabila în obiect) {
cod ce trebuie executat
}
Observații: Codul din corpul instrucţiunii este executat cîte o dată pentru fiecare element din tablou
sau proprietate. Argumentul variabila poate fi o variabilă, un element de tablou sau o proprietate a
unui obiect.
Exemplu:
Instrucţiunea for..in este utilizată pentru a parcurge elementele unui tablou:
<html> <body>
<h3>Parcurgerea elementelor unui tablou cu instructiunea for..in</h3> <hr/>
<script>
var x;
var pets = new Array();
pets[0] = "Pisica";
pets[1] = "Caine";
pets[2] = "Papagal";
pets[3] = "Hamster";
document.write("Valorile memorate în tablou sunt:"+"<br/>");
for (x în pets)
{
document.write(pets[x] + "<br />");
}
</script>
</body> </html>
Exemplu:
Instrucţiunea for..in este utilizată pentru a parcurge proprietăţile unui obiect:
<!DOCTYPE html> <html> <body>
<script>
var txt = "";
var persoana = {nume:"Ion", prenume:"Cheni", virsta:25};
var x;
for (x în persoana) {
txt += persoana[x] + " ";
}
document.write(txt);
</script> </body> </html>
188
Instrucţiunea while
Instrucţiunea execută în mod repetat o secvenţă de cod, cît timp o condiţie este adevărată.
Sintaxă:
while (var<=val_finala) {
codul ce trebuie executat
}
Exemplu:
<html> <body>
<h3>Utilizarea instructiunii while</h3> <hr/>
<script>
document.write("Numerele naturale mai mici egale cu 5:"+"<br/>");
var i=0;
while (i<=5)
{
document.write(i);
document.write("<br/>");
i++;
}
</script> </body> </html>
Instrucţiunea do...while
Instrucţiunea do...while este o variantă a instrucţiunii while. Secvenţa de instrucţiuni va fi executată în
mod sigur o dată, apoi în mod repetat, cît timp condiţia specificată este adevărată.
Sintaxă:
do {
codul ce trebuie executat
}
while (var<=val_finala);
Exemplu:
În acest exemplu vor fi afişate numerele impare ≤50.
<html>
<body>
<h3>Utilizarea instructiunii do-while</h3> <hr/>
<script>
document.write("Numerele impare mai mici sau egale cu 50:"+"<br/>");
var i=1;
do
{
document.write(i + " ");
189
i+=2;
}
while (i<=50);
</script>
</body>
</html>
Exerciții:
1. Sunt date numerele K şi N(N>0). De afişat de N ori numărul K;
2. De elaborat un script ce va afişa tabla înmulțirii;
3. De elaborat un script ce va afişa tabla de şah;
4. De elaborat un script ce va calcula n!;
5. De elaborat un script ce va calcula numărul exact de ani, luni şi zile de la ziua de naştere.
6. Să se scrie un program care să afişeze următoarele valori:
1*9 + 2 = ?
12*9 + 3 = ?
123*9 + 4 = ?
.................
123456789*9 + 10 = ?
7. Să se scrie un program care să afişeze următoarea "piramidă" de numere:
1
123
12345
..............
1 ......(2n-1)
Instrucţiunea continue
190
Instrucţiunea întrerupe execuţia iteraţiei curente şi sare la următoarea iteraţie. În exemplul următor,
valoarea 3 nu va fi afişată (este sărită cu instrucţiunea continue).
<html> <body>
<h3>Utilizarea instructiunii continue</h3> <hr/>
<script>
document.write("Numerele naturale mai mici sau egale cu 10:"+"<br/>");
var i=0
for (i=0;i<=10;i++)
{
if (i==3)
{
document.write("valoare sarita cu continue"+"<br/>");continue;
}
document.write(i);
document.write("<br />");
}
</script> </body> </html>
Instrucţiunea with
Instrucţiunea with simplifică scrierea programelor JavaScript sau reduce pe cât posibil cantitatea de cod
JavaScript. Instrucţiuneawith permite specificarea unui obiect şi este urmat de un bloc de instrucţiuni
plasat între acolade. Pentru fiecare din instrucţiunile blocului, proprietăţile menţionate fără ca obiectul
corespunzător să fie indicat se referă la obiectul specificat prin with.
Sintaxă:
with (obiect) { cod JavaScript }
Exemplu 1:
În următorul exemplu este apelată metoda document.write() de patru ori
<html><head></head>
<body>
<script>
document.write("Pe trotuar, alături saltă"+"<br />");
document.write("Două fete vesele,"+"<br />");
document.write("Zău că-mi vine să las baltă,"+"<br />");
document.write("Toate interesele"+"<br />");
</script></body> </html>
Exemplu 2:
Acelaş exemplu, numai că cuvântul cheie with elimină referinţele multiple la obiectul document
<html><head></head>
<body>
<script>
with(document){
write("Pe trotuar, alături saltă"+"<br />");
write("Două fete vesele,"+"<br />");
191
write("Zău că-mi vine să las baltă,"+"<br />");
write("Toate interesele"+"<br />");
}
</script></body> </html>
Observație: Pentru un cod scurt interesul utilizării instrucţiunii with nu este evident, dar când
trebuie să accesăm acelaşi obiect în cadrul unei proceduri sau când utilizăm un obiect predefinit
precum Math, with vă ajută să câştigaţi foarte mult timp.
4.6. Funcţii
O funcţie va fi executată când are loc un eveniment sau când este apelată. Dacă doriţi ca browserul să nu
execute un script atunci când pagina se incarcă, puteţi scrie scriptul într-o funcţie. O funcţie poate fi
apelată din orice punct al paginii, sau chiar din alte pagini, dacă funcţia este scris într-un fişier JS extern.
Funcţiile JS pot fi scrise în secţiunea <head> sau în secţiunea <body> a documentului. Totuşi, pentru a fi
siguri că funcţia este încărcată în browser înainte de a fi apelată, este recomandat să o scrieţi în secţiunea
<head>.
Observație: Chiar dacă funcţia nu are parametri, parantezele rotunde de după numele funcţiei
trebuie să fie prezente.
Exemplu:
<html> <head> <script>
function afiseaza_mesaj()
{
alert("Bine ati venit!");
}
</script>
</head> <body>
<h3>La apasarea butonului este apelata o functie JS care afiseaza caseta alert</h3> <hr/>
<form>
<input type="button" value="Apasati!" onclick="afiseaza_mesaj()" />
</form>
</body> </html>
192
Dacă linia de cod alert("Bine ati venit!") din exemplul anterior nu ar fi fost scrisă în corpul unei funcţii,
codul ar fi fost executat imediat ce linia respectivă ar fi fost încărcată în browser. Deoarece codul a fost
inclus într-o funcţie, el nu va fi executat decit atunci când utilizatorul acţionează butonul şi este apelată
funcţia afiseaza_mesaj().
Instrucţiunea return
Instrucţiunea return este folosită pentru a specifica valoarea returnată de o funcţie şi trebuie inclusă în
orice funcţie care returnează o valoare.
În exemplul următor, funcţia suma returnează suma celor doi parametri de intrare:
<html> <head>
<script>
function suma(a,b)
{
return a+b;
}
</script>
</head>
<body>
<h3>Suma urmatoare este calculata și returnata de o functie</h3> <hr/>
<script>
document.write("7+9="+suma(7,9));
</script> </body> </html>
Exemple:
Exemplul 1
Ilustrează cum se poate transmite o variabilă unei funcţii şi cum poate fi folosită respectiva variabilă în
corpul funcţiei.
<html> <head>
<script>
function functia_1(text)
{
alert(text);
}
</script>
</head>
<body>
<h3>Functii JavaScript</h3> <hr/>
<form>
193
<input type="button" onclick="functia_1('Bune ati venit!')" value="Apasati">
</form>
<p>Cind apasati butonul, va fi apelata o functie cu textul "Bine ati venit!" drept parametru. Functia
va afisa parametrul cu o caseta de alertare.</p>
</body> </html>
Exemplul 2
Ilustrează cum poate fi folosit rezultatul returnat de o funcţie.
<html> <head> <script>
function functie_2()
{
return ("Bine ati venit!");
}
</script>
</head>
<body>
<h3>Textul urmator este returnat de o functie apelata direct din document.write()</h3> <hr/>
<script>
document.write(functie_2())
</script> </body> </html>
Exemplul 3
<html> <head> <script>
function salut(txt)
{
alert(txt);
}
</script>
</head>
<body>
<h3>Utilizarea functiilor JavaScript</h3> <hr/>
<form>
<input type="button" onclick="salut('Buna dimineata!')" value="Dimineata">
<input type="button" onclick="salut('Buna seara!')" value="Seara">
</form>
<p>Cind apasati unul dintre butoane, va fi apelata o functie care afiseaza mesajul primit ca
parametru.</p>
</body>
</html>
194
4.7. Evenimentele JavaScript.
195
<input type="button" value="onmouseover" onmouseover="alert('eveniment la mouseover')" />
</body> </html>
Exemplul 2
În exemplul de mai jos, am utilizat o functie care permite afişarea coordonatelor cursorului unui mouse în
mişcare.
<!DOCTYPE html> <html><head>
<title>Coordonatele cursorului</title>
</head>
<body>
<form name=formular> Coordonatele cursorului<br /><br />
X <input type=text name=x value=""><br />
Y <input type=text name=y value="">
</form>
<script>
var InternetExplorer = document.all?true:false;
if (!InternetExplorer)
document.captureEvents(Event.mousemove);
document.onmousemove = pozitie;
function pozitie(poz)
{
var x;
var y;
if (!InternetExplorer)
{
x = poz.pageX;
y = poz.pageY;
}
if (InternetExplorer)
{
x = event.clientX + document.body.scrollLeft;
y = event.clientY + document.body.scrollTop;
}
document.formular.x.value=x;
document.formular.y.value=y;
return true; }
</script>
</body> </html>
Exemple:
Exemplul 1
196
<!DOCTYPE html> <html><body>
<input type="text" onkeydown="alert('eveniment la onkeydown')" />
<p>
<input type="text" onkeyup="alert('eveniment la onkeyup')" />
<p>
<input type="text" onkeypress="alert('eveniment la onkeypress')" />
</body></html>
Exemplul 2
<!DOCTYPE html> <html><head><title>Evenimente</title>
</head>
<body>
<form>
<input type=button value="apasati orice tasta" onKeyPress="window.alert('Codul tastei apasate este:'
+window.event.keyCode)">
</form>
</body></html>
Exemplul 3
<!DOCTYPE html> <html><head><title>Evenimente</title>
</head>
<script>
function urmatorul(elment,text) {
if (text.length==elment.maxLength) {
next=elment.tabIndex;
if (next<document.form3.elements.length) {
document.form3.elements[next].focus();
}
}
}
</script>
</head><body>
- Cursorul se muta automat în urmatoarea caseta atunci când s-a completat tot campul
precedent (cand se ajunge la lungimea stabilita a campului, aici 4 caractere) <br>
<form name="form3">
<input size="4" tabindex="1" name="field" maxlength="4" onkeyup="urmatorul(this,this.value)">
<input size="4" tabindex="2" maxlength="4" onkeyup="urmatorul(this,this.value)">
<input size="4" tabindex="4" maxlength="4" onkeyup="urmatorul(this,this.value)">
</form>
</body>
</html>
Functia urmatorul(elment,text), are doua argumente: element (care, prin apel, se referă la caseta input)
şi text (se referă la valoarea casetei).
În apelul funcţiei: urmatorul(this,this.value), this se referă la obiectul curent (reprezintă primul
argument) iar al doile argument this.value reprezintă valoarea obiectului curent (valoarea din câmp).
197
Observaţi folosirea evenimentului onKeyup, pentru a se trece la urmatorul câmp atunci când s-a
completat ultimul caracter din caseta precedentă.
Pentru a înţelege mai bine puteţi să înlocuiţi onkeyup cu onkeydown pentru a vedea diferenţa.
Exemplu
<!DOCTYPE html> <html> <body>
<script>
function g()
{
alert("Salut!");
}
</script>
</head>
<body onLoad="g()">
</script>
</body> </html>
Exemple:
Exemplul 1
În exemplul de mai jos, am utilizat o funcţie care preia o valoare introdusă în formular, o verifică şi
afişează un mesaj corespunzător. Dacă nu a fost introdus un număr, functia isNaN() va returna valoarea
true, iar pe monitor va apărea mesajulIntroduceti un număr!. Mesajele afişate vor apare pe ecran numai
dacă introducem altceva decît un număr pozitiv. Evenimentul onBlur îşi face efectul, adică transmite
valoarea introdusă de către utilizator, funcţiei verificare, dacă dăm click în afara zonei de text a
formularului.
<!DOCTYPE html> <html> <head>
<title> onBlur </title>
<script>
198
function verificare(form)
{
var x=0;
x=document.formular.date.value;
y=isNaN(x);
if (y==true)
alert("Introduceti un număr!");
else
if (x<0)
{
alert("Va rog să introduceti un număr pozitiv!");
}
}
</script>
</head>
<body>
<h3>Introduceti un număr pozitiv:</h3>
<p>Pentru verificare, puteți introduce altceva
<br />
<form name="formular">
<input type="text" name="date" value="" size="20" onBlur='verificare(this.form)'>
</form>
</body> </html>
Exemplul 2
În exemplul de mai jos, am utilizat o functie care preia şirul de caractere introdus în formular şi il
transformă în şir scris cu majuscule.
<!DOCTYPE html> <html> <head><title>onChange</title>
<script>
function majuscule(a)
{
a.value = a.value.toUpperCase();
}
</script>
</head>
<body>
<h3>Introduceti numele și prenumele:</h3>
<form name="formular">
<table>
<tr>
<td>Numele:</td>
<td><input type="text" name="x" value="" size="20" onChange="majuscule(this)"></td>
</tr>
<tr>
<td>Prenumele:</td>
<td><input type="text" name="y" value="" size="20" onChange="majuscule(this)"></td>
199
</tr>
</table>
</form>
</body> </html>
Exemplul 3
În următorul exemplu, am utilizat o funcţie care afişează un mesaj, în cazul în care selectăm caracterele
scrise într-un câmp de tip text.
<!DOCTYPE html> <html><head>
<title>onSelect</title>
</head>
<script>
function f()
{
alert("Felicitari! \n Ati selectat textul.");
}
</script>
<body>
<h3>Selectati textul de mai jos!</h3>
<form name="formular">
<input type="text" name="data" value="Textul de mai jos :)" size=20 onSelect='f()'>
</form>
</body></html>
Exemplul 4
În exemplul de mai jos am creat un formular ce permite calcularea unei sume, pe măsură ce sunt introduse
cifrele în câmpurile formularului.
<!DOCTYPE html> <html><title>Exemplu de formular</title>
<style>
body {
background-color: #B3FFB3;
}
.titlul { font-family: "Aldine721 Lt BT", Adolescence, "Alexei Copperplate";
font-size: 18px;
font-weight: bolder;
color: #006600;
}
</style>
<script>
function PornireCalculare()
{
interval = setInterval("Calculare()",1);
}
function Calculare()
{
primul = document.adunare.x1.value;
200
alDoilea = document.adunare.x2.value;
document.adunare.x3.value = (primul * 1) + (alDoilea * 1);
}
function Oprire()
{
clearInterval(interval);
}
</script>
</head>
<body>
<p class="titlul">Introduceti numere, pentru a le aduna
</p><br />
<form name="adunare">
<input type=text name="x1" value="" onFocus="PornireCalculare();" onBlur="Oprire();" size="10">
+
<input type=text name="x2" value="" onFocus="PornireCalculare();" onBlur="Oprire();" size="10">
=
<input type=text name="x3" size="10">
</form></body></html>
Exemplul 5
În exemplul de mai jos am creat un formular ce permite transmiterea unui comentariu. La activarea
butonului de expediere a datelor apare o caseta de alertare.
<!DOCTYPE html><html>
<title>Evenimente</title>
<body>
<form onSubmit="window.alert('Multumim! Comentariul Dvs va fi analizat!')">
Comentarii:
<textarea cols=25 rows=5>
</textarea>
<input type=submit value=ok>
</form>
</body></html>
201
Trebuie de reţinut că un obiect este de fapt, un tip special de date care are proprietăţi şi metode.
Proprietăţi
Proprietăţile sunt valori asociate cu un obiect.
În exemplul următor, utilizăm proprietatea length a obiectului String (şir de caractere) pentru a determina
numărul de caractere memorate într-un şir:
<html>
<head></head>
<body>
<script>
var txt="Bine ati venit!";
document.write(txt.length);
</body>
</html>
Codul de mai sus va afişa valoarea: 15
Metode
Metodele sunt acţiuni ce pot fi realizate cu un obiect.
În exemplul următor, utilizăm metoda UpperCase() a obiectului String pentru a afişa un text cu litere
mari:
<html><head></head>
<body>
<script>
var txt="Bine ati venit!";
document.write(txt.toUpperCase());
</body></html>
Codul de mai sus va afişa şirul: BINE ATI VENIT!
203
link() Afişează şirul ca hiperlegătură
small() Afişează şirul cu font mic
strike() Afişează şirul ca tăiat
sub() Afişează şirul ca subscript (indice)
sup() Afişează şirul ca superscript (exponent)
Exemple:
Exemplul 1
Ilustrează utilizarea proprietăţii length pentru a determina lungimea unui şir.
<html> <body>
<h3>Obiectul String. Determinarea lungimii unui sir</h3> <hr/>
<script>
var txt="Bine ati venit!";
document.write("Sirul este: "+txt+"<br/>");
document.write("Are lungimea "+txt.length);
</script>
<p><b>Obs.</b>Sirul nu se modifica.</p>
</body> </html>
Exemplul 2
Ilustrează cum se utilizează tagurile HTML pentru a stiliza un şir.
<html> <body>
<h3>Obiectul String. Utilizarea tagurilor HTML pentru stilizarea unui sir.</h3> <hr/>
<script>
var txt="Bine ati venit!";
document.write("<p>Big: " + txt.big() + "</p>");
document.write("<p>Small: " + txt.small() + "</p>");
document.write("<p>Bold: " + txt.bold() + "</p>");
document.write("<p>Italic: " + txt.italics() + "</p>");
document.write("<p>Blink: " + txt.blink() + " (nu functioneaza în IE, Chrome, Safari)</p>");
document.write("<p>Fixed: " + txt.fixed() + "</p>");
document.write("<p>Strike: " + txt.strike() + "</p>");
document.write("<p>Fontcolor: " + txt.fontcolor("Blue") + "</p>");
document.write("<p>Fontsize: " + txt.fontsize(14) + "</p>");
document.write("<p>Subscript: " + txt.sub() + "</p>");
document.write("<p>Superscript: " + txt.sup() + "</p>");
document.write("<p>Link: " + txt.link("http://www.google.com") + "</p>");
</script>
<br/> <br/>
<p><b>Obs.</b>Sirul stilizat nu se modifica!</p>
</body> </html>
204
Exemplul 3
Ilustrează cum se utilizează metoda concat() pentru a concatena şiruri.
Concatenarea a două şiruri:
<html> <body>
<h3>Obiectul String. Concatenarea a doua siruri.</h3>
<hr/>
<script>
var txt1 = "Buna ";
var txt2 = "ziua!";
document.write("Primul sir este: "+txt1+"<br/>");
document.write("Al doilea sir este: "+txt2+"<br/>");
document.write("Sirul concatenat este: "+txt1.concat(txt2)+"<br/>");
</script>
<p><b>Obs.</b>Sirurile concatenate nu se modifica. Rezultatul concatenarii poate fi pastrat într-un
nou sir.</p>
</body> </html>
Exemplul 4
Ilustrează cum se utilizează metoda indexOf() pentru a determina poziţia primei apariţii a unei valori într-
un şir.
<html> <body>
<h3>Obiectul String. Cautarea primei aparitii a unei valori în sir cu indexof().</h3> <hr/>
<script>
var str="Buna ziua!";
document.write("Sirul în care se cauta este: "+str+"<br/>");
document.write("Sirul \"Buna\" apare în sir în pozitia "+str.indexOf("Buna") + "<br />");
document.write("Sirul \"ZIUA\" apare în sir în pozitia "+str.indexOf("ZIUA") + "<br />");
document.write("Sirul \"ziua\" apare în sir în pozitia "+str.indexOf("ziua"));
</script>
205
<p><b>Obs.</b>Sirul nu se modifica în urma cautarii!</p>
</body> </html>
Observații: Dacă valoarea nu apare în şir, valoarea returnată este -1. Şirurile sunt indexate de la 0.
Exemplul 5
Ilustrează cum se utilizează metoda match() pentru a căuta un subşir într-un şir. Metoda returnează
subşirul, dacă este găsit, sau valoarea null, dacă subşirul nu este găsit în şir.
<html> <body>
<h3>Obiectul String. Cauta unui subsir într-un sir cu match().</h3> <hr/>
<script>
var str="Hello world!";
document.write("Sirul în care se cauta este: "+str+"<br/>");
document.write("Sirul cautat: "+"world"+". ");
document.write("Valoarea returnata: "+str.match("world") + "<br />");
document.write("Sirul cautat: "+"World"+". ");
document.write("Valoarea returnata: "+str.match("World") + "<br />");
document.write("Sirul cautat: "+"worlld"+". ");
document.write("Valoarea returnata: "+str.match("worlld") + "<br />");
</script>
<p><b>Obs.</b>Sirul nu se modifica în urma cautarii. Rezultatul poate fi memorat intr-o
variabila.</p>
</body> </html>
Exemplul 6
Ilustrează cum se utilizează metoda replace() pentru a înlocui o secvenţă din şir cu altă secvenţă.
<html> <body>
<h3>Obiectul String. Inlocuirea unei secvente din sir cu replace().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b>Sirul se modifica!</p>
</body> </html>
Exemplul 7
206
Ilustrează cum se foloseşte metoda slice() pentru a extrage dintr-un şir o secvenţă. Metoda returnează şirul
extras sau valoarea -1. În mod normal are două argumente: poziţia din care începe extragerea (primul
caracter are indexul 0) şi, opţional, poziţia în care se încheie extragerea. Dacă al doilea argument lipseşte,
se vor extrage toate caracterele dintre poziţia de început şi sfârşitul şirului. Dacă se folosesc valori
negative, extragerea se va face numărînd înapoi de la sfârşitul şirului.
<html> <body>
<h3>Obiectul String. Extragerea unui subsir dintr-un sir cu slice().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b> Sirul nu se modifica în urma extragerii. Subsirul extras poate fi memorat intr-o
variabila.</p>
</body> </html>
Exemplul 8
Ilustrează utilizarea metodei split() pentru a împărţi un şir în subşiruri pe baza unui caracter separator.
Dacă caracterul separator este omis, se va returna întreg şirul. Dacă caracterul este şirul vid, şirul va fi
împărţit caracter cu caracter. Opţional, se poate preciza şi numărul maxim de împărţiri.
<html> <body>
<h3>Obiectul String. Impartirea unui sir în subsiruri cu split().</h3> <hr/>
<script>
Setarea datei
Putem manevra uşor datele calendaristice folosind metodele obiectului Date.
În exemplul următor, data este setată la 19 februarie 2010:
var myDate=new Date();
myDate.setFullYear(2010,1,19);
if (myDate>today)
{
alert("Astazi este înainte de 19 Februarie 2010");
}
else
{
alert("Astazi este dupa 19 Februarie 2010");
}
208
Metodele obiectului Date
Metodă Descriere
getDate() Returnează ziua din lună (între 1 şi 31)
getDay() Returnează ziua din săptămînă (0-6)
getFullYear() Returnează anul (patru cifre)
getHours() Returnează ora (0-23)
getMilliseconds() Returnează milisecundele (0-999)
getMinutes() Returnează minutele (0-59)
getMonth() Returnează luna (0-11)
getSeconds() Returnează secundele (0-59)
getTime() Returnează numărul de milisecunde scurse de la 1.01.1970
getTimezoneOffset() Returnează diferenţa dintre GMT şi timpul local, în minute
Analizează(parsează) o dată ca şir de caractere şi returnează numărul de
parse()
milisecunde scurse de la 1.01.1970
setDate() Setează data din lună (1-31)
setFullYear() Setează anul (patru cifre)
setHours() Setează ora (0-23)
setMilliseconds() Setează milisecundele (0-999)
setMinutes() Setează minutele (0-59)
setMonth() Setează lunile (0-11)
setSeconds() Setează secundele (0-59)
Setează o dată şi o oră adunînd sau scăzînd un anumit număr de milisecunde
setTime()
la/din 1.01.1970
Converteşte porţiunea corespunzătoare datei calendaristice dintr-un obiect
toDateString()
Date într-un şir de caractere
toString() Converteşte un obiect Date într-un şir de caractere
Converteşte porţiunea corespunzătoarea timpului dintr-un obiect Date într-un
toTimeString()
şir de caractere
valueOf() Returnează valoarea primară a unui obiect Date
Exemple:
Exemplul 1
Ilustrează utilizarea metodei Date() pentru a obţine data curentă.
209
<html> <body>
<h3>Obiectul Date. Obtinerea datei curente cu Date().</h3> <hr/>
<script>
Exemplul 2
Ilustrează utilizarea metodei getTime() pentru a calcula anii scurşi din 1970 pină în prezent.
<html> <body> <h3>Obiectul Date. Utilizarea metodei getTime().</h3>
<hr/>
<script>
var d=new Date();
document.write("Au trecut "+d.getTime() + " milisecunde din 01.01.1970 și până acum.");
</script>
</body> </html>
Exemplul 3
Ilustrează utilizarea metodei setFullYear() pentru a seta o dată specifică.
<html> <body> <h3>Obiectul Date. Setarea datei cu setFullYear().</h3> <hr/>
<script>
Exemplul 4
Ilustrează utilizarea metodei toString() pentru a converti data curentă într-un şir de caractere.
<html> <body> <script>
var d=new Date();
document.write(d.toString());
</script>
</body> </html>
Exemplul 5
Ilustrează utilizarea metodei getDay() şi a unui tablou pentru a scrie denumirea zilei din săptămâna
curentă.
<html> <body> <h3>Obiectul Date. Utilizarea metodei getDay() pentru a determina ziua din
saptamana.</h3> <hr/>
<script>
Exemplul 6
Ilustrează cum se poate afişa un ceas într-o pagină web.
<html> <head> <script>
function ceas()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
//functia urmatoare adauga un zero în fata
//numerelor<10
m=verifica(m);
s=verifica(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout('ceas()',500);
}
function verifica(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
</script>
</head>
<body onload="ceas()">
<h3>Obiectul String. Afisarea unui ceas.</h3> <hr/>
<div id="txt"></div>
</body> </html>
211
4.8.3. Obiectul Array
Un tablou este o variabilă specială care poate păstra la un moment dat mai multe valori de un anumit tip.
Dacă aveţi o listă de elemente, animale de companie de exemplu, aţi putea păstra valorile în variabile
simple, ca în exemplul următor:
pet1="Caine";
pet2="Pisica";
pet3="Papagal";
Desigur, problema se complică dacă aveţi de memorat zeci, sau sute de valori. Cea mai bună soluţie este
să folosiţi tablouri. Un tablou poate reţine toate valorile sub un singur nume şi puteţi accesa fiecare
valoare stocată în tablou folosind numele tabloului şi indexul valorii.
Observații: Dacă în tablou stocaţi valori numerice sau logice, tipul tabloului va fi Number sau
Boolean, în loc de String.
212
constructor Returnează funcţia care a creat prototipul obiectului Array
length Setează sau returnează numărul elementelor stocate în tablou
prototype Permite adăugare de proprietăţi şi metode unui obiect
Exemple:
Exemplul 1
Ilustrează crearea unui tablou, atribuirea de valori şi afişarea elementelor tabloului.
<html> <head>
<h3>Obiectul Array. Crearea unui tablou, initializarea și afisarea elementelor.</h3> <hr/>
<script>
var pets = new Array();
pets[0] = "Pisica";
pets[1] = "Caine";
pets[2] = "Perus";
213
}
</script> </body> </html>
Exemplul 2
Ilustrează utilizarea instrucţiunii for...in pentru a parcurge elementele unui tablou.
<html> <body>
<h3>Obiectul Array. Afisarea elementelor unui tablou cu instructiunea for..in.</h3> <hr/>
<script>
var x;
var pets = new Array();
pets[0] = "Pisica";
pets[1] = "Caine";
pets[2] = "Perus";
Exemplul 3
Ilustrează utilizarea metodei concat() pentru a concatena trei tablouri.
<html> <body> <h3>Obiectul Array. Concatenarea a trei tablouri cu concat().</h3> <hr/>
<script>
document.write("Familia: "+familie);
</script>
<p><b>Obs.</b>Tablourile concatenate nu se modifica. Rezultatul concatenarii este un nou
tablou.</p>
</body> </html>
Exemplul 4
Ilustrează utilizarea metodei join() pentru a concatena toate elementele unui tablou într-un şir de
caractere.
<html> <body>
<h3>obiectul Array. Concatenarea elementelor unui tablou într-un sir de caractere cu join().</h3>
214
<hr/>
<script>
</script>
<p><b>Obs.</b>Tabloul nu se modifica. Sirul concatenat poate fi memorat intr-o variabila.
</body> </html>
Exemplul 5
Ilustrează utilizarea metodei pop() pentru a înlătura ultimul element dintr-un tablou.
<html> <body>
<h3>Obiectul Array. Eliminarea ultimului element din tablou cu pop().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b> Tabloul se modifica! Valoarea eliminata poate fi memorata intr-o variabila.</p>
</body> </html>
Exemplul 6
Ilustrează utilizarea metodei push() pentru a adăuga noi elemente la sfârşitul unui tablou. Pot fi adăugate
mai multe valori simultan. Valorile trebuie separate prin virgulă.
<html> <body>
<h3>Obiectul Array. Adaugarea de noi elemente la sfarsitul tabloului cu push().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b> Tabloul se modifica. Metoda returneaza noua lungime a tabloului și valoarea poate
fi memorata intr-o variabila.</p>
</body> </html>
Exemplul 7
Ilustrează utilizarea metodei reverse() pentru a inversa ordinea elementelor dintr-un tablou.
<html> <body>
<h3>Obiectul Array. Inversarea ordinii elementelor din tablou cu reverse().</h3> <hr/>
<script>
var friends = ["Mihai", "Elena", "Andra", "Dan"];
document.write("Tabloul initial: "+friends+"<br/>");
friends.reverse();
document.write("Tabloul dupa inversare: "+friends);
Exemplul 8
Ilustrează utilizarea metodei shift() pentru a elimina primul element dintr-un tablou.
<html> <body>
<h3>Obiectul Array. Eliminarea primului element din tablou cu shift().</h3> <hr/>
<script>
var x=friends.shift();
document.write("Elementul eliminat: "+x+"<br/>");
document.write("Tabloul dupa eliminare: "+friends);
</script>
<p><b>Obs.</b> Tabloul se modifica. Metoda returneaza elementul eliminat și rezultatul poate fi
memorat intr-o variabila.</p>
</body> </html>
Exemplul 9
Ilustrează cum se selectează elementele unui tablou cu metoda slice(). Metoda are două argumente: primul
precizează poziţia de început a secvenţei selectat, iar al doilea poziţia de sfârşit. Dacă al doilea argument
lipseşte, se vor selecta toate elementele pînă la sfârşitul tabloului. Dacă argumentul este negativ, se vor
selecta elementele de la sfârşitul şirului către început.
<html> <body> <h3>Obiectul Array. Selectare elementelor din tablou cu slice().</h3> <hr/>
<script>
216
var pets = ["Caine", "Pisica", "Papagal", "Hamster"];
document.write("Tabloul initial: "+pets+"<br/>");
var x=pets.slice(0,1);
document.write("Elementele selectate cu slice(0,1): "+x+"<br/>");
document.write("Elementele selectate cu slice(1): "+pets.slice(1) + "<br />");
document.write("Elementele selectate cu slice(-2): "+pets.slice(-2) + "<br />");
</script>
<p><b>Obs.</b> Tabloul nu se modifica. Elementele selectate pot fi memorate intr-o variabila.</p>
</body> </html>
Exemplul 10
Ilustrează utilizarea metodei sort() pentru a sorta alfabetic crescător un tablou de şiruri de caractere.
Metoda sortează implicit în ordine alfabetică crescătoare.
<html> <body> <h3>Obiectul Array. Sortarea unui tablou cu sort().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b> Tabloul se modifica!</p>
</body> </html>
Exemplul 11
Ilustrează utilizarea metodei sort() pentru a sorta descendent un tablou de numere. Numerele nu vor fi
sortate corect. Trebuie adăugată o funcţie care să compare numerele.
<html> <body>
<h3>Obiectul Array. Sortarea unui tablou cu valori numerice.</h3> <hr/>
<script>
function sortDesc(a, b)
{
return b - a;
}
function sortCresc(a,b)
{
return a-b;
}
</script>
<p><b>Obs.</b> în urma sortarii tabloul se modifica!</p>
</body> </html>
Exemplul 12
Ilustrează utilizarea metodei splice() pentru a adăuga un element în poziţia 3 din tablou. Metoda are trei
argumente: primul, obligatoriu precizează poziţia în care vor fi adăugate/şterse valori, al doilea,
obligatoriu, reprezintă numărul de valori care vor fi şterse (dacă are valoarea 0, nu se vor şterge ci se vor
insera valori) şi, al treilea, opţional, care reprezintă noile valori adăugate în tablou.
<html> <body>
<h3>Obiectul Array. Inserarea/stergerea elementelor dintr-o pozitie a tabloului cu splice().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b> Tabloul se modifica. Dacă metoda elimina elemente din tablou, va returna elementele
eliminate.</p>
</body> </html>
Exemplul 13
Ilustrează utilizarea metodei toString() pentru a converti un tablou într-un şir de caractere. Metoda
returnează şirul de caractere, valorile fiind separate prin virgulă.
<html> <body>
<h3>Obiectul Array. Convertirea unui tablou în sir de caractere cu toString().</h3> <hr/>
<script>
</script>
<p><b>Obs.</b> Tabloul nu se modifica. Metoda returneaza sirul de caractere obtinut.</p>
</body> </html>
218
Exemplul 14
Ilustrează utilizarea metodei unshift() pentru a adăuga noi valori la începutul unui tablou
<html> <body>
<h3>Obiectul Array. Adaugarea de elemente la inceputul unui tablou cu unshift().</h3> <hr/>
<script>
</body> </html>
Observații: Dacă obiectul Boolean nu are valoare iniţială sau are una din valorile 0, -0, null, "",
false, undefined, sau NaN(Not a Number), obiectul este iniţializat cu valoarea false. În caz
contrar, valoarea obiectului va fi true.
Toate declaraţiile din liniile următoare de cod creează un obiect boolean iniţializat cu false:
var sem=new Boolean();
var sem=new Boolean(0);
var sem=new Boolean(null);
var sem=new Boolean("");
var sem=new Boolean(false);
var sem=new Boolean(NaN);
Toate declaraţiile din liniile următoare de cod crează un obiect boolean iniţializat cu true:
var sem=new Boolean(true);
var sem=new Boolean("true");
219
var sem=new Boolean("false");
var sem=new Boolean("home");
Exemplu
Ilustrează cum se verifică valoarea unui obiect Boolean.
<html> <body> <script>
var b1=new Boolean( 0);
var b2=new Boolean(1);
var b3=new Boolean("");
var b4=new Boolean(null);
var b5=new Boolean(NaN);
var b6=new Boolean("false");
Constante matematice
În JavaScript se pot utiliza opt constante matematice accesibile prin obiectul Math. Ele pot fi utilizate cu
următoarea sintaxă:
220
Math.E
Math.PI
Math.SQRT2
Math.SQRT1_2
Math.LN2
Math.LN10
Math.LOG2E
Math.LOG10E
Metode matematice
Exemplul următor ilustrează utilizarea metodei round() pentru a rotunji un număr la cel mai apropiat
întreg:
document.write(Math.round(4.7));
Exemplul următor utilizează metoda random() pentru a genera un număr aleator cuprins între 0 şi 1:
document.write(Math.random());
Exemplul următor utilizează metodele floor() şi random() pentru a genera un număr aleator cuprins între
0 şi 10:
document.write(Math.floor(Math.random()*11));
Exemple:
Exemplul 1
Ilustrează utilizarea metodei max() pentru a determina maximul a două sau mai multe valori.
<html> body>
<script>
document.write(Math.max(5,10) + "<br />");
document.write(Math.max(0,150,30,20,38) + "<br />");
document.write(Math.max(-5,10) + "<br />");
document.write(Math.max(-5,-10) + "<br />");
document.write(Math.max(1.5,2.5));
</script>
</body> </html>
Exemplul 2
Ilustrează utilizarea metodei min() pentru a determina minimul a două sau mai multe valori.
<html> <body>
<script>
document.write(Math.min(5,10) + "<br />");
document.write(Math.min(0,150,30,20,38) + "<br />");
document.write(Math.min(-5,10) + "<br />");
document.write(Math.min(-5,-10) + "<br />");
document.write(Math.min(1.5,2.5));
</script>
</body> </html>
Exemplul 3
Convertirea gradelor din Celsius în Fahrenheit şi reciproc:
<html> <head>
222
<script>
function convert(degree)
{
if (degree=="C")
{
F=document.getElementById("c").value * 9 / 5 + 32;
document.getElementById("f").value=Math.round(F);
}
else
{
C=(document.getElementById("f").value -32) * 5 / 9;
document.getElementById("c").value=Math.round(C);
}
}
</script>
</head>
<body>
<p><b>Introduceti un număr în unul din cele doua campuri:</b></p>
<form>
<input id="c" name="c" onkeyup="convert('C')"> grade Celsius<br />
egal<br />
<input id="f" name="f" onkeyup="convert('F')"> grade Fahrenheit
</form>
</body> </html>
Definire
Un obiect RegExp poate fi definit cu una din următoarele forme:
var txt=new RegExp(pattern,modifiers);
sau, mai simplu:
var txt=/pattern/modifiers;
223
Modificatorii
Modificator Descriere
i Caută potrivirea fără a face diferenţa între literele mici şi mari
g Realizează o căutare globală (găseşte toate potrivirile, nu numai prima)
m Caută potrivirea pe mai multe linii
Parantezele pătrate
Sunt utilizate pentru a defini un şir de caractere.
Expression Descriere
[abc] Găseşte orice caracter precizat între paranteze
[^abc] Găseşte orice caracter diferit de cele precizate
[0-9] Găseşte o cifră între 0 şi 9
[a-z] Găseşte orice literă mică
[A-Z] Găseşte orice literă mare
[a-Z] Găseşte orice literă, mare sau mică
[red|blue|green] Găseşte oricare dintre alternativele specificate
Metacaracterele
Sunt caracterele care au o semnificaţie specială:
Metacaracter Descriere
Găseşte un singur caracter (orice caracter diferit de linie nouă şi sfirşit
.
de linie).
\w Caută un caracter de cuvânt (litere mici sau mari, cifre şi underscore)
\W Găseşte un caracter care nu este de cuvânt
\d Găseşte o cifră
\D Găseşte un caracter care nu este cifră
\s Caută un spaţiu alb
\S Caută un caracter diferit de spaţiu
\b Caută o potrivire la începutul/sfârşitul unui cuvânt
\B Caută o potrivire care nu este la începutul/sfârşitul unui cuvânt
\0 Caută un caracter NUL
\n Caută un caracter linie nouă
\f Caută un caracter form feed
224
\r Caută un caracter retur de car
\t Caută un caracter tab
\v Caută un tab caracter
Cuantificatori
Cuantificator Descriere
n+ Caută orice şir care conţine cel puţin un caracter n
n* Caută orice şir care conţine 0 sau mai multe apariţii ale caracterului n
n? Caută orice şir care conţine 0 sau o apariţie a caracterului n
n{X} Caută orice şir care conţine o secvenţă de X caractere n
n{X,Y} Caută orice şir care conţine o secvenţă de X sau Y caractere n
n{X,} Caută orice şir care conţine o secvenţă de cel puţin X caractere n
n$ Caută orice şir care se incheie cu caracterul n
^n Caută orice şir care începe cu caracterul n
?=n Caută orice şir care este urmat de şirul n
?!n Caută orice şir care nu este urmat de şirul n
Metoda test()
Caută într-un şir un model şi returnează true sau false.
Exemplu:
<html> <body>
<script>
var m1=new RegExp("e");
document.write(m1.test("Cele mai frumoase carti le pastrez în amintire"));
</script>
225
</body></html>
Deoarece modelul "e" apare în şir, metoda va returna valoarea true care va fi afişată.
Metoda exec()
Caută în text un model şi returnează modelul, dacă acesta este găsit, sau valoarea null, dacă modelul nu
apare în text.
Exemplu:
<html> <body>
<script>
var m1=new RegExp("e");
Deoarece modelul "e" apare în şir, metoda va returna valoarea e care va fi afişată.
Puteţi adăuga al doilea parametru obiectului RegExp, pentru a specifica modul de căutare. Spre exemplu,
dacă doriţi să găsiţi toate apariţiile unui caracter, puteţi folosi parametrul "g" ("global").
Când utilizaţi parametrul "g", metoda exec() lucrează astfel:
Găseşte prima apariţie a modelului "e" şi îi memorează poziţia
Dacă executaţi din nou metoda exec(), căutarea va începe de la poziţia memorată anterior.
Exemplu:
<html> <body>
<script>
var m1=new RegExp("e","g");
do
{
result=m1.exec("Cele mai frumoase carti le pastrez în amintire");
document.write(result);
}
while (result!=null)
</script>
</body></html>
Deoarece modelul "e" apare de şase ori în text, programul de mai sus va afişa secvenţa:eeeeeenull
Metoda compile()
Este utilizată pentru a modifica conţinutul obiectului RegExp.
Metoda poate schimba modelul căutat şi poate adăuga sau elimina al doilea parametru.
Exemplu:
<html> <body>
<script>
var m1=new RegExp("e");
document.write(m1.test("Cele mai frumoase carti le pastrez în amintire"));
m1.compile("d");
document.write(m1.test("Cele mai frumoase carti le pastrez în amintire"));
226
</script>
</body></html>
Deoarece modelul "e" apare în şir, dar modelul "d" nu apare, programul anterior va afişa valorile:
truefalse
Exemple:
Exemplul 1
Ilustrează utilizarea metodei match() a obiectului String pentru a găsi toate caracterele precizate în model
cu ajutorul parantezelor pătrate.
<html> <body>
<script>
var str="Ce mai faci?";
var m1=/[a-h]/g;
document.write(str.match(m1));
</script>
</body> </html>
Programul va afişa rezultatul: e,a,f,a,c
Exemplul 2
Ilustrează utilizarea metodei match() a obiectului String pentru a găsi toate caracterelor diferite de cele
din model.
<html> <body>
<script>
var str="Ce mai faci?";
var m1=/[^a-h]/g;
document.write(str.match(m1));
</script>
</body> </html>
Programul anterior va afişa rezultatul: C, ,m,i, ,i,?
Exemplul 3
Ilustrează cum se poate construi un model care să găsească toate secvenţele în care un caracter poate avea
orice valoare.
<html> <body>
<script>
var str="Pisica nu are blana tarcata";
var m1=/a.a/g;
document.write(str.match(m1));
</script>
</body> </html>
Programul va găsi toate ecvenţele de trei caractere în care primul şi ultimul caracter este „a”.
Rezultatul afişat pentru şirul de mai sus este: ana,ata
Exemplul 4
Ilustrează cum se poate construi un model care să găsească toate caracterele care nu fac parte dintr-un
cuvânt.
227
<html> <body>
<script>
var str="Ai obtinut 75%!";
var m1=/\W/g;
document.write(str.match(m1));
</script>
</body> </html>
Programul anterior va afişa rezultatul: , ,%,!
Exemplul 5
Ilustrează cum se poate construi un model cu care să înceapă sau să se sfirşească un cuvânt.
<html> <body>
<script>
var str="Vizitati Google";
var m1=/\bGo/g;
document.write(str.match(m1));
</script>
</body> </html>
Dacă nu este găsit nici-un cuvânt care începe sau se sfârşeşte cu modelul dat, metoda match() va returna
valoarea null. Pentru exemplul considerat anterior, există în text un cuvânt care se potriveşte şi metoda
returnează modelul.
Rezultatul afişat este: Go
Exemplul 6
Ilustrează cum se pot găsi toate secvenţele dintr-un text, în care un anumit caracter apare cel puţin o dată.
<html> <body>
<script>
var str="Tu creezi pagini web interesante!";
var m1=/e+/g;
do
{
result=m1.exec(str);
document.write(result); document.write(" ");
}
while(result!=null)
</script>
</body> </html>
Programul anterior va determina toate secvenţele din text în care caracterul „e” apare cel puţin o dată (în
poziţii consecutive).
Rezultatul afişat de program este: ee e e e e null
Exemplul 7
Ilustrează cum se pot găsi secvenţele de text în care un anumit caracter apare de minim x ori.
<html> <body>
<script>
228
var str="Aveti 10, 100, 1000 sau 10000 de lei?";
var m1=/\d{3,}/g;
document.write(str.match(m1));
</script>
</body> </html>
Programul anterior afişează rezultatul: 100,1000,10000, adică secvenţele care conţin cel puţin trei cifre
zecimale.
Exemplul 8
Ilustrează cum se pot găsi toate subşirurile dintr-un text, care sunt urmate de un subşir dat.
<html> <body>
<script>
var str="eu am o pisica, dar eu am și un papagal";
var m1=/eu(?= am)/g;
document.write(str.match(m1));
</script>
</body></html>
Programul anterior determină toate şirurile „eu” care sunt urmate de şirul „am”.
Rezultatul afişat este: eu,eu
Obiectul Number
Obiectul Number este un container pentru valorile numerice de bază.
Obiectele Number sunt create cu următoarea sintaxă:
var nume = new Number(valoare);
Obs: Dacă parametrul valoare nu poate fi convertit într-un număr, va fi returnată valoarea NaN (Not-
a-Number).
Exemple:
Exemplul 1
Ilustrează cum se afişează cel mai mare număr din JavaScript.
<html> <body>
<script>
document.write(Number.MAX_VALUE);
</script>
</body> </html>
Exemplul 2
Ilustrează cum se stabileşte numărul de zecimale afişate.
<html> <body>
<script>
var num = new Number(27.2547);
document.write(num.toFixed()+"<br />");
document.write(num.toFixed(1)+"<br />");
document.write(num.toFixed(3)+"<br />");
document.write(num.toFixed(10));
</script>
</body> </html>
Exemplul 3
Ilustrează cum se stabileşte precizia numărului afişat (numărul total de cifre afişate).
<html> <body>
<script>
var num = new Number(31.1593);
document.write(num.toPrecision()+"<br />");
document.write(num.toPrecision(2)+"<br />");
document.write(num.toPrecision(3)+"<br />");
document.write(num.toPrecision(10));
</script>
</body> </html>
Exemplul 4
Ilustrează cum se converteşte în şir un număr, folosind diferite baze de numeraţie.
230
<html> <body> <script>
var num=new Number(31);
document.write(num.toString()+"<br />"); //numărul este reprezentat în baza 10 (implicit)
document.write(num.toString(2)+"<br />"); //numărul este reprezentat în baza 2
document.write(num.toString(8)+"<br />"); //numărul este reprezentat în baza 8
document.write(num.toString(16)+"<br />"); //numărul este reprezentat în baza 16
</script>
</body> </html>
Exemple:
Exemplul 1
Variabila "browser" din exemplul următor memorează numele browserului. Proprietatea appVersion
returnează un şir de caractere care conţine mult mai multe informaţii, nu numai numărul versiunii.
Deoarece ne interesează numai versiunea, pentru a o extrage din şir, se utilizată o funcţie numită
parseFloat(), care extrage din şir şi returnează prima secvenţă care arată ca un număr zecimal.
<html> <body>
<script>
var browser=navigator.appName;
var b_ver=navigator.appVersion;
var versiune=parseFloat(b_ver);
Exemplul 3
Ilustrează cum pot fi afişate mai multe detalii despre browserul vizitatorului
<html> <body>
<script>
document.write("<p>Browser: ");
document.write(navigator.appName + "</p>");
document.write("<p>Versiune: ");
document.write(navigator.appVersion + "</p>");
document.write("<p>Cod: ");
document.write(navigator.appCodeName + "</p>");
document.write("<p>Platforma: ");
document.write(navigator.platform + "</p>");
document.write("<p>Cookies activate: ");
document.write(navigator.cookieEnabled + "</p>");
</script> </body> </html>
A. Obiectul window
Acest obiect reprezintă o fereastră deschisă în browser. Dacă conţine cadre (tagurile <frame> sau
<iframe>), browserul creează un obiect window pentru documentul HTML, şi cîte un obiect window
pentru fiecare cadru.
232
Proprietăţile obiectului window
Proprietate Descriere
closed Returnează o valoare booleană care indică dacă fereastra a fost închisă sau nu
defaultStatus Setează sau returnează textul implicit din bara de stare a ferestrei
document Returnează obiectul Document al ferestrei
frames Returnează un tablou cu toate cadrele din fereastra curentă
history Returnează obiectul History al ferestrei
innerHeight Setează sau returnează înălţimea interioară a zonei de conţinut a ferestrei
innerWidth Setează sau returnează lăţimea interioară a zonei de conţinut a ferestrei
length Returnează numărul de cadre (inclusiv cele inline) din fereastră
location Returnează obiectul Location al ferestrei
name Setează sau returnează numele ferestrei
opener Returnează referinţa care a creat fereastra
Setează sau returnează înălţimea exterioară a ferestrei (inclusiv
outerHeight
toolbars/scrollbars)
Setează sau returnează lăţimea exterioară a ferestrei (inclusiv
outerWidth
toolbars/scrollbars)
Returnează numărul de pixeli cu care documentul curent a fost derulat
pageXOffset
orizontal, în raport cu colţul stinga sus al ferestrei
Returnează numărul de pixeli cu care documentul curent a fost derulat vertical,
pageYOffset
în raport cu colţul stinga sus al ferestrei
parent Returnează fereastra părinte a ferestrei curente
screenLeft Returnează coordonata x a ferestrei, relativ la ecran
screenTop Returnează coordonata y a ferestrei, relativ la ecran
screenX Returnează coordonata x a ferestrei, relativ la ecran
screenY Returnează coordonata y a ferestrei, relativ la ecran
self Returnează fereastra curentă
status Setează textul din bara de stare a ferestrei
top Returnează cea mai din vîrf fereastră deschisă în browser
233
alert() Afişează o casetă de alertare care conţine un mesaj şi un buton OK
blur() Îndepărtează focus-ul de la fereastra curentă
clearInterval() Resetează timer-ul setat cu setInterval()
clearTimeout() Resetează timer-ul setat cu setTimeout()
close() Închide fereastra curentă
confirm() Afişează o casetă de dialog care conţine un mesaj şi butoanele OK şi Cancel
createPopup() Creează o fereastră Pop-up
focus() Fixează focus-ul pe fereastra curentă
moveBy() Mută fereastra, relativ la poziţia ei curentă
moveTo() Mută fereastra într-o nouă poziţie
open() Deschide o nouă fereastră în browse
print() Tipăreşte conţinutul ferestrei curente
Afişează o casetă de dialog care cere utilizatorului să introducă anumite
prompt()
informaţii
resizeBy() Redimensionează fereastra la dimensiunea specificată în pixeli
resizeTo() Redimensionează fereastra la înălţimea şi lăţimea specificate
scrollBy() Derulează conţinutul ferestrei cu numărul specificat de pixeli
scrollTo() Derulează conţinutul ferestrei pînă la coordonatele specificate
Apelează o funcţie sau evaluează o expresie la intervale specificate de timp
setInterval()
(în milisecunde)
Apelează o funcţie sau evaluează o expresie dupa un număr specificat de
setTimeout()
milisecunde
Exemplul 1
Ilustrează utilizarea metodelor open() şi focus()
<html> <head>
<script>
function deschide()
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("<p>Aceasta este o fereastra creata cu metoda open()</p>");
myWindow.focus();
}
</script>
</head>
<body>
234
<input type="button" value="Deschide fereastra" onclick="deschide()" />
</body> </html>
Exemplul 2
În acest exemplu, funcţia clock() este apelată la fiecare 1000 milisecunde şi actualizează ceasul afişat.
Ceasul poate fi oprit prin apăsarea unui buton
<html> <body>
<input type="text" id="clock" />
<script language=javascript>
var int=self.setInterval("clock()",1000);
function clock()
{
var d=new Date();
var t=d.toLocaleTimeString();
document.getElementById("clock").value=t;
}
</script>
</form>
<button onclick="int=window.clearInterval(int)">Stop</button>
</body> </html>
Exemplul 3
Ilustrează mutarea ferestrei curente cu 250 pixeli relativ la poziţia ei curentă
<html> <head>
<script>
function deschide()
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("<p>Aceasta este o fereastra deschisa cu open()</p>");
}
function muta()
{
myWindow.moveBy(250,250);
myWindow.focus();
}
</script>
</head>
<body>
<input type="button" value="Deschide fereastra" onclick="deschide()" />
<br /><br />
<input type="button" value="Muta fereastra" onclick="muta()" />
</body> </html>
Exemplul 4
Ilustrează redimensionarea ferestrei curente
235
<html> <head>
<script>
function redimensioneaza()
{
top.resizeTo(500,300);
}
</script>
</head>
<body>
<form>
<input type="button" onclick="redimensioneaza()" value="Redimensioneaza fereastra" />
</form>
</body> </html>
Exemplul 5
Ilustrează utilizarea metodei blur() pentru a trimite o fereastră în background.
<html> <head>
<script>
function deschide()
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("<p>Aceasta fereastra este deschisa cu open()</p>");
myWindow.blur();
}
</script>
</head>
<body>
<input type="button" value="Deschide fereastra" onclick="deschide()" />
</body> </html>
B. Obiectul screen
Acest obiect conţine informaţii despre ecranul vizitatorului.
236
Exemplu următor ilustrează utilizarea tuturor proprietăţilor obiectului screen pentru a obţine informaţii
despre ecranul vizitatorului:
<html> <body>
<h3>Ecranul dumneavoastra are proprietatile:</h3>
<script>
document.write("Lățime/Inaltime totală: ");
document.write(screen.width + "*" + screen.height);
document.write("<br />");
document.write("Lățime/Inaltime disponibila: ");
document.write(screen.availWidth + "*" +
screen.availHeight);
document.write("<br />");
document.write("Numărul de biti ai culorii: ");
document.write(screen.colorDepth);
document.write("<br />");
document.write("Rezoluţia culorii: ");
document.write(screen.pixelDepth);
</script>
</body> </html>
C. Obiectul history
Acest obiect conţine URL-urile vizitate de utilizator (într-o fereastră de browser). Obiectul history face
parte din obiectul window şi este accesat prin proprietatea window.history.
D. Obiectul location
Obiectul location conţine informaţii despre URL-ul curent. Obiectul location este parte a obiectului
window şi este accesat prin intermediul proprietăţii window.location.
Exemplu
Ilustrează utilizarea metodei assign()
<html> <head>
<script>
function nou()
{
window.location.assign("http://www.google.com")
}
</script>
</head>
<body>
<input type="button" value="Incarca noul document" onclick="nou()" />
</body> </html>
Cookies
Un cookie este o variabilă păstrată în calculatorul vizitatorului. De fiecare dată când calculatorul respectiv
cere browserului o pagină, el va trimite şi cookie-ul respectiv. Cu JavaScript, puteţi crea şi extrage
cookies.
Exemple de cookies:
1. Numele utilizatorului – Prima dată când utilizatorul vă vizitează pagina trebuie să-şi completeze
numele. Numele este stocat într-un cookie. Următoarea dată când vizitatorul ajunge la pagina dvs., puteţi
să-l întimpinaţi cu un mesaj de genul "Bine ai venit........!" Numele este recuperat dintr-un cookie.
2. Parolă – Prima dată utilizatorul vă vizitează pagina trebuie să completeze o parolă. Parola este
memorată într-un cookie. Data viitoare când vizitatorul ajunge în pagină, parola poate fi recuperată dintr-
un cookie.
238
3. Data calendaristică – Prima dată când utilizatorul vă vizitează pagina, data curentă este memorată într-
un cookie. Data viitoare când utilizatorul vă vizitează pagina, puteţi să afişaţi un mesaj de genul "Ultima
dvs. vizita a fost în data de .........." Această dată este recuperată dintr-un cookie.
function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" :
";expires="+exdate.toGMTString());
}
Parametrii funcţiei reprezintă numele şi valoarea cookie-ului şi numărul de zile pînă când acesta expiră.
Funcţia converteşte numărul de zile într-o dată validă şi apoi adaugă numărul de zile după care va expira
cookie-ul. Apoi, numele şi valoarea cookie-ului şi data expirării sunt memorate într-un obiect
document.cookie.
În continuare, vom crea o funcţie care verifică dacă cookie-ul a fost setat:
function getCookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
Funcţia verifică mai întii dacă în obiectul document.cookie este memorat vreun cookie. În caz afirmativ,
verificăm dacă este memorat cookie-ul dorit. Dacă cookie-ul este găsit, îi returnăm valoarea, în caz contrar
returnăm un şir vid. În cele din urmă, vom crea funcţia care afişează un mesaj de bun venit dacă cookie-ul
este setat şi o casetă prompt care cere numele vizitatorului, în caz contrar:
function checkCookie()
{
username=getCookie('username');
239
if (username!=null && username!="")
{
alert('Welcome again '+username+'!');
}
else
{
username=prompt('Please enter your name:',"");
if (username!=null && username!="")
{
setCookie('username',username,365);
}
}
}
function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";
expires="+exdate.toGMTString());
}
function checkCookie()
{
username=getCookie('username');
if (username!=null && username!="")
{
240
alert('Bine ai revenit '+username+'!');
}
else
{
username=prompt('Va rog să va introduceti numele:',"");
if (username!=null && username!="")
{
setCookie('username',username,365);
}
}
}
</script>
</head>
<body onLoad="checkCookie()">
</body>
</html>
Exemplul prezentat execută funcţia checkCookie() când pagina se încarcă.
E. Obiectul Form
Formularele sunt elemente HTML care dau viata unor pagini statice deoarece asigura o interfata prin care
vizitatorii pot interactiona, cu ajutorul controalelor (elemente ale formularului).
Obiectul Form este mijlocul prin care se poate interactiona cu acest element HTML în scripturile
JavaScript.
241
Metodele obiectului Form
Proprietate Descriere
handleEvent() Apeleaza handlerul de eveniment specificat
reset() Readuce elementele formularului la valorile prestabilite
Declanseaza un eveniment "submit" care trimite datele spre programul
submit()
specificat în atributul "action" al etichetei <form>
Multe din proprietatile obiectului "Form" se ocupa de informatiile suplimentare care sunt trimise la server
prin intermediul formularului. Aceste proprietati sunt:
- action - specifica adresa URL a programului catre care vor fi trimise datele din formular
Exemplu:
<form name="f1" action="http://www.edugal.ro/script.php" method="post">
Pentru formularele care folosesc metoda "post" puteți preciza în atributul "action" ca datele să fie trimise
prin e-mail, folosind urmatoarea sintaxa:
<form name="f2" action="mailto:adresa_de_email" method="post">
Când expediati formularul, se va deschide un client de e-mail ce conține, printre altele, și perechile de
"nume-valoare" ale elementelor (casetelor) cuprinse în formular.
- enctype - specifica o codificare MIME a formularului, valoarea prestabilita este "application/x-www-
form-urlencode".
O metoda de verificare a acestei codificari este urmatoarea:
if (f1.enctype == "application/x-www-form-urlencode") {
alert("Tipul de codificare e normal");}
242
Proprietatea enctype="text/plain" este folosita pentru a trimite text neformatat. Prin aceasta, mailul va fi
mai usor de citit, în cadrul mesajului va apare optiunea aleasa. Fara specificarea acestei proprietati mailul
va avea ca atasament un fișier cu optiunea aleasa.
- method - defineste modul în care datele formularului sunt expediate. Se poate folosi valoarea "get" sau
"post".
Pentru formularele care folosesc metoda "get", în majoriatea site-urilor este disponibil un program CGI de
testare, numit "test-cgi" furnizat impreuna cu serverul (locatia fișierului "test-cgi" poate fi diferita,
intrebati administratorul serverului). Folositi urmatoarea sintaxa:
<form action="http://nume_site/cgi-bin/test-cgi" method="get">
Veti primi o pagina care va conține, printre altele, și valorile elementelor din formular. Pentru incepatori,
mai putin cunoscatori, și pentru folosirea cu scripturi PHP, este recomandata metoda "post". Pentru
formularele care folosesc metoda "post", în majoriatea site-urilor este disponibil un program CGI de
testare, numit "post-query" furnizat impreuna cu serverul (locatia acestuia poate fi diferita, intrebati
administratorul serverului). Dacă doriți să verificati ce date trimite formularul, folositi urmatoarea
eticheta:
<form action="http://nume_site/cgi-bin/post-query" method="post">
Cind trimiteti formularul veti primi, printre altele, și perechile de "nume-valoare" corespunzatoare
elementelor din formular. Puteti verifica tipul metodei de trimitere a datelor și cu un script JavaScript, ca
în exemplul urmator:
<script>
<!--var tip_metoda;
tip_metoda = formular.method; alert("Tipul metodei pt. acest formular e :" +tip_metoda);
//-->
</script>
Dacă doriți să faceți o verificare a datelor din formular înainte ca acestea să fi expediate la server, puteți
folosi evenimentul "onSubmit".
onSubmit - este folosita pentru a valida formularul înainte de a fi trimis.
243
Validarea formularelor
JavaScript poate fi utilizat pentru a valida formularele HTML înainte de a fi trimise către server.
Datele verificate uzual cu JavaScript pot fi:
au rămas câmpuri obligatorii necompletate?
adresa de e-mail este validă?
data calendaristică este validă?
s-a introdus text într-un cimp numeric?
Câmpuri obligatorii
Exemplul următoar utilizează o funcţie care verifică dacă un câmp obligatoriu a rămas necompletat. În caz
afirmativ, o casetă de alertare afişează un mesaj şi funcţia returnează valoarea false. Dacă câmpul a fost
completat, funcţia returnează valoarea true şi data este considerată validă:
<html> <head>
<script>
function valideaza_obligatoriu(camp,txt)
{
with (camp)
{
if (value==null||value=="")
{
alert(txt);return false;
}
else
{
return true;
}
}
}
function valideaza_formular(formular)
{
with (formular)
{
if (valideaza_obligatoriu(email,"Campul Email este obligatoriu!")==false)
{
email.focus();return false;
}
}
}
</script>
</head> <body>
<form action="submit.htm" onsubmit="return valideaza_formular(this)" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Trimite">
</form>
</body> </html>
244
Validarea adresei de e-mail
Exemplul următoar utilizează o funcţie care verifică dacă câmpul respectă sintaxa generală a unei adrese
de e-mail. Asta înseamnă că date respectivă trebuie să conţină cel puţin caracterul @ şi un punct. De
asemenea, @ nu poate fi primul caracter din şir, iar ultimul punct trebuie să fie cel puţin la un caracter
distanţă de @:
<html> <head> <script>
function valideaza_email(camp,txt)
{
with (camp)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
if (apos<1||dotpos-apos<2)
{alert(txt);return false;}
else {return true;}
}
}
function valideaza_formular(formular)
{
with (formular)
{
if (valideaza_email(email,"Adresa e-mail nu este valida!")==false)
{email.focus();return false;}
}
}
</script>
</head>
<body>
<form action="submit.htm" onsubmit="return valideaza_formular(this);" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Trimite">
</form> </body> </html>
Animaţie
Puteţi folosi JavaScript pentru a crea imagini animate. Secretul este să lăsaţi scriptul să afişeze imagini
diferite pentru evenimente diferite.
În exemplul următor vom adăuga o imagine care se va comporta ca un link în pagina web. Vom adăuga
apoi un eveniment onMouseOver şi un eveniment onMouseOut care vor apela două funcţii JavaScript ce
vor comuta între două imagini.
Observaţi că imaginea a primit un id, pentru ca JavaScript să poată referi imaginea în diferite puncte din
script. Evenimentul onMouseOver va spune browserului că, în momentul în care mouse-ul trece peste
imagine, trebuie apelată o funcţie care să schimbe imaginea. Evenimentul onMouseOut va spune
browserului că, atunci când mouse-ul se îndepărtează de imagine, trebuie apelată o funcţie care va afişa
din nou imaginea iniţială.
246
Codul celor două funcţii este:
<script>
function mouseOver()
{
document.getElementById("m1").src ="img1.gif";
}
function mouseOut()
{
document.getElementById("m1").src ="img2.gif";
}
</script>
Funcţia mouseOver() va determina afişarea imaginii "img1.gif", iar funcţia mouseOut() va determina
afişarea imaginii "img2.gif". Efectul de animaţie este mai vizibil dacă cele două imagini sunt foarte
asemănătoare, diferind spre exemplu prin culoare.
Imagini mapate
O imagine mapată (image-map) este o imagine care are zone ce pot fi acţionate cu mouse-ul. În mod
normal, fiecare zonă are un hiperlink asociat. În tagurile <area> din imaginea mapată pot fi adăugate
evenimente care apelează funcţii JavaScript. Tagul <area> suportă evenimentele onClick, onDblClick,
onMouseDown, onMouseUp, onMouseOver, onMouseMove, onMouseOut, onKeyPress,
onKeyDown, onKeyUp, onFocus şi onBlur.
Exemplul următor ilustrează utilizarea unei imagini mapate într-un program HTML:
<html> <head>
<script>
247
function writeText(txt)
{
document.getElementById("desc").innerHTML=txt;
}
</script>
</head>
<body>
<img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap" />
<map name="planetmap"> </p>
<area shape ="rect" coords ="0,0,82,126" onMouseOver="writeText('Soarele și planetele gigante
gazoase, ca Jupiter, sunt cu certitudine cele mai mari corpuri din sistemul nostru solar.')" href
="sun.htm" target ="_blank" alt="Sun" />
<area shape ="circle" coords ="90,58,3" onMouseOver="writeText('Planeta Mercur este foarte greu
de studiat de pe Pamant datorita apropierii ei de Soare.')" href ="mercur.htm" target ="_blank"
alt="Mercur" />
<area shape ="circle" coords ="124,58,8" onMouseOver="writeText('Pana în anii 60, Venus a fost
adesea considerata sora geamana a Pamantului pentru ca este cea mai apropiata de noi, și cele doua
planete au multe caracteristici comune.')" href ="venus.htm" target ="_blank" alt="Venus" />
</map>
<p id="desc"></p>
</body> </html>
Programarea evenimentelor
Codurile JavaScript pot fi execute la intervale de timp programate. Programarea evenimentelor JavaScript
se realizează uşor cu ajutorul următoarelor două metode:
setTimeout() – execută un cod cândva în viitor
clearTimeout() – anulează programările realizate cu setTimeout().
Metoda setTimeout()
Sintaxă:
var t=setTimeout("declaraţie javascript", milliseconds);
Metoda setTimeout() returnează o valoare care este memorată în variabila t declarată mai sus. Dacă doriţi
să anulaţi programarea, o puteţi face folosind variabila asociată. Primul argument al metodei este un şir de
caractere care conţine o declaraţie JavaScript care poate fi, de exemplu, un apel de funcţie sau
instrucţiunea de afişare a unei casete de mesaj. Al doilea parametru precizează numărul de milisecunde
(începind de acum) după care va fi executat primul parametru.
248
Exemplul 1
În exemplul următor, când butonul este apăsat, o casetă de alertare va fi afişată după 7 secunde.
<html> <head>
<script>
function mesaj()
{
var t=setTimeout("alert('Caseta afisata dupa 7 secunde!')",7000);
}
</script>
</head>
<body>
<form>
<input type="button" value="Afiseaza mesajul!" onClick="mesaj()" />
</form>
</body> </html>
Exemplul 2
Pentru a repeta la infinit o secvenţă de cod, trebuie să scriem o funcţie care se autoapelează. În exemplul
următor, când butonul este apăsat, un câmp de intrare dintr-un formular va începe să numere, plecând de
la zero, secundele scurse, fără să se oprească. A fost inclusă şi o funcţie care verifică dacă numărătorul
funcţionează deja, pentru a nu crea un alt numărător dacă butonul este apăsat de mai multe ori.
<html> <head> <script>
var c=0;
var t;
var pornit=0;
function număra()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("număra()",1000);
}
function verifica()
{
if (!pornit)
{
pornit=1;
număra();
}
}
</script>
</head>
<body>
<form>
<input type="button" value="Incepe numărarea!" onClick="verifica()">
249
<input type="text" id="txt" />
</form> </body> </html>
Metoda clearTimeout()
Sintaxă:
clearTimeout(variabila_setTimeout)
În exemplul următor utilizăm numărătorul infinit din exemplul următor şi adăugăm o funcţie care va opri
numărătorul la apăsarea unui buton:
<html> <head> <script>
var c=0;
var t;
var pornit=0;
function număra()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("număra()",1000);
}
function verifica()
{
if (!pornit)
{
pornit=1;
număra();
}
}
function stop()
{
clearTimeout(t);
pornit=0;
}
</script>
</head>
<body>
<form>
<input type="button" value="Incepe numărarea!" onClick="verifica()">
<input type="text" id="txt">
<input type="button" value="Opreste numărarea!" onClick="stop()">
</form> </body> </html>
Exemplu
Acest exemplu ilustrează crearea unui ceas cu ajutorul evenimentelor programate.
<html> <head> <script>
250
function număra()
{
var azi=new Date();
var h=azi.getHours();
var m=azi.getMinutes();
var s=azi.getSeconds();
// adauga un zero în fata numerelor <10
m=verifica(m);
s=verifica(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout('număra()',500);
}
function verifica(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
</script>
</head>
<body onload="număra()">
<div id="txt"></div>
</body> </html>
Proprietăţile
Pentru a accesa o proprietate a unui obiect sintaxa este:
nume_obiect.nume_proprietate
Puteţi adăuga proprietăţi unui obiect prin simpla atribuire de valori. Dacă presupunem că obiectul
persoana există deja, putem să-i adăugăm proprietăţi prin atribuiri, ca în exemplul următor:
persoana.nume="Popescu";
persoana.prenume="Andrei";
persoana.varsta=25;
persoana.ochi="verzi";
document.write(persoana.nume);
251
Codul de mai sus va afişa rezultatul: Popescu
Metodele
Pentru a accesa o metodă a unui obiect sintaxa este:
Nume_obiect.nume_metoda()
Observaţi că şablonul este doar o funcţie. În interiorul funcţiei trebuie să faceţi atribuiri pentru
this.nume_proprietate. Construcţia "this" se referă la instanţa curentă a obiectului.
După ce aţi construit şablonul obiectului, puteţi crea noi instanţe după modelul următor:
tata=new persoana("Marcu","Ion",40,"verzi");
mama=new persoana("Marcu","Maria",38,"negri");
this.numenou=numenou;
}
252
Observaţi că metodele sunt funcţii ataşate obiectului. Acum va trebui scrisă
funcţia numenou():
function numenou(str)
{
this.nume=str;
}
Proprietăţile
Proprietate Descriere
Infinity O valoare numerică care reprezintă infinitiv pozitiv/negativ
NaN O valoare "Not-a-Number"
undefined Indică o variabilă căreia nu i-a fost atribuită o valoare
Exemplul 1
Ilustrează utilizarea proprietăţii NaN:
<html> <body>
<script>
var luna=13;
if (luna < 1 || luna > 12)
{
luna = luna.NaN;
}
document.write(luna);
</script>
</body> </html>
Exemplul 2
Ilustrează utilizarea proprietăţii undefined:
<html> <body>
<script>
var t1="";
var t2;
if (t1==undefined)
{
document.write("Variabila t1 nu este definita");
}
if (t2==undefined)
253
{
document.write("Variabila t2 nu este definita");
}
</script>
</body> </html>
Metodele
Funcţie Descriere
Codează caracterele speciale dintr-un şir de caractere astfel incit şirul devine
escape()
portabil în reţea către orice calculator care suportă codurile ASCII
Evaluează un şir de caractere şi, dacă şirul conţine o secvenţă de cod JavaScript,
eval()
execută secvenţa
isFinite() Determină dacă valoarea este un număr valid, finit
isNaN() Determină dacă valoarea este un număr invalid
Number() Converteşte valoarea unui obiect în număr
parseFloat() Converteşte un şir într-un număr zecimal
parseInt() Converteşte un şir într-un număr întreg
String() Converteşte valoarea unui obiect într-un şir
unescape() Decodează un şir codat
Exemplul 1
Ilustrează utilizarea metodei eval():
<html> <body> <script>
eval("x=10;y=20;document.write(x*y)");
document.write("<br />" + eval("2+2"));
document.write("<br />" + eval(x+17));
</script> </body> </html>
Exemplul 2
Ilustrează utilizarea metodei Number():
<html> <body>
<script>
var t1= new Boolean(true);
var t2= new Boolean(false);
var t3= new Date();
var t4= new String("921");
var t5= new String("193 469");
document.write(Number(t1)+ "<br />");
document.write(Number(t2)+ "<br />");
document.write(Number(t3)+ "<br />");
document.write(Number(t4)+ "<br />");
254
document.write(Number(t5)+ "<br />");
</script> </body> </html>
Exemplul 3
Ilustrează utilizarea metodei parseFloat() pentru a extrage valoarea dintr-un şir ca număr zecimal:
<html> <body> <script>
document.write(parseFloat("10") + "<br />");
document.write(parseFloat("10.00") + "<br />");
document.write(parseFloat("10.33") + "<br />");
document.write(parseFloat("34 45 66") + "<br />");
document.write(parseFloat(" 60 ") + "<br />");
document.write(parseFloat("40 de ani") + "<br />");
document.write(parseFloat("Ea are 40 de ani") + "<br />");
</script> </body>
</html>
Observație: Metoda verifică dacă primul caracter din şir poate apare în scrierea unei valori zecimale
şi, în caz afirmativ continuă construirea acestui număr pină la intilnirea primului caracter care nu poate
apare în scrierea unui număr.
Exemplul 4
Ilustrează utilizarea metodei parseInt() pentru a extrage valoarea dintr-un şir ca număr întreg:
<html> <body> <script>
document.write(parseInt("10") + "<br />") ;
document.write(parseInt("10.33") + "<br />");
document.write(parseInt("34 45 66") + "<br />");
document.write(parseInt(" 60 ") + "<br />");
document.write(parseInt("40 de ani") + "<br />");
document.write(parseInt("Ea are 40 de ani") + "<br />");
document.write("<br />");
document.write(parseInt("10",10)+ "<br />");
document.write(parseInt("010")+ "<br />");
document.write(parseInt("10",8)+ "<br />");
document.write(parseInt("0x10")+ "<br />");
document.write(parseInt("10",16)+ "<br />");
</script> </body> </html>
Observație: Dacă numărul începe cu 0 va fi interpretat ca fiind scris în baza 8, iar dacă începe cu 0x ca
fiind scris în baza 16. Baza poate fi specificată şi prin adăugarea celui de-al doilea parametru în
metodă. Conversia se încheie la întilnirea primului caracter din şir care nu poate aparea în scrierea unui
număr întreg.
255