Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
004.738.52
004.43 HTML
004.43 CSS
004.43 JAVASCRIPT
004.272.23
Prefaţă……………………………………………………………………………… 9
Partea I
HTML
1. Spaţiul World Wide Web...................................................................................... 13
1.1. Introducere în realizarea unui site ................................................................. 15
1.2. Protocoale şi adrese URL .............................................................................. 16
1.3. Crearea unui site gratuit ................................................................................ 17
1.4. Crearea paginilor Web .................................................................................. 18
3. Stiluri de text.......................................................................................................... 29
3.1. Stiluri fizice de text ....................................................................................... 29
3.2. Stiluri logice de text ...................................................................................... 32
3.3. Fonturi ........................................................................................................... 36
4. Liste ....................................................................................................................... 39
4.1. Liste ordonate (Ordered Lists) ...................................................................... 39
4.2. Liste neordonate (Unordered Lists) .............................................................. 41
4.2.1. Atributele elementului LI .................................................................... 44
4.3. Liste de definiţii (Definition Lists) ................................................................ 45
5. Tabele ..................................................................................................................... 47
5.1. Generalităţi .................................................................................................... 47
5.2. Atributele etichetei <TABLE>...................................................................... 48
5.2.1. Elementul TH ...................................................................................... 55
5.2.2. Elementul CAPTION .......................................................................... 55
5.3. Atributele elementului TR............................................................................. 56
5.4. Atributele elementelor TD şi TH.................................................................. 58
5.5. Gruparea liniilor şi coloanelor unui tabel...................................................... 62
5.5.1. Gruparea liniilor .................................................................................. 62
5.5.2. Gruparea coloanelor ............................................................................ 64
5
6. Imagini.................................................................................................................... 66
6.1. Introducerea imaginilor în paginile Web....................................................... 68
6.2. Atributele Elementului IMG ......................................................................... 68
7. Legături (Link-uri)................................................................................................ 75
7.1. Elementul A.................................................................................................. 75
7.2. Legături către alte pagini Web ...................................................................... 77
7.3. Legături cu imagini ....................................................................................... 78
7.4. Legături cu adrese URL relative ................................................................... 80
7.5. Legături către informaţii non Web ............................................................... 82
7.6. Legături către fişiere non HTML ................................................................. 83
7.7. Legături interne în cadrul unei pagini ........................................................... 84
7.8. Trimiterea automată a unui e-mail................................................................. 88
7.9. Culorile legăturilor ........................................................................................ 89
6
Partea a II-a
CSS
13. CSS-Cascading Style Sheets (Foi de stil în cascadă) ........................................ 157
13.1. Introducere în modelele de stiluri................................................................ 157
13.2. Stiluri interne (in-line)................................................................................. 157
13.3. Foi de stil în pagină ..................................................................................... 159
13.4. Foi de stil externe ........................................................................................ 162
13.5. Stiluri în cascadă ......................................................................................... 163
13.6. Stiluri pentru diferiţi selectori ..................................................................... 165
13.6.1. Selectorul ID .................................................................................... 165
13.6.2. Selectorul CLASS ............................................................................. 166
13.6.3. Pseudo-clase...................................................................................... 168
13.6.4. Pseudo-element ................................................................................ 170
13.7. Elementele DIV şi SPAM ........................................................................... 171
Partea III
JavaScript
Anexe
ANEXA A – Culori.................................................................................................... 317
ANEXA B – Caractere în HTML............................................................................... 321
ANEXA C CSS – Specificaţii de stil......................................................................... 325
Bibliografie selectivă................................................................................................... 331
8
Prefaţă
10
PARTEA I
HTML
11
12
1. Spaţiul World Wide Web
17
se va solicita clientului să completeze un formular cu numele dorit al site-
ului, adresa de e-mail (una din cele pe care le aveţi), o parolă etc. Dacă datele au fost
completate corect se poate obţine un site la adresa
www.nume.freewebsites.com
www.nume.b0x.com
La adresa de e-mail specificată în formular se va primi un mesaj prin care se
cere să confirmăm înscrierea, scriind parola dată şi numele de utilizator (USER ID) şi
un cod care a fost dat după completarea formularului.
Să presupunem că în urma acestei cereri s-a obţinut un site gratuit:
adresa: www.testweb.freewebsites.com
parola: pagweb
User ID: ana
18
− un dublu click pe fişier are ca efect lansarea browser-ului, care va afişa
fişierul (conţinutul va fi vid)
− din menu-ul principal din Internet Explorer, View->Source, NOTEPAD
va încărca codul HTML al fişierului (conţinutul va fi vid)
− scriem un text la alegere, de exemplu „se creează un site”, se salvează
fişierul
− în fereastra browser-ului se apasă butonul „Refresh”, prin care comandăm
browser-ului să reîncarce fişierul care a suferit modificări
− se trece iar în NOTEPAD (View-Source) pentru a continua să scriem
fişierul HTML
OBSERVAŢIE!
Pentru a scrie codul unui fişier HTML, nu trebuie să fim conectaţi la
Internet.
Un fişier HTML poate conţine comentarii pentru a-l face mai uşor de
parcurs. Comentariile pot apărea oriunde în fişier şi nu vor fi afişate de browser.
Sintaxa comentariilor în HTML este:
19
2. HTML – noţiuni de bază
20
Figura 2. 1. Fişierul cerere.html, fără marcaje
21
2.2. Titluri pentru pagini web
Pentru ca o pagina web să arate mai relevant se poate da un titlu adecvat, cu
ajutorul etichetei pereche: <TITLE> conţinut </TITLE>. Titlul apare pe bara de titlu
a browser-ului utilizat. Blocul de titlu apare în interiorul blocului de antet
<HEAD> </HEAD>.
Conţinutul blocului de titlu va fi titlul paginii web respective şi deci folosirea
lui va fi de folos pentru vizitatorii site-ului.
Introducând în exemplul de mai sus un titlu, Internet Explorer va afişa:
<HTML>
<HEAD>
<TITLE> PRIMA PAGINA </TITLE>
</HEAD>
<BODY>
EXEMPLUL DE CREARE A UNEI PAGINI WEB
</BODY>
</HTML>
22
− Blocul interior corp program poate conţine text şi /sau imagini şi este
cuprins între controalele <BODY>…</BODY> .
− Între parantezele unghiulare <> sau </> şi cuvintele cheie din interiorul lor
nu este permis spaţiul (< HEAD > incorect).
− HTML nu face distincţie între majuscule şi literă mică cu care se scriu etichetele.
<P> 05-01-2007
<P align=right> Ana Ionescu
23
Figura 2. 4. Tag-ul <P>
24
Subsemnata Ionescu Ana va rog sa-mi eliberati o adeverinta, din care sa
reiasa ca sunt studenta a facultăţii de Matematica-Informatica din
Universitatea Bucuresti. <BR>
Menţionez ca aceasta adeverinta imi este necesara la R.A.T.B.<BR>
05-01-2007
<P align=right> Ana Ionescu
</BODY>
</HTML>
26
Se observă din figura de mai sus fontul monospaţiat folosit de PRE, în
comparaţie cu fontul normal folosit de <P> (la scrierea titlului)
Etichetele <NOBR> şi <WBR>
Etichetele <NOBR> şi <WBR> se folosesc la aranjarea textului şi sunt
asemănătoare cu tag-ul <BR>, de salt la linie nouă.
Eticheta <NOBR>
Dacă se doreşte ca un text să fie scris pe un singur rând, indiferent de
dimensiunea ferestrei, acesta se introduce în blocul <NOBR>…</NOBR> (nobreak). La
întâlnirea acestei etichete browser-ul dezactivează modul automat de trecere pe linia
următoare. Dacă textul este mai mare decât fereastra, în cazul folosirii tag-ului <NOBR>,
apare o bară de derulare orizontală, care permite vizionarea întregului rând.
Eticheta <WBR>
Pentru a introduce o linie nouă, chiar dacă linia se află în interiorul lui
NOBR, se foloseşte eticheta nepereche <WBR> (wrap break).
În exemplul de mai jos se ilustrează folosirea celor două etichete.
<HTML> <HEAD> <TITLE> NOBR şi WBR </TITLE> </HEAD>
<BODY>
<P> <NOBR>
În această carte se prezintă limbajele <WBR> HTML (HyperText Markup
Language), XHTML (Extensible HyperText Markup Language), CSS
(Cascade Style Sheets), JAVASCIPT </NOBR> </P>
</BODY> </HTML>
27
2.5. Linii orizontale
Pentru o mai bună organizare vizuală a unui document, se foloseşte eticheta
de riglă orizontală, <HR atribute>. Această etichetă poate fi plasată oriunde în
document şi are ca efect producerea unei linii orizontale pe toată lăţimea paginii,
dacă nu există atribute.
Atributele elementului HR sunt:
− align – alinierea liniei poate avea valorile: „left” (implicit), „right” şi
„center”
− width – lungimea liniei care se poate exprima:
• printr-un număr întreg pozitiv
• printr-un procent, care este o fracţiune din lungimea paginii şi este un
număr urmat de „%”, valoarea prestabilită fiind de 100%
− size – reprezintă grosimea liniei în pixeli, valoarea implicită fiind 2
− nonshade – înseamnă că linia este neumbrită, în lipsa acestui atribut linia
este de tip 3D şi umbrită
− color – indică culoarea dorită pentru linie. Valoarea implicită este negru
(„black”)
Un exemplul de utilizare a tag-ului HR este dat de următorul cod:
<HTML> <HEAD> <TITLE> Linii orizontale </TITLE> </HEAD>
<BODY> Acesta este o linie fără opţiuni
<HR>
Acesta este o linie de lungime 500px, grosime 4px, culoare albastă şi aliniata
centru
<HR align=center width=500 size=4 color=blue>
Acesta este o linie de lungime 50% din pagină, grosime 3px, culoare roşie şi
aliniată la dreapta
<HR align=right width=50% color=red size=3 noshade>
</BODY> </HTML>
28
3. Stiluri de text
32
Titluri
Dacă pagina conţine mai multe secţiuni şi subsecţiuni, HTML permite
introducerea a şase tipuri de titluri predefinite H1, H2, H3, H4, H5 şi H6.
Fiecare titlu este scris între etichetele: <H1> … </H1>, <H2> … </H2>,
<H3> … </H3>, <H4> … </H4>, <H5> … </H5> ,<H6> … </H6>.
Titlul H1 este cel mai înalt şi îngroşat, iar titlul H6 este cel mai de jos şi este
afişat cu cel mai mic şi mai subţire font.
Toate titlurile:
− sunt afişate pe un rând nou şi cu un spaţiu după blocul precedent
− acceptă atributul align = “valoare” cu valori posibile “left” (implicit),
“right”, “center” şi “justify”.
Un exemplu de utilizare a titlurilor este redat mai jos:
<HTML>
<HEAD> </HEAD>
<BODY>
<H1 align=center> TITLUL H1 (cel mai mare si gros) </H1>
<H2> TITLUL H2 </H2>
<H3 align=right> TITLUL H3 </H3>
<H4 align=justify> TITLUL H4 </H4>
<H5 align=left> TITLUL H5 </H5>
<H6 align=center> TITLUL H6 (cel mai mic si subtire) </H6>
</BODY> </HTML>
Figura 3. 5. Titluri
Stilurile DIV şi SPAN
În HTML există elemente:
− de nivel bloc, care sunt afişate la început de rând nou (<P>,<HR> etc.)
− inline, care sunt afişate pe acelaşi rând (<B>, <I>, <TT>, <FONT> etc.)
Elementul DIV este un element de bloc iar elementul SPAN este un element
inline. Aceste două elemente nu impun nici un stil pentru text, spre deosebire de un
element ca P (paragraph). De aceea, aceste elemente se folosesc împreună cu limbajul
CSS, pentru a ataşa un stil la un text sau la o porţiune dintr-un rând (în această secţiune
vor fi exemplificate numai cu atribute independente de CSS).
33
Atributele lui Div şi Span:
− align=”valoare” este acceptat numai de elementul DIV, care este un
element de bloc (Span este element inline, deci nu poate avea atributul
align).
− title=”continut” este acceptat de ambele elemente şi impune browser-ului
sa afişeze “conţinut” atunci când mouse-ul se află pe un element.
În exemplul de mai jos sunt exemplificate stilurile DIV şi SPAN.
Se observă că elementul DIV:
− nu produce un rând alb înainte şi după el, aşa cum produce elementul P
− nu lasă textul aşa cum este scris, cum produce elementul PRE
Stilul BLOCKQUOTE
Stilul logic pentru introducerea citatelor lungi se realizează cu tag-urile
<BLOCKQUOTE>…</BLOCKQUOTE> şi <Q>…</Q>. Elementul <Q> este
element inline, iar elementul <BLOCKQUOTE> este de nivel bloc. Conţinutul
blocului este afişat începând de pe rând nou, cu spaţiul înainte, după, la stânga şi la
dreapta de citat, practic indentează textul, aşa cum reiese din exemplul următor:
<HTML>
<HEAD> </HEAD>
<BODY>
<B> <TT> CITAT</B> </TT>
<BLOCKQUOTE>
"Omul nu este decat o trestie, cea mai fragila din natura,
dar este o trestie ginditoare.
" Blaise Pascal (1623-1662)
</BLOCKQUOTE>
</BODY>
</HTML>
34
Figura 3.7. Elementul BLOCKQUOTE
3.3. Fonturi
Pentru a schimba fontul unui text utilizat (dimensiune, culoare, tip de literă)
acesta se scrie între etichetele <FONT > şi </FONT>.
Eticheta pereche de formatare <FONT > şi </FONT> este un element inline,
adică se poate aplica oriunde în interiorul unui rând.
Atributele elementului FONT sunt: face, size şi color şi au sintaxa cunoscută a
unui atribut (atribut=”valoare”).
• face – indică tipul de literă utilizat pentru un font şi are sintaxa:
face = “lista de corpuri de literă”.
În cazul în care lista are mai multe de un tip de literă, acestea se separă
prin virgule. Browser-ul va utiliza primul corp de literă recunoscut. Dacă
niciunul dintre fonturi nu este găsit, browser-ul va folosi tipul de literă
36
implicit. Este indicat să se folosească ghilimele ( “ “) pentru a scrie lista de
fonturi, deoarece unele nume sunt compuse din mai multe cuvinte.
− <FONT face=”Arial, Chicago”> Fonturi simple</FONT>
− <FONT face=”Arial Narrow, Helvetica Narrow, New Courier”>
Fonturi compuse </FONT>
• size – indică dimensiunea fontului şi are sintaxa size=”dimensiunea”.
Dimensiunea se poate exprima în două moduri:
− absolut, unde dimensiunea este un număr întreg cuprins între 1 şi 7, 1
fiind cea mai mică dimensiune şi 7 cea mai mare dimensiune, valoarea
implicită fiind 3. Se observă că dimensiunea se exprimă invers faţă de
numărarea dimensiunii subtitlurilor, unde <H1> este cel mai mare, iar
<H6> este cel mai mic
− relativ, unde dimensiunea unui anumit text (literă, cuvânt, frază) este
mărită cu o unitate faţă de textul din jurul lui; valori posibile:
+1,+2,…+7 si -1,-2,..,-7. Modificările relative nu pot reduce fontul sub
size=1 sau peste size=7. De exemplu, dacă la dimensiunea implicită 3
se adaugă 7 prin <font size=+7>, efectul este acelaşi dacă utilizăm
<font size=7> sau <font size=+4>
• color – indică culoarea pentru un text specificat şi are sintaxa:
color=”culoare”. Culoarea poate fi exprimată în două moduri :
− modul text – unde valoarea “culoare” este un nume. Există o varietate
de culori dintre care 16 sunt culori standard, implementate de toate
browser-ele: aqua (verde marin), black (negru), blue (albastru), fuchsia
(violet deschis), gray (gri), green (verde), lime (citron), maroon (maro),
navy (bleumarin), olive (cachi), purple (violet), red (roşu), silver
(argintiu), teal (verde închis), white (alb) si yellow (galben).
− modul RGB – unde valoarea culorii este dată printr-un număr format
din 6 cifre hexazecimale, câte două pentru fiecare culoare de bază din
tripletul red (roşu), green (verde) şi blue (albastru) şi este precedată de
caracterul #. În anexa A se găseşte lista completă a culorilor, date prin
nume şi prin codul lor.
Pentru cele mai folosite culori avem codurile:
• Black – “#000000”
• White – “#FFFFFF”
• Red – “#FF0000”
• Green – “#00FF00”
• Blue – “#0000FF”
Elementul Basefont
Pentru a schimba fontul, chiar de la începutul paginii, se poate folosi tag-ul
<BASEFONT atribute> care are aceleaşi atribute ca şi tag-ul <FONT>.
Această etichetă formatează textul conform atributelor specificate, din locul
unde apare şi până la sfârşitul documentului şi deci nu necesită eticheta de închidere. În
37
interiorul elementului BASEFONT se pot găsi alte elemente FONT pentru formarea
unor secvenţe de text.
Utilizarea fonturilor este exemplificată în continuare:
<HTML>
<HEAD>
</HEAD>
<BODY>
<BASEFONT size=3 face=Arial>
<FONT face="Times New Roman" color="blue" size=7> Aplicarea
fonturilor</FONT><BR>
<FONT face="Courier " color="#00FF00" size=-2> acest text are dimensiune 5 si
culoarea verde</FONT><BR>
Text normal scris cu parametrii elementului BASEFONT
<FONT face="Helvetica Narrow" color="#FF0000" size=-1> Text scris cu
dimensiunea 3 si culoare rosie</FONT><BR>
Succes in continuare la insusirea
<FONT size=+1> H </FONT> <FONT size=+1> T </FONT>
<FONT size=+1> M </FONT> <FONT size=+1> L </FONT>
</BODY>
</HTML>
Figura 3. 9. Fonturi
38
4. Liste
Elementul OL
Lista ordonată are toate articolele numerotate, browser-ul fiind acela care
atribuie automat secvenţa. Pentru a crea o listă ordonată se foloseşte tag-ul pereche
<OL > … </OL>. Elementul OL este element de bloc şi va fi afişat la începutul
rândului.
39
Elementul LI
Pentru a introduce elemente în listă se folosesc etichetele <LI> şi </LI>.
Textul cuprins între aceste elemente va fi considerat un articol al listei. Eticheta de
sfârşit </LI> nu este obligatorie în HTML, dar în XHTML da.
Atributele unei liste ordonate au sintaxa: “ atribut=valoare” şi sunt:
• type – care are ca valoare un caracter care indică modul de numerotare.
Există cinci valori posibile:
- 1 – pentru cifre arabe: 1,2,3 etc şi este valoare implicită
- a – pentru literele mici : a,b,c etc.
- A – pentru litere mari: A,B,C etc.
- i – pentru cifre romane scrise cu litere mici: i, ii, iii, iv etc.
- I – pentru litere romane scrise cu litere mari: I, II, III, IV
• start – indică de unde începe numerotarea. Primul simbol dintr-o listă
ordonată este: 1, a, A, i sau I.
Următorul exemplu creează o listă ordonată pentru exemplu de mai sus:
<HTML>
<HEAD> </HEAD>
<OL>LISTE ORDONTE
<LI> COPY
<LI> CUT
<LI> PASTE
<LI> FIND
<LI> DELETE
<LI> REPLACE
</OL>
<BODY> </HTML>
Figura 4. 1. Liste ordonate
În exemplul următor se creează liste ordonate imbricate:
<HTML>
<HEAD> </HEAD>
<BODY><B>LISTE ORDONTE IMBRICATE </B>
<OL> PRINCIPALELE COMENZI DIN MENU FORMAT:
<LI> FONT
<OL type="A" >MENU FONT ARE TREI ETICHETE
<LI > Font are trei caracteristici
<OL type="a">
<LI> Font
<LI> Font style
<LI> Size
</OL>
<LI> Character Spacing
<LI> Text Effects
</OL>
40
<LI> PARAGRAPH
<LI> BULLETS AND NUMBERING
<LI>COLUMNS
</OL>
<BODY></HTML>
41
Figura 4. 3. Liste marcate
Lista vidă
O listă fără niciun element se numeşte listă vidă. Putem crea o listă vidă şi
în scopul de a indenta un text (aşa cum face elementul <blockquote>).
<HTML>
<HEAD> </HEAD>
<BODY><B> LISTA VIDA</B>
<UL> <B> Atributele elementului BASEFONT in HTML: </B><BR>
FACE - pentru tip de litera <BR>
SIZE - pentru dimensiune <BR>
COLOR- pentru culoare <BR>
</UL>
<BODY> </HTML>
42
<HTML>
<HEAD> </HEAD>
<BODY>LISTE NEORDONATE IMBRICATE
<UL> COMENZI EDIT SI MOD DE EXECUTIE
<LI> COPY
<UL>
<LI> CTRL+C
<LI> Menu Edit
<LI> Menu contextual
<LI> Buton bara
<LI> Drag & Drop
</UL>
<LI> CUT
<UL type="square">
<LI> CTRL+X
<LI> Menu Edit
<LI> Menu contextual
<LI> Buton bara
<LI> Drag & Drop
</UL>
<LI> PASTE
<UL type="disc">
<LI> CTRL+V
<LI> Menu Edit
<LI> Menu contextual
<LI> Buton bara
</UL>
<LI> FIND
<UL>
<LI> CTRL+F
<LI> Menu Edit
</UL>
<BODY> </HTML> Figura 4. 5. Liste marcate imbricate
43
<HTML>
<HEAD> </HEAD>
<BODY>LISTE MIXTE IMBRICATE
<OL type="I" start=4> Citeva elemente HTML
<LI> FONT
<UL type="disc">
<LI> face
<LI> size
<LI> color
</UL>
<LI>BASEFONT
<UL type="circle">
<LI> face
<LI> size
<LI> color
</UL>
<LI> OL
<UL type="square">
<LI> type
<LI> start
</UL>
<BODY>
</HTML> Figura 4. 6. Liste mixte imbricate
<HTML>
<HEAD> </HEAD>
<BODY>
<DL>ORAR
<DT>LUNI
<DD>10-18
<DT>MARTI
45
<DT>MIERCURI
<DD>9-17
<DT>JOI
<DD>9-13
<DD>15-19
<DT>VINERI
<DD>9-14
</DL>
</BODY>
</HTML>
<HTML>
<HEAD> </HEAD>
<BODY>
<DL compact> ORAR
<DT>LUNI <DD>10-18
<DT>MARTI
<DT>MIER
<DD>9-17
<DT>JOI
<DD>9-13
<DD>15-19
<DT>VINERI
<DD>9-14
</DL>
</BODY>
</HTML>
Figura 4. 9. Listă de definiţii compactată
46
5. Tabele
5.1. Generalităţi
Tabelele reprezintă în HTML un element important, evidenţiindu-se prin
tag-urile <TABLE> şi </TABLE>. El are o formă dreptunghiulară şi este alcătuit
din linii şi coloane la intersecţia cărora se află celulele.
Tabelele oferă o mulţime de posibilităţi pentru a evidenţia un text pe mai
multe linii şi coloane, pentru delimitarea spaţiului unei pagini, în vederea grupării
într-o machetă a unor elemente (text, imagini etc).
Spre deosebire de tabelele din procesoarele de texte, tabelele din HTML au
dezavantajul că sunt destul de greu de construit. Trebuie specificaţi parametrii
tabelului, ai liniilor şi ai celulelor. Orice tabel este compus din trei elemente şi
anume:
− <TABLE> ... </TABLE> – descrie un tabel
− <TR atribute> ... </TR> – (Table Row) – descrie o linie a unui tabel
− <TD atribute> ... </TD> (Table Data) – descrie o celulă a tabelului
OBSERVAŢII!
− Etichetele de închidere </TR> şi </TD> sunt opţionale, astfel o linie
nouă începe atunci când se întâlneşte o nouă etichetă <TR>. În
XHTML aceste etichete sunt obligatorii.
− Dacă o linie a unui tabel are mai multe celule decât restul liniilor,
automat toate liniile vor avea acest număr maxim de celule, browser-ul
adăugând celule vide liniilor, pentru a respecta forma dreptunghiulară a
tabelului.
− În lipsa unor atribute de formatare a tabelului, toate celulele unei
coloane au lăţimea impusă de cea mai lată celulă.
− Celulele unui tabel pot conţine orice tip de informaţie: text, imagine,
tabele, sau chiar combinaţii ale acestora.
Figura 5. 1. Tabele
Atributul BORDER
Aşa cum am mai precizat, un tabel este afişat implicit fără bordură şi
caroiaj interior. O bordură pentru un tabel poate fi introdusă prin atributul
border=”valoare”, unde “valoare” reprezintă grosimea în pixeli a liniei de contur a
tabelului.
48
OBSERVAŢII!
• Dacă “valoare”=0, atunci border-ul lipseşte şi este echivalent cu lipsa
atributului din <TABLE>
• Valoarea implicită a border-ului este 1, deci border fără valoare este
echivalent cu border =1
• Dacă “valoare” <> 0 atunci linia de contur este afişată în 3-D
Dacă în exemplul din figura 5.1 adăugăm atributul border la eticheta
− <TABLE border> – va apărea o linie de contur de grosime 1
− <TABLE border=0> – tabelul nu va avea contur
− <TABLE border=”5”> – tabelul va avea un contur de grosime 5
aşa cum reiese din figura 5.2.
Atributul BORDERCOLOR
Acest atribut indică culoarea bordurii în Netscape Navigator, iar în Internet
Explorer indică şi culoarea caroiajului interior al tabelului. Sintaxa lui este
bordercolor=”valoare”, unde valorile posibile sunt ca şi ale atributului color de la
etichetele <FONT> şi <BASEFONT> şi anume
− un nume de culoare
− o secvenţă RGB (red, green, blue) de 6 cifre hexazecimale, câte două
pentru fiecare culoare, precedate de #.
Atributul FRAME
Acest atribut oferă un control şi, mai precis, al chenarelor din jurul
tabelelor şi are sintaxa frame= “ valoare”. Valorile posibile şi modul de afişare a
lor sunt:
a11 a12
- lhs – afişează o linie la stânga a21 a22
a11 a12
- rhs – afişează o linie la dreapta
a21 a22
- vside – afişează linii la dreapta şi la stânga a11 a12
a21 a22
Atributul ALIGN
Atributul align precizează alinierea tabelului în pagină. Valorile posibile
sunt: left (implicit), right şi center.
În cazul în care există şi text, acesta va fi poziţionat faţă de tabel în funcţie
de alinierea acestuia.
Un exemplu este dat mai jos:
<HTML><HEAD></HEAD>
<BODY>
<TABLE frame=vsides border align= left >
<TR ><TD>a11<TD>a12
<TR><TD>a21<TD>a22
</TABLE>
<P>Textul este aliniat la stanga tabelului </P>
<TABLE border rules=none align= right >
<TR ><TD>a11<TD>a12
<TR ><TD>a21<TD>a22
</TABLE>
<P>Textul este aliniat la dreapta tabelului</P>
Acesta este un tabel aliniat la centru. Textul apare deasupra si
<TABLE border=4 rules=all align= center >
<TR ><TD>a11<TD>a12
<TR ><TD>a21<TD>a22
51
</TABLE>
<P>sub tabel</P>
</BODY>
</HTML>
52
Figura 5. 5. Atributele width şi height
Atributul CELLSPACING
Acest atribut defineşte spaţiul dintre celule. Valorile acestui atribut se pot
da în pixeli sau în procente faţă de dimensiunea blocului părinte. Valoarea
implicită este “0” pentru tabelele fără caroiaje şi “2” pentru cele cu caroiaj.
Atributul CELLPADDING
Acest atribut defineşte spaţiul lăsat între marginea celulei şi informaţia din
celulă (text, imagine etc). Valoarea implicită este 0. Valorile atributului pot fi date
în numere (ce reprezintă distanţa în pixeli) sau în procente.
În exemplul de mai jos sunt utilizate aceste atribute.
<HTML>
<HEAD></HEAD>
<BODY>
<TABLE border=5
bordercolor=”#0000FF”
align=center width=”50%” height=50
cellspacing=3 cellpadding=10>
<TR><TD>a11<TD>a12<TD>a13
<TR><TD>a21<TD>a22<TD>a23
<TR><TD>a31<TD>a32<TD>a33
</TABLE>
</BODY>
</HTML>
Figura 5. 6. Atributele elementului TABLE
53
Atributele HSPACE şi VSPACE
Aceste atribute asigură distanţa de la tabel la celelalte componente din
pagină, pe orizontală (hspace) şi pe verticală (vspace). Aceste atribute nu sunt
valabile în Internet Explorer. Valorile acestor atribute sunt date în pixeli. Pentru
exemplificare s-a folosit browser-ul MozillaFirefox:
<HTML> <HEAD> </HEAD>
<BODY>
Acesta este un text inaintea tabelului. Acesta este un text inaintea tabelului.
Acesta este un text inaintea tabelului. Acesta este un text inaintea tabelului.
Acesta este un text inaintea tabelului.
<TABLE border=2 bordercolor=red hspace="50" vspace="30">
<TR><TD>a11<TD>a12<TD>a13
<TR><TD>a21<TD>a22<TD>a23
<TR><TD>a31<TD>a32<TD>a33
</TABLE>
Acesta este un text dupa tabel. Tabelul de mai jos va avea spatii
albe in jurul lui. Acesta este un text dupa tabel. Tabelul de mai jos va avea
spatii albe in jurul lui. Acesta este un text dupa tabel. Tabelul de mai jos va
avea spatii albe in jurul lui.
</BODY> </HTML>
Atributul BGCOLOR
54
următoarea: a elementului <TD>, a elementului <TR> şi, în final, a elementului
<TABLE>.
5.2.1. Elementul TH
În cadrul unui tabel se poate înlocui eticheta <TD> cu eticheta <TH>
pentru a specifica antete de coloane şi de linii. Elementul <TH> este aproape
identic cu <TD>, cu două excepţii: dacă celula conţine text, el este afişat aldin
(bold) şi este centrat în celulă.
În exemplul de mai jos se redă un tabel cu antet de linie şi de coloană.
<HTML><HRAD>
</HEAD><BODY>
<TABLE border align=”center”
cellspacing=”2” bgcolor=”yellow” vspace=”70”>
<TR> <TH> Beneficii 2006 <TH> Semestrul I <TH> Semestrul II
<TR> <TH> Bucuresti <TD> 100000 euro <TD> 250000 euro
<TR> <TH>Iasi <TD> 200000 euro <TD> 300000 euro
</TABLE>
</BODY>
</HTML>
Figura 5. 8. Elementul TH
55
În exemplul de mai sus adăugăm o etichetă tabelului
<HTML>
<HRAD></HEAD>
<BODY>
<TABLE border align=”center”
cellspacing=”2” bgcolor=yellow vspace=”70”>
<CAPTION align=bottom> <b> Vanzari </b></CAPTION >
<TR> <TH> Beneficii 2005 <TH> Semestrul I <TH> Semestrul II
<TR> <TH> Bucuresti <TD> 100000 euro <TD> 250000 euro
<TR> <TH>Iasi <TD> 200000 euro <TD> 300000 euro
</TABLE>
</BODY>
</HTML>
56
− align – aliniază orizontal conţinutul tuturor celulelor unei linii. Valorile
posibile sunt: left (aliniere implicită), right, center sau justify
− valign – specifică alinierea pe verticală pentru toate celulele dintr-o linie.
Valorile posibile sunt: top (implicită), middle (centru) şi bottom (jos)
− bgcolor – culoare de fond pentru toate celulele unei linii. Are aceleaşi
valori ca şi atributul bgcolor pentru TABLE
Observaţii!
− Toate atributele liniei le găsim şi în lista atributelor pentru TABLE
− Atributul align pentru TABLE aliniază tabelul pe orizontală, în timp ce
atributul align al elementului TR aliniază pe orizontală conţinutul
celulelor unei linii.
− Atributul bgcolor al lui TABLE se referă la culoarea de fond a tabelului,
în timp ce atributul bgcolor al lui TR se referă la culoarea de fond a
celulelor dintr-o linie.
− Atributele de linie sunt prioritare celor de tabel.
Un exemplu care utilizează atributele de linie:
<HTML><HRAD></HEAD><BODY>
<TABLE border align=”center” cellspacing=”2” bgcolor=yellow >
<TR align=”center” valign=”middle” bgcolor=”red”>
<TD> Prescurtarea HyperText Markup Language <TD> HTML
<TR align=”right” valign=”bottom”> <TD> Limbaj<TD> Pagini
</TR>
</TABLE> </BODY></HTML>
57
5.4. Atributele elementelor TD şi TH
Elementele TD şi TH descriu celulele unui tabel. Diferenţa dintre aceste
elemente este aceea că, în cazul utilizării elementului TH, conţinutul celulei, dacă
acesta este text, este scris aldin. Atributele de celulă se scriu în eticheta <TD
atribut>, sunt prioritare celor de linie (TR) şi celor de tabele (TABLE) şi sunt:
58
Atributele align şi valign
Aceste atribute stabilesc alinierea pe orizontală (align) şi pe verticală
(valign) a textului dintr-o celulă. Au aceleaşi valori ca şi atributele cu aceleaşi
nume de la nivel de linie şi tabel, dar sunt prioritare faţă de alinierea la nivel de
linie şi de tabel.
<html>
<head></head><body>
<table border bordercolor="#00FF00">
<TR><TD>a11<TD>a12<TD>a13
<TR><TD>a21<TD>a22
<TR><TD>a31<TD>a32<TD>a33
</table>
</body></html>
60
<HTML>
<HEAD>
</HEAD>
<BODY>
<TABLE border=2>
<TR><TD>a11<TD>a12<TD>a13
<TR><TD colspan=2>a21<TD>a23
<TR><TD>a31<TD> <TD>a33
</TABLE></BODY></HTML>
Figura 5. 14. Celule vide
Un alt exemplu mai complet de utilizare a celor două atribute va fi dat mai jos:
<HTML><HEAD></HEAD><BODY>
<TABLE border=”4” bordercolor=”blue”>
<TR> <TD colspan=3 align=center valign=25%>
<font sise=6 color =red>
atributele colspan si rowspan </font>
<TR><TD rowspan=3> a11<br>a21 <br>a31
<TD>a12<TD colspan=2 rowspan=3>
a13 a14<br>a23 a24 <BR> a33 a34
<TR> <TD>a22 <TR><TD>a32 <TR><TD>a41
<TD colspan=3 align=center> a42 a43 a44
</TABLE>
</BODY> </HTML>
Atributul NOWRAP
Pentru a afişa conţinutul unei celule pe un singur rând se utilizează
atributul NOWRAP. În cazul că textul depăşeşte dimensiunea celulei, apare bara de
defilare pe orizontală, ca în exemplul de mai jos.
61
<HTML>
<HEAD> </HEAD>
<BODY>
<TABLE border=”2” align=”center”
width=”100%” height=”100%”>
<TR><TD>XHTML
<TD nowrap>Extensible HyperText MarkupLanguage
<TR> <TD> Sigla <TD>Limbaj
</TABLE>
</BODY>
</HTML>
OBSERVAŢII!
− aceste blocuri sunt incluse în blocul <TABLE> ... </TABLE>, dar nu
sunt obligatorii în realizarea unui tabel
62
− Fiecare bloc <TABLE> ... </TABLE> poate conţine numai câte un bloc
de secţiune
− Etichetele de sfârşit </THEAD>,</TFOOT>,</TBODY> sunt opţionale.
− Eticheta <THEAD> şi <TFOOT> trebuie să apară după <TABLE> şi
înainte de <TBODY>. Browser-ul poate afişa liniile de final înainte ca
liniile corpului să conţină datele care se încarcă.
− Atributele pentru aceste elemente se aplică pentru toate liniile care
cuprind blocurile, în lipsa altor formatări, şi acestea sunt: align, valign,
bgcolor.
− Fiecare din aceste elemente conţin etichetele <TR> şi <TD> obişnuite.
Structura unui tabel care utilizează facilitatea de grupare de linii va fi:
<TABLE atribute>
<CAPTION > ... </CAPTION>
<THEAD>
<TR>
….
</THEAD>
<TFOOT>
<TR>
….
</TFOOT>
<TBODY>
<TR>…
</TBODY>
</TABLE>
În exemplul din figura 5.9, se grupează liniile în blocuri de antet, subsol şi
corp de tabel:
<HTML><HEAD></HEAD><BODY>
<TABLE border=3 bordercolor=light align=center
cellspacing=2 bgcolor=yellow vspace=70>
<CAPTION align=bottom> <B> Vânzări </B></CAPTION>
<THEAD>
<TR> <TH colspan=3>Beneficiul pe anul 2006
<TR><TH>Judet <TH> Semestrul I<TH> Semestrul II
</THEAD>
<TFOOT>
<TR><TH> TOTAL<TD> 30000 ron<TD> 55000 ron
</TFOOT>
<TBODY>
<TR<TH> Bucuresti <TD> 10000 ron<TD> 25000 ron
<TR><TH>Iasi <TD> 20000 ron <TD> 30000 ron
</TBODY>
</TABLE> </BODY> </HTML>
63
Figura 5. 17. Gruparea liniilor
65
6. Imagini
66
Exemple de utilizare a adreselor URL absolute şi relative vor fi date în
exemplele următoare.
Există numeroase formate grafice, dar cele mai răspândite sunt:
GIF (Graphics Interchange Format) introdus de Compuserve
JPEG (Joint Photographic Expert Group)
PNG (Portable Network Graphic – Format Grafic portabil în reţea)
Aceste formate sunt dependente de platformă. Imaginile grafice sunt
construite din pixeli, care sunt puncte distincte de informaţie de imagine. Fiecare
pixel necesită un bit de culoare. Principalele caracteristici ale formatelor de imagine
sunt: numărul de culori, compresia, transparenţa, întreţeserea şi animaţia.
Asemănările şi deosebirile dintre cele trei formate grafice sunt:
Imaginile GIF pot utiliza doar 256 de culori, având nevoie de 8 biţi, în
timp ce formatele JPEG şi PNG pot utiliza milioane de culori, având 24 de
biţi de culoare, respectiv 32 de biţi /pixeli de culoare. Ceea ce face
formatul GIF atât de utilizat nu este numai paleta mică de culori (256), dar
şi posibilitatea reducerii numărului de culori, astfel, dacă este nevoie doar
de 2 culori, se utilizează numai un bit, ceea ce reduce dimensiunea
fişierului de 8 ori.
Toate aceste trei formate grafice pot comprima imaginea pentru a reduce
dimensiunile fişierelor. Comprimarea se poate face, în mod diferit, pentru
fiecare format, şi, din aceste motive, ele pot avea dimensiuni mai mici
într-un format decât în altul.
Formatele GIF şi PNG admit culoarea transparentă, în timp ce formatul
JPEG nu admite transparenţa.
Formatele GIF şi PNG admit animaţia, în timp ce, cu formatul JPEG, nu
se poate obţine animaţie. De exemplu, pentru a obţine animaţie pentru
imagini GIF se poate folosi pentru Windows pachetul GIF Construction
Set, iar pentru Macintosh pachetul soft GIFBuilder.
Toate cele trei formate acceptă întreţeserea. De exemplu, când se
vizualizează o pagină web, se pot observa imaginile care apar linie cu
linie, de la forma brută până la redarea finală, aceasta reprezintă
întreţeserea. Deşi dimensiunea fişierelor creşte cu până la 10%, cu ajutorul
acestei întreţeseri, vizitatorul poate să-şi facă o imagine despre ceea ce se
va descărca.
Având în vedere cele cinci caracteristici ale formatelor de imagine, acestea
pot fi recomandate:
– 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 îmbină caracteristicile celor două.
67
Unele imagini pot fi transformate în format GIF cu ajutorul unor programe
freeware (gratuite) sau shareware (contra cost), dar calculatoarele moderne acceptă
salvarea imaginilor direct în format GIF.
Atributul SRC
Atributul src este un atribut obligatoriu al elementului IMG, care identifică
fişierul ce conţine imaginea care se doreşte a fi inserată. Fişierele imagine pot avea
68
extensia: .jpg, jpeg, png etc. Fişierul care conţine imaginea se găseşte în directorul
curent (ca în exemplul de mai sus), în alt folder din calculatorul curent sau în reţeaua
web.
În cazul în care fişierul se află:
în altă locaţie decât directorul curent, numele fişierului trebuie precedat de
calea relativă la directorul curent
în reţeaua web, trebuie dată adresa URL absolută, ca de exemplu:
http://www.fmi.unibuc.ro./facmat.jpg
Atributul alt
Există posibilitatea ca imaginile să nu se poată încă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="Taj_Mahali.jpg" height =150 width = 150 alt="Hotelul TRUMP
Taj Mahal">
de la Atlantic City
</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 începe de la baza pozei).
Valorile atributului sunt:
– left – aliniere la stânga şi textul „curge” pe lângă imagine în dreapta ei,
începând din partea superioară
– right – aliniere la dreapta şi textul „curge” pe lângă imagine în stânga ei,
începând din partea superioară
69
– 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
70
Figura 6. 3. Atributul align al elementului IMG
71
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 din figura 6.1 se mai adaugă acest atribut
<IMG src="Taj_Mahal.jpg" height =150 width = 150 border=4>
browser-ul va afişa:
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ă
Un exemplu de redimensionare a imaginii este dat mai jos.
<HTML> <HEAD></HEAD>
<BODY>
<IMG src="c:/carte_web/UnivSH.jpg" alt="Universitatea Spiru Haret">
72
<IMG src="c:/carte_web/UnivSH.jpg" alt="Universitatea Spiru Haret"
width=80 height=200>
<IMG src="c:/carte_web/UnivSH.jpg" alt="Universitatea Spiru Haret"
height=150>
</BODY> </HTML>
73
contribuie în mod decisiv la dezvoltarea şi modernizarea învăţământului, ştiinţei şi
culturii româneşti.
</BODY> </HTML>
74
7. Legături (Link-uri)
7.1. Elementul A
Pentru a crea o legătură se foloseşte marcajul 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
75
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. La un moment dat doar o
legătură poate fi activă şi în jurul conţinutului legăturii este afişat un chenar de
către unele browser-e.
Atributele marcajului <A>
Atributele marcajului <A> sunt: href, target, title, name.
Atributul HREF (referinţă hipertext)
Acest atribut este obligatoriu pentru elementul 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 Universităţii Bucureşti, de pe WEB.
<HTML>
<HEAD> </HEAD>
<BODY>
Florile mele preferate
<A href="flori.jpg"> CRINI </A>
<P>
Detalii despre Universitatea Bucuresti
<A href="http://www.unibuc.ro">UnivBuc</A>
</P>
</BODY>
</HTML
Figura 7. 1. Legături
Atributul TARGET
Când utilizatorul activează o legătură, browser-ul înlocuieş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
76
target=”nume”, unde “nume” defineşte fereastra în care va fi încărcată noua
pagină. Dacă nu există nicio fereastră cu acest nume, va fi creată o fereastră nouă
cu acest nume.
Numele este orice şir de caractere sau valori constante: self-implicită,
blank, parent, top. Pot fi încărcate în aceeaşi fereastră mai multe pagini şi, în acest
caz, cu Back şi Forward, se vizualizează paginile încărcate.
În exemplul din figurile 7.3 şi 7.9, se utilizează acest atribut.
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 elementului <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 galben).
Atributul NAME
Acest atribut este utilizat pentru a defini o ancoră în interiorul unei pagini.
Sintaxa acestui atribut este: name=”valoare”. Atributul va fi exemplificat în
secţiunea 7.7.
77
Dacă se doreşte să se viziteze altă pagină a respectivului site, se scrie
numele fişierului .html, respectiv, ca în exemplul de mai jos:
<HTML> <HEAD> </HEAD>
<BODY>
<A href="http://www.edu.ro/index.php/articles/c108/" target="univ">
Lista Universitati </A> <BR>
<A href="http://www.edu.ro/index.php/articles/c487/" target="univ">
Lista Universitati Stat </A> <BR>
<A href="http://www.edu.ro/index.php/articles/3880" target="univ">
Lista Universitati Particulare Acreditate </A><BR>
<A href="http://www.edu.ro/index.php/articles/3882" target="univ">
Lista Universitati Particulare Autorizate </A><BR>
<A href= "http://www.edu.ro/index.php/articles/3881" target="univ">
Lista Postuniversitare </A><BR>
</BODY>
</HTML>
<HTML>
<HEAD> <TITLE> Legaturi cu imagini </TITLE> </HEAD>
<BODY>
Facultatea de Matematica-Informatica UnivBuc
<A href=http://www.fmi.unibuc.ro>
<IMG src= "C:\My Documents\My Pictures\facmat.bmp" width=70 height=70>
</A>
</BODY>
</HTML>
78
Figura 7. 4. Legături cu imagine
Dacă în site-ul vizitat nu există o imagine ca fişier .gif sau .jpg, atunci se
copiază imaginea existentă cu Print Screen, se deschide Paint şi se lipeşte (Paste)
imaginea. Se decupează din imagine ce ne interesează şi se copiază într-un nou
fişier care se salvează cu nume.bmp.
Dacă imaginea dintr-o pagină este un fişier imagine, se dă clic dreapta şi
din Properties se află numele fişierului. Se pot folosi şi imagini din calculatorul
nostru şi atunci adresa URL a atributului src este una relativă.
Un link poate fi format şi din text şi din imagine ca în figura de mai jos:
<HTML>
<HEAD> <TITLE> Legaturi cu text si cu imagini </TITLE> </HEAD>
<BODY>
Facultatea de Matematica-Informatica UnivBuc
79
<A href=http://www.fmi.unibuc.ro> UnivBuc
<IMG src="C:\My Documents\My Pictures\facmat.bmp" width=70
height=70> </A>
</BODY> </HTML
80
C:/
Pag_0.pdf
SISTEM
Pag_1.html
Pag 2.pdf
PROIECTARE
Pag_2.htm
Pag_3.htm
EXPLOATARE
Pag_4.htm
Pag 5.htm
82
Figura 7. 8. Legături la site-uri non Web
Se optează dacă fişierul să fie deschis sau salvat. În unele cazuri Open este
implicit, adică după download-are este lansat programul care-l prelucrează, de
exemplu un sunet şi un film.
De exemplu:
<A href=”d:/poze/craciun_2006.avi”> MOS CRACIUN</A>
Fişierele .avi se pot găsi şi pe site-uri, dar durează mult transferul pe
calculatorul nostru
– browser-ul cunoaşte tipul de fişier şi acesta va fi deschis în fereastra sa.
Utilizând figura 7.6, avem codul HTML:
83
<HTML>
<HEAD>
</HEAD>
<BODY>
<A Href=”../../../pag_2.pdf “ target=”FPDF”>
Fisier PDF </A> <BR>
<A Href=”/pag_0.pdf “ target=”FPDF”>
Alt Fisier PDF </A> <BR>
<A Href=”../../../pag_1.txt” target=”FTXT”>
Fisier text </A> <BR>
<A Href=”/SISTEM/IMAGINI/pag1.gif:/”
target=”FGIF”> DESEN</A>
</BODY>
</HTML>
86
Să considerăm o agendă cu salariaţii unei firme:
<HTML>
<HEAD> </HEAD>
<BODY>
<H1> Agenda <H1>
<A href="#a-c"> [A-C] </A>
<A href="#d-h"> [D-H] </A>
<A href="#i-l"> [I-L] </A>
<A href="#m-n"> [M-N] </A>
<A href="#o-s"> [O-S] </A>
<A href="#t-w"> [T-W] </A>
<H2> <A id="a-c"> [A-C] </A>
<H2>
Antonescu Ion <br>
Badila Ana <br>
Constantinescu Ana <br>
Constantinescu Dan <br>
<H2> <A id="d-h"> [D-H] </A>
<H2>
Dorobantu Ion<br>
Ene Horia<br>
Horia …….<br>
<H2> <A id="i-l"> [I-L] </A> <H2>
Ionescu Ion<br>
Jeny Amalia<br>
Login Ana<br>
<H2> <A id="m-n"> [M-N] </A>
<H2>
Manea Flori<br>
Niculescu Silvia<br>
<H2> <A id="o-s"> [O-S] </A>
<H2>
Oprea Florin<br>
Radulescu Mihai<br>
Sandulescu Radu <br>
<H2> <A id="t-w"> [T-W] </A>
<H2>
Tomescu Emil<br>
Udrea Xenia<br>
</BODY> </HTML>
Figura 7. 11. Salt într-o agendă
87
7.8. Trimiterea automată a unui e-mail
Dacă dorim să trimitem un e-mail dintr-o pagină, se creează o legătură la o
adresă e-mail. Legătura va avea atributul href a cărui valoare este mailto (protocol
pentru poştă), urmată de”:” şi de o adresă de e-mail validă, de exemplu:
<A href=”mailto:niculescurodica@yahoo.com”> Puteti sa-mi scrieti </A>
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:
<ADRESS> <A href=”mailto:niculescurodica@yahoo.com”> Puteti sa-mi scrieti
</A> </ADRESS>
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:niculescurodica@yahoo.com? subject=Anunt&
Body=Va rog sa-mi scrieti!”> Astept mesaje </A> </ADRESS>
</BODY>
</HTML>
88
7.9. Culorile legăturilor
O legătură poate fi în una din stările:
− activă
− vizitată
− nevizitată
În funcţie de starea în care se află, o legătură are o anumită culoare şi
anume:
– Starea activă are:
• Culoarea implicită “#FF0000” (roşu)
• Culoarea se poate schimba cu atributul alink=”culoare” al
elementului BODY
– Starea vizitată are:
• Culoarea implicită “#800080” (purple)
• Culoarea se poate schimba cu atributul vlink=”culoare” al
elementului BODY
– Starea nevizitată are:
• Culoarea implicită “#0000FF” (albastru)
• Culoarea se poate schimba cu atributul link=”culoare” al
elementului BODY
<HTML>
<HEAD>
</HEAD>
<BODY alink=”green”
vlink=”magenta”
link=”darkblue”>
<A href=”/pag_1.html”>Analiza</A>
<A href=”/pag_2.html”>Proiectare</A>
<Ahref=”/pag_0.pdf”>Prima pagina</A>
</BODY>
</HTML>
89
8. Elementele de structură: HTML, HEAD şi BODY
90
<HTML>
<HEAD>
<TITLE>
Structura paginii WEB
</TITLE>
</HEAD>
<BODY>
Aceasta este structura generală a unui document HTML
</BODY>
</HTML>
92
http-equiv – valorile posibile sunt:
− from
− replay-to
− creation-date
− expires
− refresh
− pragma
Elementul META are şi alte atribute, dar foarte rar sunt folosite. Aceasta
din cauză că au apărut alte modalităţi prin care aceleaşi efecte sau chiar mai multe
se pot rezolva mai eficient.
Realizatorii motoarelor de căutare au dorit să ajute programatorii paginilor
web cu elementul META pentru a evidenţia conţinutul paginilor. Unii autori au
introdus cuvinte care nu au legătură cu paginile web, doar pe motiv de a părea mai
interesanţi. Eticheta META devine astfel inutilă, poate o unealtă pentru SPAM
(informaţii nedorite). Din acest motiv, unele motoare au renunţat definitiv la
informaţiile din META, iar altele, dimpotrivă, dacă paginile nu conţin elemente
META, pun paginile la sfârşitul listei. Există firme specializate care, contra cost,
optimizează site-urile pentru motoarele de căutare (SEO-Search Engine
Optimization).
NOTĂ! În atributele elementului META nu se folosesc cuvinte care nu
sunt incluse în pagină şi de asemenea nu se repetă cuvinte.
În continuare se trec în revistă atributele enumerate mai sus.
Descrierea unei pagini (fişier html)
Se utilizează eticheta META cu atributele:
name=”description” content=”sir de caractere”
Motorul de căutare va afişa textul (valoarea atributului content); în lipsa
acestui atribut, motorul va afişa primele rânduri ale paginii.
Cuvinte cheie
Cuvintele cheie specifică motoarelor de căutare cuvintele după care să fie
regăsit un anumit site. Aşadar, cuvintele cheie declarate trebuie să se regăsească în
93
interiorul paginii. În exemplul anterior, dacă se introduc două elemente META,
browser-ul va afişa aceeaşi fereastră ca în figura 8.2, cu excepţia antetului de titlu.
<HTML>
<HEAD>
<BASE href="http://www.edu.ro/index.php/articles">
<TITLE> Elementul META_KEY </TITLE>
<META name="description" content="invatamint suparior">
<META name="keywords" content=" universitati, stat, particulare,
postuniversitare">
</HEAD>
<BODY>
<A href="c108"> Lista Universitati </A> <BR>
<A href="c487"> Lista Universitati Stat </A><BR>
<A href="3880"> Lista Universitati Particulare Acreditate </A> <BR>
<A href="3882"> Lista Universitati Particulare Autorizate </A> <BR>
<A href="3881"> Lista Poastuniversitare </A> <BR>
</BODY>
</HTML>
Author şi copyright
Pentru a introduce informaţii despre autor sau o autoritate şi despre
drepturile de copyright se introduc două etichete <META> cu valorile atributelor
name, “author” şi respectiv “copyright”. Deoarece aceste informaţii nu sunt afişate
de browser este indicat să se introducă şi în blocul <BODY>…</BODY> al
fişierului informaţii, ca în exemplul următor (se observă că pentru a obţine
simbolul © se utilizează secvenţa ©).
<HTML>
94
<HEAD>
<BASE href="http://www.edu.ro/index.php/articles">
<TITLE> Elementul META_Author</TITLE>
<META name"description" content="Carte WEB">
<META name="author" content="Rodica Niculescu>
<META name="copyright" content="Editura Spiru Haret">
</HEAD>
<BODY>
copyright©2006, Editura Spiru Haret
</BODY> </HTML>
<HTML>
<HEAD>
<TITLE> Elementul META_http-equiv</TITLE>
<META name"description" content="Carte WEB">
<META name="author" content="Rodica Niculescu">
<META name="copyright" content="Editura Spiru Haret">
<META http-equiv="from" content="rodicaniculescu@gmail.com">
<META http-equiv="replay-to" content="editura_spiruharet@yahoo.com">
</HEAD>
95
<BODY>
<P> copyright©2006, Editura Spiru Haret </P>
</BODY>
</HTML>
Refresh şi Pragma
Pentru transformarea, reîmprospătarea sau redirecţionarea unei pagini se
poate folosi atributul http-equiv cu valorile refresh şi pragma. În cazul
reîmprospătării paginii, valoarea atributului content este un număr, care indică
96
numărul de secunde după care pagina se reîmprospătează (refresh). În cazul
redirecţionării paginii la o altă pagină, după un număr de secunde, valoarea
atributului content este : “nr secunde;adresa URL”, unde adresa URL este adresa
noii pagini. Pentru a descărca o pagină ori de câte ori se accesează pagina, se
foloseşte elementul pragma.
În exemplu de mai jos se foloseşte elementul Meta cu atributul
http-equiv = refresh.
<HTML>
<HEAD>
<TITLE> Elementul META_http-equiv</TITLE>
<META http-equiv="refresh" content="120">
</HEAD>
<BODY>
<P> Fisierul se va actualiza automat la 2 minute</P>
</BODY>
</HTML>
97
Figura 8. 6. Elementul META cu atributul refresh de redirecţionare
Lang
Acest atribut al elementului META se utilizează pentru a specifica limba
utilizată pentru metadate. Valoarea acestui atribut poate fi dată prin două caractere
(exemplu: “ro”) sau printr-o secvenţă de 5 caractere, indicând dialectul unei limbi
(exemplu: ”en-us”)
De exemplu:
<meta name= ”keyords content=”clase, obiecte, attribute” lang=”ro”>
Elementul STYLE
Acest element din blocul de antet este utilizat pentru introducerea stilurilor.
Foile de stil (CSS-Cascading Style Sheets) se introduc între etichetele <STYLE>
şi </STYLE>.
Foile de stil pot fi însă definite şi în fişiere separate sau inline, în corpul
programului. Stilurile vor fi tratate în capitolele 13 – 15.
Elementul SCRIPT
Acest element din blocul de antet este utilizat pentru introducerea unor
secvenţe de program de scriptare în cadrul paginilor web.
Scripturile, ca şi stilurile, pot fi introduse şi în fişiere separate sau în
corpul programului.
Există mai multe limbaje de scriptare, ca de exemplu, JavaScript, Jscript,
VBScript etc. În această carte va fi tratat scriptul JavaScript, în capitolele 16 – 20.
98
Atributele elementului BODY sunt:
Background – indică o imagine care dorim să apară pe fundal.
Imaginea se va repeta atât pe orizontală, cât şi pe verticală până va
umple tot corpul. Acest atribut a fost descris şi la tabele, fiind atribut şi
al elementelor <TABLE>, <TR> şi <TD>.
Bgcolor – indică culoarea de fond. Dacă se folosesc ambele atribute şi,
în cazul în care imaginea nu se încarcă, atunci apare culoarea de fond,
altfel apare imaginea.
Text – indică culoarea folosită pentru textul conţinut în blocul
<BODY…. </BODY>.
Atribute de margine – Browser-ele utilizează atribute diferite pentru
margini. Valoarea atributelor de margine este un număr întreg pozitiv
şi reprezintă distanţa în pixeli de la conţinut la marginile ferestrei.
Pentru Internet Explorer există 4 atribute pentru margini:
− leftmargin (valoare implicită 10 px)
− rightmargin (valoare implicită 10 px)
− topmargin (valoare implicită 15 px)
− bottommargin (valoare implicită 0 px)
Pentru Netscape Navigator există 2 atribute pentru margini:
− marginwidth
− marginheight
Atributele link, alink şi vlink – indică culoarea legăturilor. Aceste
atribute au fost definite în capitolul 7. Reamintim că legăturile au
culori predefinite în funcţie de stările în care se află, astfel:
− legăturile nevizitate au culoarea implicită albastră care poate fi
schimbată cu atributul link=”culoare”
− legăturile vizitate au culoarea implicită purple care poate fi schimbată
cu vlink=”culoare”
− legăturile active au culoarea implicită roşu care poate fi schimbată cu
atributul alink=”culoare”
În exemplul de mai jos se utilizează atributele elementului BODY:
<HTML>
<HEAD>
<BASE href="http://www.edu.ro/index.php/articles">
<TITLE> Elementul META_KEY </TITLE>
<META name"description" content="invatamint suparior">
</HEAD>
<BODY background="c:\windows\web\wallpaper\peace.jpg" bgcolor="blue"
leftmargin=”50” rightmargin=”20” topmargin=”20” bottommargin= “30”
link="red" alink="yellow" vlink="darkblue">
<A href="flori.jpg"> Trandafir </A> <BR>
<A href="c108">
Lista Universitati </A> <BR>
99
<A href="c487"> Lista Universitati Stat </A><BR>
<A href="3880"> Lista Universitati Particulare Acreditate </A> <BR>
<A href="3882"> Lista Universitati Particulare Autorizate </A> <BR>
<A href="3881"> Lista Postuniversitare </A> <BR>
</BODY>
</HTML>
100
Un exemplu simplu este dat mai jos.
<HTML>
<HEAD>
</HEAD>
<BODY>
<!--PAGINA ÎN LUCRU -->
<CENTER>
SUNTEŢI BINE VENIŢI
PE SITE-UL UNIVERSITĂŢII
</CENTER>
</BODY>
<HTML>
101
9. CADRE
102
Din exemplul de mai sus, rezultă că browser-ul afişează două panouri
(cadre) pe orizontală, primul având înălţimea de 40 de pixeli şi al doilea ocupând
restul ecranului. Conţinutul celor două pagini este afişat de browser într-o
fereastră.
Cadre verticale
<HTML>
<HEAD>
<TITLE> Cadre Verticale </TITLE>
<BASE href="C:/Windows/Web/Wallpaper/">
</HEAD>
<FRAMESET COLS="30%, 2*,3*">
<FRAME src="follow.jpg"> <FRAME src="tulips.jpg">
<FRAME src="home.jpg">
</FRAMESET>
</HTML>
Din exemplul de mai sus rezultă că browser-ul va afişa trei pagini Web,
fereastra fiind împărţită în trei coloane (trei cadre) pe verticală. Aceste cadre vor
avea lăţimile:
– 30% din fereastră – pentru primul cadru
– coloanele 2 şi 3 vor ocupa restul din spaţiul rămas împărţit, astfel:
• coloana a doua va avea 2/5 din spaţiul rămas (2 + 3 = 5)
• coloane a treia va avea 3/5 din spaţiul rămas
103
Cadre – imbricate
Dacă dorim să afişăm patru pagini, în formatul
avem structura
<HTML>
<FRAMESET ROWS=”20%, *”>
<FRAME SRC=”coloane.html”>
<FRAMESET COLS=”40%, 100, *”>
<FRAME src =”…”>
<FRAME src=”…”>
<FRAME src=”…”>
</FRAMESET>
</FRAMESET>
</HTML>
Dacă dorim să afişăm tot patru pagini într-o fereastră, dar după modelul de
mai jos:
104
9.2. Elementul FRAMESET
Din exemplele prezentate mai jos, rezultă că elementul FRAMESET are
rolul de a împărţi fereastra în mai multe panouri (zone). Fiecare din zonele ferestrei
poate fi împărţită în unul sau mai multe cadre cu ajutorul elementului FRAME.
Sintaxa elementului FRAMESET este:
<FRAMESET atribute> ….. </FRAMESET>
| |
|
<HTML>
<HEAD>
</HEAD>
<FRAMESET rows="20%, 80%" cols="40%, *" frameborder="1" border="5"
bordercolor="blue">
<FRAME src="univsh.html" marginheight="30" marginwidth="30"
scrolling="no">
<FRAME src="univbuc.html" scrolling="no">
<FRAME src= "c:/carte_web/univsh.jpg" scrolling="no">
<FRAME src="c:/carte_web/facmat.jpg" noresize>
</FRAMESET>
</HTML>
107
Figura 9. 5. Atributul FRAME cu atribute
108
la adresele date de legături, codul HTML care realizează acest obiectiv este dat
mai jos.
<HTML>
<HEAD>
<TITLE> CADRE DESTINATIE</TITLE>
</HEAD>
<FRAMESET cols="40%, 60%" bordercolor="blue" border="5">
<FRAME src="C:\CARTE_WEB\CAP_WEB_8/ex_8_2.html" >
<FRAME src="C:\CARTE_WEB\univsh.jpg" name="listeU" >
</FRAMESET>
OBSERVAŢII!
− Elementul IFRAME are aceleaşi atribute ca şi elementul FRAME
− Într-o pagină Web se pot introduce oricâte cadre interioare dorim
− Atributul name este utilizat ca destinaţii pentru legături
− Elementul IFRAME are şi unele atribute ale lui IMG, cu aceleaşi
efecte: width, align (left, top, bottom, middle)
Un exemplu de CADRE – interioare este prezentat mai jos:
<HTML>
<HEAD>
</HEAD>
<BODY>
<B> Acesta sunt florile preferate </B>
<P>
<IFRAME src="flori1.jpg" name="poze" bordercolor="red" align="middle"
110
width="300" height="200">
</IFRAME>
</P>
<A href="florit.jpg" target="poze"> trandafir </A><BR>
<A href="flori4.jpg" target="poze"> orhidee </A><BR>
<A href="flori5.jpg" target="poze"> diverse</A><BR>
</BODY>
</HTML>
111
10. FORMULARE
Dacă dorim un fişier HTML care include grafică, fiecare imagine este
solicitată server-ului printr-un dialog şi de aceea se încarcă întâi sursa şi apoi se
încarcă imaginile pe rând.
Pentru codul HTML:
<HTML>
<HEAD>
</HEAD>
<BODY>
<A href= “C:/TEST/tabele.html”>tabele</A><BR>
<A href= “C:/Windows/WEB/Wallpaper/peace.jpg”>peace</A><BR>
<A href= “D:/casa.jpg”>casa_mea</A><BR>
<A href= “http://www.unibuc.ro”>Univ_Bucuresti</A>
</BODY>
</HTML>
112
Interacţiunea dintre browser şi server va fi de următoarea manieră:
→ Doresc fişierul “tabele.html”
← Iată fişierul “tabele.html”
→ Acum mai Doresc fişierul “peace.jpg”
← Iată fişierul “peace.jpg”
→ Mai Doresc fişierul “casa.jpg”
← Nu există fişierul “casa.jpg”
Error 440 file not found
→ Doresc fişierul de la www.unibuc.ro
← Iată fişierul www.unibuc.ro
Am evidenţiat această modalitate de lucru pentru a indica comportamentul
static al tehnologiei WWW, adică avem acces numai la resurse Internet statice.
În acest capitol vom trece la comportamentul dinamic al tehnologiei WWW.
În această manieră de lucru cererea “Doresc”, adresată de browser server-ului, devine
cererea de tipul “Doresc execuţia programului şi transmiterea rezultatelor”.
Formularele induc un comportament dinamic, deoarece ele permit
utilizatorilor să introducă parametrii. Pentru analizarea acestor parametrii şi
transmiterea rezultatelor browser-elor, se execută anumite aplicaţii de programare a
server-elor, care decid cum va acţiona server-ul ca răspuns la datele primite.
Mediul de programare de pe servere, prin intermediul cărora se comunică cu
programele de navigare, este interfaţa Common Gateway Interface (CGI). Lucrând
în mediul CGI, într-un anumit program (ASP, Perl, Java Script, PHP etc.), se poate
înlocui o pagină WEB sau o imagine cu un program care efectuează anumite
calcule, care caută într-o bază de date şi apoi întoarce utilizatorului rezultatele sub
formă de date WEB. Aceste programe se mai numesc şi scripturi CGI, cu sufixul
“.cgi” şi pot fi invizibile pentru vizitatorii de pagini WEB (chiar este posibil să nu
se ştie că anumite pagini sunt rezultatul execuţiei unor scripturi).
În acest capitol nu se tratează scrierea codului pentru scripturi CGI,
dar se vor prezenta soluţii pentru a le aplica în crearea formularelor.
Formularele WEB sunt asemănătoare cu formularele altor aplicaţii (ca de
exemplu, cele din Word), au aceleaşi tipuri de câmpuri, dar au şi unele caracteristici
proprii foarte utile. Formularele HTML permit utilizatorilor introducerea unor
informaţii, transmiterea lor către server şi întoarcerea rezultatelor obţinute prin execuţia
unor programe de scriptare, inducând astfel un comportament dinamic paginilor WEB.
Formularele sunt utilizate pentru transmiterea datelor către o aplicaţie
client, server sau la o adresa de e-mail.
În continuare se vor prezenta multitudinea de marcaje pentru a realiza
formulare simple care pot conţine una sau mai multe căsuţe text, care pot introduce
text pe post de keywords (pentru motoarele de căutare) până la formulare complexe
cu multe elemente care oferă facilităţi utile de transmiteri de date.
113
10.1. Elementul FORM
Pentru a insera într-o pagină WEB un formular se foloseşte elementul
<FORM> cu următoarea sintaxă:
<FORM atribute>...</FORM>
Elementul FORM are următoarele caracteristici:
În interiorul unei pagini WEB pot exista mai multe blocuri <FORM>
...</FORM>
Blocurile <FORM>...</FORM> nu pot fi imbricate
Blocurile <FORM>...</FORM> pot să aibă un atribut name=“nume”,
unde valoarea nume este numele de identificare a formularului. Numele
nu este transmis server-ului, decât printr-o operaţie ascunsă, cum se va
vedea mai departe
Unui formular nu i se asociază stiluri, o eventuală formatare a
elementelor unui formular se realizează cu elementele de formatare
fizică (<B>, <I>, <U>, <S>, <FONT>) sau de formatare logică (<P>,
<PRE>, <HR> etc.)
În interiorul unui bloc <FORM>...</FORM> elementele formularului se
definesc cu etichetele INPUT, TEXTAREA şi SELECT, care vor fi
descrise în secţiunile următoare
Fiecare element al unui formular poate avea un nume, care îl
individualizează
Atributele elementului FORM
Deoarece elementul <FORM> este utilizat pe partea de client pentru citirea
datelor introduse de utilizator şi pe partea server pentru scrierea rezultatelor din
aplicaţiile de scriptare CGI, atunci lui i se asociază anumite atribute pentru a
evidenţia destinatarul datelor din formular, metoda utilizată în transmiterea datelor,
metoda de codificare a datelor şi fereastra (dacă se doreşte a se schimba cea
implicită – self ) în care apar rezultatele.
Atributele elementului FORM sunt:
− Action
− Method
− Enctype
− Target
Atributul ACTION
Atributul action=”URL” defineşte destinatarul datelor din formular. În
cazul în care acest atribut lipseşte, destinatarul este pagina WEB.
URL-ul poate fi:
− adresa URL a aplicaţiei .cgi de destinaţie, care urmează să prelucreze
datele, ca de exemplu:
• ”http://www.itdgroup.com/scripts/test.asp”
114
• ”http://www.altavista.com/cgi-bin/query”
• ”http://www.yahoo.com/search”
− o adresă de e-mail validă, pentru transmiterea datelor formularului, prin
intermediul protocolului mailto: ca de exemplu action = mailto:
rodicaniculescu@gmail.com”
Atributul METHOD
Atributul method=“metoda” defineşte metoda de utilizare şi transmiterea
datelor de la programul de navigare la server.
Există două valori posibile ale acestui atribut şi anume: GET şi POST.
− method=“GET” – se utilizează dacă datele din formular se ataşează la
adresa URL de destinaţie prin sintaxa nume=valoare. În bara de
ADDRESS a browser-ului apare adresa URL, urmată de perechi de date
nume=valoare, separate prin simbolul “&”. De exemplu, dacă avem
intrarea în formular <INPUT type=text name=“nume”> se va crea o
căsuţă de text şi dacă în ea se tastează Popescu, atunci în bara de adrese
va apărea:
http://www.itdgroups/scripts/test.asp?&nume=Popescu.
Metoda GET de transmitere de date este implicită, adică, dacă nu este
prezent atributul action în eticheta <FORM>, modul de transmitere a
datelor este GET.
− method=“POST” – datele din formular sunt transmise server-ului într-o
tranzacţie separată, nu odată cu adresa URL. Din acest motiv în bara de
adrese a browser-ului apare adresa, fără elemente suplimentare la
sfârşit, de tip nume=valoare. Folosind această metodă, datele sunt
transmise la server nu toate odată, ci în flux. Din acest motiv metoda
post este indirectă în cazul în care trebuie transmise cantităţi mari de
informaţii.
Atributul Enctype
Acest atribut defineşte metoda de codificare a datelor înainte ca ele să fie
transmise la server. Valorile acestui atribut pot fi:
− ”aplication/x-www-form-urlencoded” care este şi valoarea implicită a
atributului şi este folosită cu metoda GET în general. Această valoare
va fi detaliată în secţiunea următoare (codificarea şi transmiterea
datelor)
− ”text/plain” – utilizată cu valoarea “mailto:adresa_mail” a atributului
ACTION, pentru trimiterea prin poştă a datelor. Este asemănătoare cu
valoarea de mai sus, cu excepţia că spaţiile albe nu sunt înlocuite cu
simbolul “+”
− ”multiform/form-data” – utilizată ca metoda POST pentru inserarea pe
server (transmiterea fişierelor sau imaginilor pe server).
115
Atributul TARGET
Acest atribut se foloseşte în cazul în care se doreşte ca formularul cu
rezultate să apară într-o fereastră nouă a browser-ului. Despre valorile posibile ale
atributului am vorbit când au fost descrise cadrele şi legăturile. Valoarea implicită
este self, care are ca efect apariţia rezultatelor în aceeaşi fereastră cu a browser-lui.
Codificarea datelor
Înainte de a trimite date la server, browser-ul codifică datele. Atunci când
se utilizează metoda GET, informaţiile sunt transmise scriptului de pe server. Toate
informaţiile sunt afişate codificat şi sunt memorate în variabile de mediu QUERY-
STRING. Tehnica de codificare a datelor depinde de valoarea atributului enctype, a
etichetei <FORM>. În cazul valorii implicite “application/x-www-form-
urlencoded”, utilizată cu metoda implicită GET
− datele sunt transmise sub forma nume=valoare separate prin simbolul “&”;
− spaţiile sunt înlocuite cu simbolul plus (“+”) pentru a le putea transmite în
siguranţă;
116
− caracterele speciale, nonalfabetice sunt codificate cu ajutorul codului lor
ASCII în hexazecimal prefixat de simbolul % ca în tabelul de mai jos:
COD CARACTER
! %21
” %22
# %23
$ %24
% %25
ε %26
’ %27
( %28
) %29
+ %2B
/ %2F
: %3A
= %3D
? %3F
\ %5C
CR %0A
LF %0D
Spaţiu %20
TAB %09
NUME Ionescu
MAIL
http://www.ionescui@gmail.com
SEND
Tipul TEXT
Pentru a introduce un câmp de text cu ajutorul căruia se introduc
parametrii într-o pagină WEB se foloseşte atributul type al elementului <INPUT>
cu valoarea “text”, astfel <INPUT type=”text”>. Toate atributele elementului
118
<INPUT>, definite mai sus, cu excepţia atributului CHECKED, pot fi asociate cu
tipul text, aşa cum reiese din exemplul următor:
<HTML>
<HEAD></HEAD>
<BODY>
<FORM name="FTEXT">
<!...Destinaţia este pagina, metoda implicita GET...>
<PRE> <B>NUME:</B>
<INPUT type="text" name="nume" size="20" maxlength="50">
<B>PRENUME:</B>
<INPUT type="text" name="pren" size="25">
<B>ADRESA E-MAIL:</B>
<INPUT type="text" name="email" readonly size="26"
value="rodicaniculescu@gmail.com">
<B>PAROLA:</B>
<INPUT type="text" name="parola" disabled value="secret">
</PRE>
</FORM>
</BODY>
</HTML>
119
atribute sunt prezente, se vor trimite date despre buton în perechea
nume=valoare
− disabled – dezactivează un buton de transmisie
Într-un formular pot exista mai multe butoane de transmisie SUBMIT. În
acest caz butoanele de transmisie se vor diferenţia prin folosirea atributului name şi
prin atributul value, a cărei valoare va fi scrisă pe buton.
Datele care se transmit sunt în funcţie de butonul de transmisie, astfel:
− Dacă butonul nu are indicată valoarea, adică are valoarea implicită
”Submit query”, atunci el transmite date din formular, dar nu şi despre
el
− Dacă butonul este numit, adică există atributul value=“text”, atunci el
transmite date din formular, cât şi despre el
− Dacă butonul este dezactivat atunci el nu transmite nimic
− Nu se transmit decât valorile elementelor din formular, nu şi despre
formular, adică numele formularului nu apare în datele de transmisie
Un exemplu ilustrativ despre butoane de transmisie este prezent mai jos,
completând programul din figura 10.4. cu butoane de transmisie.
Se vor introduce două butoane de transmisie, unul predefinit şi altul numit
prin secvenţa următoare:
<INPUT type=”submit”>
<INPUT type=”submit”name=”optează”value=”GO”>
Formularul va fi îmbogăţit cu două butoane:
120
Butonul de IMAGINE
Pentru transmiterea datelor se poate folosi butonul de imagine, în loc de
butonul de transmisie text. Pe butonul imagine apare imaginea în loc de text. Pentru
a crea un buton de imagine se foloseşte atributul type al elementului <INPUT> cu
valoarea image (type=”image”). Alte atribute ale elementului <INPUT>, care se
asociază cu atributele type=image, sunt:
• Src=“URL” – prezintă adresa URL a imaginii. Este un atribut
obligatoriu pentru acest tip
• alt=“text” – introduce un text, dacă poza nu poate fi încărcată
• border=“număr” – indică grosimea chenarului în pixeli. Dacă
numărul=0, chenarul imaginii lipseşte
• align – determină alinierea imaginii şi poate avea valorile cunoscute:
left, right, center
• name – numele unui buton de imagine
Dacă în exemplul din figura 10.5. se înlocuieşte butonul de transmisie
predefinit (SUBMIT QUERY) cu un buton de imagine, atunci vom folosi tipul
image astfel:
<INPUT type=”image”src=”c:/windows/hlpglobe.gif” name=”img” align =
”center” alt = “comandă” border=0 >
Imaginea hlpglobe va fi inserată pe buton. Dacă se execută clic pe butonul
imaginii vor fi transmise coordonatele punctului în care s-a executat clic împreună
cu numele imaginii sub formă de perechi: numeX=x&numeY=y
Se observă din exemplul de mai sus că datele sunt codificate după valoarea
implicită a atributului enctype=“application/x-www-form-urlencoded”, adică
datele sunt trimise sub formă de pereche nume=valoare.
În caseta ADDRESS va apărea:
user=guest&old=st&new1=r1234f&new2=r1234f
OBSERVAŢIE!
Pe lângă butoanele de transmisie SUBMIT şi IMAGE se mai poate crea un
buton generic, în care valoarea atributului type este button (type=button). Dar
pentru a adăuga un comportament la un buton generic, se utilizează JavaScript sau
alt program de programare la client. Despre acest tip se va discuta în capitolele de
JavaScript. Utilizând JavaScript se poate înlocui <INPUT> cu <BOTTON>
122
...</BOTTON>. Acest buton va avea aceleaşi atribute ca SUBMIT: type, name,
value etc.
Tipul HIDDEN (ascuns)
Tipul ascuns generează un element de formular, utilizând valoarea hidden
a atributului type. Acest tip permite transmiterea de informaţii fără ca utilizatorul să
le poată vedea. Acest element este folosit în cazul:
− în care pagina este generată automat de un script CGI
− pentru a adăuga un identificator formularului, deoarece nu există atribut
al elementului <FORM> care să transmită date despre el împreună cu
celelalte date
Pentru tipul ascuns sunt obligatorii atributele name şi value ale elementului
INPUT. Un exemplu de tipul ascuns este dat mai jos:
<HTML>
<HEAD></HEAD>
<BODY>
<FORM name="tranzitii">
<INPUT type="hidden" name="nume_form" value="tranz">
<INPUT type= "hidden" name="cump" value="450">
<INPUT type="hidden" nam="parola" value="abcde">
<INPUT type="text" name="ID" value="Introduceti date" size=30>
<P>
<INPUT type="submit" value="Trimite">
</FORM>
</BODY>
</HTML>
Browser-ul îşi va transmite datele codificate:
nume_form=tranz&cump=450&parola=abcde&ID=Introduceti+date
Se observă că datele din elemente ascunse sunt incluse în datele transmise
sub formă nume=valoare.
123
Tipul CHECKBOX (casetă de validare)
Acest tip de intrare asigură o casetă de validare. Pentru a insera în formular
o casetă de validare se foloseşte atributul type cu valoarea checkbox
(type =checkbox). Într-un formular se pot introduce mai multe casete de validare,
dar numai casetele de validare bifate sunt transmise de către browser. Se poate ca
mai multe casete de validare să aibă acelaşi nume. Atributele elementului
<INPUT> folosite de tipul checkbox, sunt: name, value şi checked. Atributul
checked este utilizat în cazul în care dorim ca starea implicită a elementului casetă
de validare să fie starea selectată.
Pentru exemplificare, considerăm următorul cod HTML: (datele bifate vor
fi transmise în flux, dar nu vor fi vizibile în bara de adrese a browser-lui):
tip=unt&tip=brinza&box=send
<HTML><HEAD></HEAD>
<BODY>
<FORM name="cumparaturi" method="POST">
<UL> CUMPARATURI
<LI> UNT <INPUT type="checkbox" name="tip" value="unt" checked >
<LI> CASCAVAL <INPUT type="checkbox" name="tip" value=cascaval >
<LI> BRANZA <INPUT type="checkbox" name="tip" value= "branza">
</UL>
<PRE> <INPUT type="submit" name= "box" value="SEND"> </PRE>
</FORM>
</BODY>
</HTML>
Tipul RESET
Acest tip de intrare permite utilizatorului să şteargă conţinutul tuturor
câmpurilor formularului. Tipul de RESET se introduce în formular ca valoare a
atributului type, astfel <INPUT type=reset> şi are ca efect inserarea unui buton (ca
şi tipul submit sau image).
124
Atributele asociate tipului reset sunt: name, value şi disabled cu
semnificaţiile deja cunoscute.
Dacă în exemplu din figura 10.9 se adaugă eticheta
<INPUT type=“reset” name=“şterge” value=”reset”
în formular, browser-ul va mai adăuga un buton reset.
Tipul RADIO
Acest tip de intrare afişează un buton cu interblocare gen radio. Dacă mai
multe astfel de butoane au aceeaşi valoare a atributului name, ele sunt grupate
automat astfel încât un singur buton din grup să poată fi selectat. Butonul radio
este asemănator cu butonul de validare şi are aceleaşi atribute. Pentru a insera un
buton radio într-un formular se foloseşte elementul <INPUT> al cărui atribut type
are valoarea radio (type=radio). La un moment dat numai un buton radio din cele
din grup (atributul name trebuie să aibă aceeaşi valoare pentru toate butoanele din
grup) poate fi selectat. Denumirea de buton radio vine de la stilul de afişare al
acestor elemente de către browser (ca nişte butoane radio)
Datele transmise de browser pentru respectivul grup sunt:
− dacă se selectează un buton radio din grup valoarea efectivă care se
transmite serverului este valoarea atributului value şi se transmite printr-o
pereche nume=valoare, unde nume şi valoare sunt valorile atributelor
name şi value
− dacă se selectează un buton radio şi atributul value lipseşte, atunci se
transmite valoarea implicită ON, astfel nume=ON, unde nume este
valoarea atributului name
− dacă nu este selectat niciun buton radio dintr-un grup, atunci browser-ul
nu transmite date referitoare de grupul respectiv
De remarcat faptul că textul alăturat unui buton este irelevant pentru
programul de scriptare de pe server.
Vom exemplifica grupul de butoane radio prin următorul exemplu:
125
<HTML>
<HEAD></HEAD>
</BODY>
<B> Clasificarea studenţilor la Cursul WEB</B>
<FORM name="clas" action="rodicaniculescu@hotmail.com" method="POST">
<PRE>
<B>NUME:</B><INPUT type= "text" name="nume" size=30>
<P><B>COD STUDENT:</B> <INPUT type="password" name="cod" size="8">
<HR>
<B>EXAMEN:</B> <INPUT type="text" name="ex" maxlength=20>
<HR>
</PRE>
<B><5</B>
<INPUT type="radio" name="categorie" value="rest"><B>[5-6]</B>
<INPUT type="radio" name="categorie" value="slab"><B>[7-8]</B>
<INPUT type="radio" name="categorie" value="bun" checked><B>
[9- 10]</B>
<INPUT type="radio" name="categorie" value="fbun">
<PRE>
<INPUT type= "submit" name= "trimite" value="SEND">
<INPUT type= "reset" name= "şterge" value="RESET">
</PRE>
</FORM>
</BODY>
</HTML>
126
Tipul FILE
Acest tip de intrare oferă posibilitatea utilizatorului să transmită un fişier
programului pe server. Pentru a insera un fişier într-un formular se foloseşte
atributul type al elementului <INPUT> cu valoarea file (type=”file”).
Formularul va afişa un câmp text pentru introducerea numelui fişierului şi
un buton BROWSE pentru a selecta un fişier din calculator, în cazul în care nu se
cunoaşte calea fişierului. Se pot transmite orice tip de fişiere.
Acest tip (file) este dificil de programat pe server, iar Internet Explorer nu
permite lucrul cu tipul file.
Se pot încărca mai multe fişiere cu ajutorul unui formular şi pentru a le
distinge se foloseşte atributul name cu diferite valori pentru fiecare element
INPUT. În cazul folosirii acestui tip, atributul elementului <FORM> trebuie să fie:
− action=“URL” – url fiind adresa unui program de scriptare de pe server
(“http://itdgroup.com/scripts/upload/asp”)
− method= “POST” (fiind volum mare de date, acesta nu poate fi transmis
prin metoda GET odată cu adresa URL)
− enctype=”muliform/form-data”
127
• off – caracterele CR/LF sunt introduse de utilizator. În acest caz
apare şi bara de defilare orizontală
• hard – textul trece automat la rând nou, dar sunt transmise şi
caracterele CR/LF inserate automat la trecere la alt rând.
Pentru exemplificare reluăm exemplul din figura 10.11 şi adăugăm o
casetă text cu linii multiple cu ajutorul blocului:
<P>COMENTARII:
<TEXTAREA name=”coment” rows=”5” cols=”50” wrap=”off
”></TEXTAREA>
Formularul va avea adăugată caseta text textarea:
131
Urmează trasarea zonelor care pot fi de diferite forme. Formatul fişierelor
.map şi testarea hărţilor la server depind de serverul pe care se lucrează.
Unele servere permit să indicăm un fişier aflat oriunde în sistem, altele
solicită ca aceste fişiere să se afle într-un director special de fişiere map, sau altele
nu permit lucrul cu astfel de fişiere.
Există servere Web cunoscute ca CERN şi NCSA. CERN este institutul
elveţian, din care s-a desprins o echipă condusă de Sir Tim Berners Lee care a creat
spaţiul World Wide Web, limbaje specializate, precum SVG (Scalable Vector
Graphics), SMILE (Synchronized Multimedia Integration Language) etc.
NCSA este Centrul Naţional pentru Aplicaţii de Super Calculatoare
(National Center for Super-Computers Applications) al Universităţii din Illinois,
care a elaborat programul de navigare Web Mozaic.
Serverele NCSA folosesc, pentru fişierele.map, formatul:
forma/URL/coordonate, astfel : circle Bucuresti.html 100, 200, 100
în timp ce serverele CERN folosesc formatul forma/coordonate/URL, iar
coordonatele apar în perechi, astfel: rect (100,200), (200,300) Paris.html
132
Elementul <MAP> are un atribut obligatoriu name, care indică numele
hărţii şi care trebuie să fie acelaşi cu numele imaginii inserate.
<MAP name =”copii”>
Inserarea legăturilor
Pentru inserarea legăturilor se utilizează tag-ul <AREA atribute>. Pentru
fiecare legătură sau zonă dorită se foloseşte un element AREA în interiorul
blocului <MAP>…</MAP>.
Elementul AREA va defini o zonă din hartă, zonă pe care, dacă se execută
un clic, se va încărca o pagină sau o altă operaţie.
Atributele elementului AREA sunt:
− shape – defineşte forma zonei respective şi poate avea valorile:
• rect sau rectangle – pentru definirea unei zone dreptunghiulare
• circ sau circle – pentru definirea unei zone circulare
• poly sau polygon – pentru definirea unei zone poligonale
• default – pentru definirea zonelor la care nu sunt definite legături
(Internet Explorer nu acceptă acest atribut. El a fost testat cu
browser-ul Mozilla FireFox)
− href – adresa URL a unei resurse Web sau locale pentru care a fost
creată o zonă. Dacă pentru o zonă creată nu se doreşte să se stabilească
o legătură nu se foloseşte acest atribut sau se foloseşte nohref
− coords – indică coordonatele zonei respective
Se ştie că orice imagine rasterizată este formată din pixeli. Un pixel
este caracterizat de coordonatele sale (x,y), raportate la sistemul :
(0,0) X
Pentru fiecare formă din cele enumerate mai sus valorile parametrului
shape sunt:
• Rect coords=”X1,Y1,X2,Y2” – definesc coordonatele colţului din stânga
sus ( X1,Y1) şi ale colţului din dreapta jos (X2,Y2) ale unui dreptunghi
(X1,Y1)
(X2Y2 )
133
• CIRCLE coords=”a,b,r” definesc coordonatele centrului unui cerc,
respectiv raza cercului
R
(a,b)
(X2,Y2) (X3,Y3)
.
.
(Xn,Yn)
(X1,Y1)
134
135
Figura 11. 1. Hărţi de imagine
136
obţinute. Programul se poate lua de pe Internet, este free şi este asemănător
programului BITMAP (acesta din urmă însă nu generează automat coordonatele,
ci numai le afişează în bara de stare).
Paşii care trebuie urmaţi pentru a împărţi o imagine .gif sau .jpeg în zone sunt:
1. Se lansează programul MAP THIS, se apelează menu-ul FILE comanda
NEW, Okay. Va apărea o fereastră cu fişierele .gif şi .jpeg.
pentru dreptunghi
pentru cerc
pentru poligon
138
Figura 11. 5. Lista zonelor
Când este selectat un element al listei va apărea zona corespunzătoare,
selectată cu o altă culoare.
5. Dacă se efectuează dublu clic pe o imagine se deschide o fereastră, cu numele
zonei în care apare o casetă pentru a trece adresa fişierului URL legătură.
139
<BODY>
<MAP NAME="facmat">
<!-– #$-:Image Map file created by Map THIS! -->
<!-– #$-:Map THIS! free image map editor by Todd C. Wilson -->
<!-– #$-:Please do not edit lines starting with "#$" -->
<!-– #$VERSION:1.30 -->
<!-– #$DATE:Sat Jan 06 15:34:35 2007 -->
<!-– #$PATH:C:\CARTE_WEB\CAP_WEB_11\ -->
<!-– #$GIF:FACMAT.jpg -->
<AREA SHAPE=RECT COORDS="226,12,464,276"
HREF="http://www.fmi.unibuc.ro">
<AREA SHAPE=CIRCLE COORDS="536,173,74"
HREF="sala_calculatoare.html">
<AREA SHAPE=POLY
COORDS="170,18,16,167,167,309,221,265,215,33,170,18" HREF="istoric.doc">
</MAP></BODY>
La acest cod generat de MAP THIS se adaugă tag-urile <HTML>,<HEAD>
</HEAD>, </HTML> şi neapărat imaginea., astfel:
<IMG src=”facmat.JPG” usemap=”#facmat”
Executând fişierul harta_facmat.html, browser-ul va afişa:
140
Figura 11. 8. Fişierele legătură la hartă
141
12. Facilităţi suplimentare Multimedia
Conceptul multimedia este unul din cele mai tentante şi moderne concepte
utilizate în lumea informaticii. Prin tehnologii multimedia se înţelege totalitatea
modalităţilor de creare, utilizare, stocare, regăsire şi difuzare a aplicaţiilor din
medii multiple, precum text, grafică, imagine, sunet şi animaţie. Multimedia
semnifică prezenţa simultană a multor astfel de medii într-un document (ca de
exemplu, o pagină web). Termenul de hipermedia desemnează documentele
multimedia care cuprind hiperlegături, acestea fiind modul uzual de existenţă a
documentelor multimedia pe spaţiul Web.
Fişierele multimedia pot fi fişiere de:
Aplicaţii, care sunt executate de sistemul de operare şi au, în general,
extensia .exe, (ca de exemplu, programe de prelucrare grafică, de calcule
etc.) Unele aplicaţii sunt independente (WORD, EXCEL, MAP THIS
etc.), iar alte aplicaţii sunt dependente (ca de exemplu, controale
ActiveX, programe PLUG-IN etc.)
Date, folosite pentru stocarea datelor. Extensia acestor tipuri de fişiere
indică tipul datelor stocate şi a aplicaţiei, folosită pentru citirea, editarea
şi tipărirea lor. Sistemul de operare al calculatorului stabileşte o legătură
între fişierele de date şi aplicaţia care prelucrează datele din fişier.
Pentru a constata dacă un fişier este de aplicaţie sau de date, se execută
clic pe butonul drept al mouse-ului şi din meniul rapid se selectează
comanda Properties. În caseta Type of file a ferestrei va apărea:
12.2.2. ActiveX
Conceptul de obiecte sau componente ActiveX s-a dezvoltat pe baza
tehnologiei OLE (Object Linking and Embedding) a corporaţiei Microsoft care
permite să inserăm obiecte COM şi alte aplicaţii. Controalele ActiveX se pot insera
în aplicaţii pentru a putea fi refolosite cu toate funcţionalităţile lor. Controalele
ActiveX funcţionează ca o interfaţă, astfel codul inclus în pagina Web
interacţionează cu controlul ActiveX, iar acesta interacţionează direct cu programul
de navigare.
Prin această tehnologie aproape orice cod poate fi executat de la nivelul
programului de navigare, de la procesare de texte, la filme, animaţie/video etc.
144
Fiecare control ActiveX se introduce în paginile Web cu ajutorul etichetei
<OBJECT> şi cu parametrii specificaţi de eticheta <PARAM>, etichete care vor fi
descrise în secţiunile următoare.
145
DESCRIERE CLASSID
button D7053240-CE69-11CD-A777-00DD01143C57
tabel 978C9E23-D480-11CE-Bf2D-00AA003f40D0
textfield 8BD21D10-EC42-11CE-9E0D-00AA006002f3
graphic 369303C2-D7AC-11d0-89D5-00A0C90833E6
calendar 8E27C92B-1264-101C-8A2F-040224009C02
avi 05589FA1-C356-11CE-BF01-00AA0055595A
excel 0002E510-0000-0000-C000-000000000046
Iexplorer 0002DF01-0000-0000-0000-000000000046
ClipArt Gallery 00030026-0000-0000-C000-000000000046
Java 3EFB1800-C2A1-11CF-960C-0080C7C2BA87
146
Figura 12. 1. Aflarea codului GUID pentru controlul A
147
anumite metode care sunt descrise în funcţie de tipul său). Forma tag-ului
<PARAM> este: <PARAM name = “nume” value =“valoare”>.
Am arătat că se pot insera fişiere, imagini, aplicaţii, pagini şi ActiveX cu
ajutorul etichetei <OBJECT>, care poate avea anumiţi parametri în funcţie de
obiectul inserat.
Inserarea imaginilor
În ultimul timp, există tendinţa de a insera în pagini imagini cu ajutorul
etichetei <OBJECT> în loc de eticheta <IMG>, astfel:
<HTML>
<HEAD>
</HEAD>
<BODY>
<CENTER> Inserarea imaginilor</CENTER>
<TABLE cellspacing="2">
<TR>
<TD><OBJECT data="flori5.jpg" width=200 height=200></OBJECT>
<TD> <OBJECT data="Water lilies.jpg" width=200 height=250></OBJECT>
148
</TR>
</TABLE>
</BODY>
</HTML>
Inserarea miniaplicaţiilor
Miniaplicaţiile pot fi inserate în pagini HTML, folosind elementul
<applet> şi <OBJECT>.
În acest capitol se va folosi elementul <OBJECT> pentru a insera unele
aplicaţii într-o pagină. Browser-ul Netscape nu acceptă inserarea miniaplicaţiilor
cu ajutorul elementului OBJECT, iar Internet Explorer avem, de exemplu:
<OBJECT codetype="application/msword”>
<PARAM name="text" value="Bine ati venit in Word">
</OBJECT>
Inserarea Controalelor ActiveX
Presupunem că dorim să redăm un fişier .avi sau un fişier .mpeg. Pentru
aceasta este nevoie de inserarea programului Windows Media Player. Cu acest
program putem reda fişiere: .avi, .mpeg,,mpg, .wmv, .wma, aşa cum reiese din
exemplul de mai jos.
<HTML>
<HEAD>
</HEAD>
<BODY>
<OBJECT id="WMPlayer" width="320" height="240" classid="clsid:05589FA1-
C356-11CE-BF01-00AA0055595A">
<PARAM name="src" value="sample.avi">
</OBJECT> <BR>
<OBJECT id="buton" width=100 height=50 classid="clsid:D7053240-CE69-
11CD-A777-00DD01143C57">
<PARAM name="caption" value="buton">
149
</OBJECT> <BR>
<OBJECT id="WMPlayer" width =320 height=240
classid=clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6>
<PARAM name="url" value="d:\poze\aniversare_2006\MVI_8297.AVI">
</OBJECT >
</BODY>
</HTML>
152
Figura 12. 6. Elementul MARQUEE cu atribute
153
154
PARTEA A II-A
CSS
155
156
13. CSS-Cascading Style Sheets
(Foi de stil în cascadă)
157
title – defineşte o informaţie pentru un element. Valorile sunt şiruri de
caractere scrise între ghilimele, care apar într-un chenar galben, atunci
când suntem cu mouse-ul deasupra elementului
dir – indică direcţia de afişare a conţinutului elementului. Valorile
posibile sunt: ltr-de la stânga la dreapta şi rtl- de la dreapta la
stânga
lang – defineşte limba în care va apărea scris conţinutul elementului.
Valorile posibile sunt maxim 5 caractere între ghilimele, de exemplu
”en”, ”en-us”
id – defineşte un identificator unic pentru un element (a fost folosit în
capitolul precedent ca atribut al elementului OBJECT)
class – defineşte o clasă a elementului. Valorile posibile sunt liste de
unul sau mai mulţi identificatori separaţi prin spaţiu, de exemplu
class=”nume1,.....,numen”
160
Am menţionat mai sus faptul că există un selector universal, indicat prin
simbolul ”*” şi care corespunde oricărui element.
Un exemplu de foi de stil în pagină este redat mai jos:
<HTML>
<HEAD>
<STYLE>
P{font-size:20pt;font-weight:light;color:red;text-align:center:}
*{font-style:italic;}
OL{font-size:20pt;background:cyan;}
LI{font-size:15pt;color:blue;}
A{text-decoration:none;color:grown;}
</STYLE>
</HEAD>
<BODY>
<P><B>Listă </B>este un mod de organizare in care mai multe enunţuri
pot fi numerotate, marcate sau definite intr-un anumit fel .
<OL>În HTML există trei tipuri de liste:
<LI>Liste ordonate(Ordered list - OL)
<LI>Liste neodornate(Unordered list - UL)
<LI>Liste de definiţie(Definiţion list - DL)
</OL>
Aceasta este o legatura la lista universitaţilor particulare acreditate,
de pe site-ul MEC
<A href="http://www.edu.ro/index.php/articles/3880"> USH </A>
</BODY></HTML>
161
13.3. Foi de stil externe
În secţiunea precedentă am definit stiluri pentru selectorii de tip (elemente
HTML) dintr-un fişier HTML. În această secţiune se arată cum se pot extinde
stilurile la toate paginile Web de pe server-ul utilizat.
Dacă s-ar copia foaia de stil din pagina în care a fost definită în mai multe
pagini în care dorim să apară foaia de stil respectivă, ar apărea un inconvenient,
constând în faptul că, atunci când se doreşte o modificare de stil, modificarea
respectivă trebuie făcută în toate paginile în care a fost copiată foia de stil.
Soluţia de înlăturare a acestui inconvenient constă în executarea
următorilor paşi:
se creează foaia de stil într-un fişier extern, care se salvează cu extensia .css
se leagă acest fişier de orice pagină Web care dorim să aibă acelaşi
aspect. Pentru a crea o legătură între o pagină Web şi un fişier foaie de
stil extern (.css), se foloseşte tagul <LINK> care se scrie în blocul de
antet (<HEAD>...</HEAD>) al respectivei pagini.
Elementul LINK
Aşa cum am menţionat, legătura dintre o pagină şi un fişier .css, se
realizează cu elementul LINK.
Sunt obligatorii trei atribute ale elementului LINK:
type – indică browser-ului limbajul în care este scris codul şi are
valoarea unică „text/css”
rel – defineşte tipul de fişier .css şi are valoarea ”stylesheet”
hre f- are ca valoare adresa URL a fişierului foaie de stil externă (.css),
care conţine foaia de stil care se leagă.
Pentru exemplificare, considerăm foaia de stil creată în exemplu 13.2 pe
care o copiem într-un fişier nou Notepad şi pe care îl salvăm cu extensia .css astfel:
stil-extern.css. În partea de cod a paginii se înlocuieşte blocul <STYLE> ...
</STYLE> din antet cu tagul <LINK> plasat tot în antet.
Codul fişierului stil-extern.css este:
P{font-size:20pt;font-weight:light;color:red;text-align:center;}
*{font-style:italic;}
OL{font-size:20pt;background:cyan;}
LI{font-size:15pt;color:blue}
A{text-decoration:none; color:BlueViolet;}
164
13.6. Stiluri pentru diferiţi selectori
Stilurile se pot aplica selectorilor de tip (elemente HTML), aşa cum s-a
procedat în secţiunile precedente, sau altor selectori, care sunt elemente definite de
programatorii paginii Web, sau sunt elemente predefinite.
În această secţiune, vor fi definiţi şi exemplificaţi în subsecţiuni separate:
selectorii definiţi – ID şi CLASS
selectorii predefiniţi – pseudo-class şi pseudo-element
13.6.1 Selectorul ID
În secţiunea 13.2 s-a menţionat faptul că aproape orice marcaj HTML
poate avea atributul ID, care are ca valoare un identificator unic pentru întreaga
pagină. Sintaxa atributului este ID=”nume_id”. Se pot crea stiluri pentru un
identificator, declarând un selector ID care are sintaxa nume_id precedat de
simbolul ”#” (ca la o definire de ancoră – a se vedea capitolul 7), astfel
#nume_id{bloc de specificaţii stil}.
În exemplul următor este exemplificată utilizarea selectorului ID.
<HTML>
<HEAD>
<STYLE>
#PAR{background:red;font-style:italic}
</STYLE>
</HEAD>
<P id=par>Un text cu stil cursiv fundal rosu
<P>Un text obisnuit
</Body>
</HTML>
165
13.6.2. Selectorul CLASS
CSS poate defini şi clase de elemente. Ca şi atributul id, şi atributul class
este acceptat de majoritatea elementelor HTML. Se pot utiliza clase în definirea
unui stil, sintaxa selectorului CLASS fiind numele clasei precedat de simbolul
punct (”.”), astfel: .nume-clasă{bloc de declaraţii}
Atributul class are sintaxa binecunoscută a atributelor elementelor HTML:
class=”nume-clasă”
În cazul în care se doresc mai multe stiluri de clasă (c1{ }, c2{ },......cn{ })
atunci valoarea atributului class poate să fie o listă de nume-clasă, separate prin
spaţii (class=”c1 c2 cn”), aşa cum rezultă din exemplul următor:
<HTML><HEAD><STYLE>
.cod{background:cyan;font-family:courier;}
.note{text-transform:uppercase;color:red;text-decoration:none;}
</STYLE></HEAD><BODY>
<P>Acesta este un paragraf fara stil
<P class="cod">Acesta este un paragraf scris cu stilul cod (fontul courier
pe fundal cyan)
<P class="note">Acesta este un paragraf scris cu stilul (culoarea rosie şi
litere mari)
<P class="cod note">Acesta este un paragraf de observaţii scris cu
stilurile celor două clase
<P>Codul<B class="cod"> HTML</B> este executat de browser-ul
<I class="note">Înternet Explorer</I></P>
<A href="Universitati.html"class="note">
Universitati-(o legatura)</A>
</BODY> </HTML>
167
Figura 13. 8. Selectori id şi class
13.6.3 Pseudo-clase
Pseudo-clasele ajută la specificarea unor proprietăţi speciale ale unor
elemente. Ele sunt predefinite şi nu este permisă redenumirea lor. Sintaxa prin care
se pot adresa este: element:pseudoclasă{bloc de declaraţii}
unde element poate fi:
un element HTML – de exemplu, P
un identificator id şi atunci scriem elementul ca un selector id, #nume
o clasă şi atunci scriem elementul ca un selector de clasă, .nume-clasă
Pseudo-clasa first-child
Această pseudo-clasă aplică stilul definit primului copil al elementului
părinte şi are sintaxa: element:first-child{...}.
În exemplul de mai jos formatăm primul element (copil) dintr-o listă
(părinte) şi prima linie (copil) dintr-un tabel (părinte).
<HTML> <HEAD> <STYLE>
LI:first-child{color:blue;text-size:20pt;background:yellow}
TR:first-child{font-style:italic;font-
weight:bold;background:cyan;color:red}
</STYLE> </HEAD> <BODY>
<UL>Valorile atributului color:
<LI> nume-culoare(red, blue, etc.)
<LI>codul RGB in hexazecimal, sub forma #RRGGFF
<LI>codul RGB zecimal, de exemplu RGB(0,0,255) pentru albastru
</UL>
<TABLE border=2 bordercolor=green>
168
<TR><TD>A11<TD>A12
<TR><TD>A21<TD>A22
</TABLE>
</BODY> </HTML>
Pseudo-clase – Legături
În capitolul 7 am arăta faptul că bold, subliniat în HTML, există trei stări
pentru o legătură (activă, vizitată, nevizitată), iar pentru a le schimba culorile
predefinite (rosu, purple, bleu) se folosesc atributele elementului BODY: active,
vlink, respectiv link, care au valori nume sau cod de culoare.
În CSS o legătură poate fi în cinci stări ce corespund la cinci pseudo-clase:
active – pentru o legătură activă, care are culoarea implicită
visited – pentru o legătură ce a fost vizitată şi care are culoarea
implicită purple
link – pentru legăturile care nu au fost vizitate şi care au culoarea
implicită blue
hover – o legătură deasupra căreia se află plasat cursorul mouse-ului
focus – pentru o legătură selectată, care se poate activa cu ENTER
Prin CSS se pot modifica culorile legăturilor şi formatarea textului, aşa
cum rezultă din exemplul de mai jos.
<HTML> <HEAD>
<TITLE>STIL LEGATURI</TITLE>
<STYLE>
A:link{color:green;font-style:italic;}
A:visited{color:magenta;font-wight:bold;text-decoration:none}
A:hover{color:cyan;background:black;}
A:active{color:red;text-decoration:none;}
A:focus{background:yellow;color:green;}
</STYLE></HEAD>
<BODY>
<A href="Fig 13.1.html" >Exemplu stil in-line</A><BR>
<A href="Fig 13.2.html" >Exemplu stil-pagina</A><BR>
169
<A href="Fig 13.3.html" >Exemplu stil-extern</A><BR>
<A href="Fig 13.4.html">Exemplu stil cascada</A><BR>
<A href="Fig 13.5.html">Exemplu stil clasa</A><BR>
</BODY></HTML>
13.6.4 Pseudo-element
Pseudo-elementele sunt un fel de pseudo-clase, care permit să se schimbe
stilul pentru subpărţi ale unui element (de exemplu, prima literă dintr-un paragraf).
Se setează stilul ca la pseudo-clase: element:pseudo-element{bloc de declaraţii}.
Vom exemplifica pentru pseudo-elementele:
first-letter - care permite să se formateze prima literă dintr-un bloc de text
first-line - care permite să se aplice un stil pentru prima linie dintr-un
bloc de text
După cum ştim, există următoarele blocuri de text:
paragraf <P>......</P>
paragraf preformatat <PRE>......</PRE>
de diviziune <DIV>.......</DIV>
de centrare text < CENTER>..</CENTER>
În exemplul următor se stabileşte un stil pentru pseudo-elementele şi
blocurile menţionate mai sus.
<HTML> <HEAD> <STYLE>
P.PAR:first-letter{font-style:italic;font-size:30pt;}
CENTER:first-letter{color:#C0C0C0;font-size:30pt;}
DIV:first-line{text-transform:uppercase;color:"darkcyan";}
P.PAR:first-line{text-decoration:underline;text-
height:24pt;color=red;}
170
</STYLE> </HEAD> <BODY>
<P class="par">Paragraf care are doua stiluri pseudo-elemente:first-letter si first-
line<BR>Se observa faptul ca prima litera a mostenit si stilul primei linii(subliniat)
<CENTER>Acesta este un bloc centart<BR>
Are un stil pentru prima litera: culoarea silver, dimensiuni 30pt
</CENTER>
<DIV>Acesta este un bloc de diviziune<BR>
Pentru el s-a stabilit stilul first-line.Prima linie va fi scrisa cu culoarea DarkCyan si
cu litere mari
</DIV></BODY></HTML>
172
14. Clase de proprietăţi în CSS
174
lungimi în: mm / cm / in(inci) / pc(pica) / px(pixeli) / pt(puncte) /
em(relativ la font-style. Un spaţiu em este cea mai lată literă a unui
FONT, de exemplu M), ex(relativ la cel mai înalt caracter al fontului)
Procente(relativ la valoarea părintelui, de exemplu: 50%, -20%)
Cea mai folosită este valoarea exprimată în puncte (pt).
Un font de 10pt măsoară 10 pt de la cota superioară a unei litere majuscule
sau ascendente (H sau h), până la cota inferioară a unei litere descendente (g,p).
Relaţia dintre diferite lungimi este:
1 în=2.56 cm = 72 pt = 6 pc de unde rezultă:
1 pt = 0.035 cm şi 1 pc = 0.42 cm
Proprietatea font-family are rolul de a stabili un set de fonturi cu care
vor fi scrise caracterele. Nu se ştie dacă un vizitator al unei pagini are pe calculator
un anumit font, motiv pentru care se consideră mai multe familii de fonturi.
Valorile posibile sunt:
nume de familii, ca de exemplu Arial, Courier, Helvetica etc. Dacă o
familie este formată din mai multe cuvinte, atunci acestea sunt scrise
între ghilimele, de exemplu “Times New Roman”
nume generic de fonturi, care mai degrabă specifică un stil decât o
familie de fonturi. Numele generice sunt cuvinte cheie şi nu se scriu
între ghilimele. Aceste fonturi sunt: serif, sans-serif, cursive, monospace
şi fantasy. Este indicat ca ultimul font din listă să fie unul generic.
Browser-ul va folosi dintr-o mulţime de fonturi primul font pe care îl
recunoaşte, de exemplu:
P {font-family:”Courier New”, Arial, monospace}
Proprietatea font – grupează proprietăţile de mai sus. Valorile posibile
sunt valorile proprietăţilor de mai sus, în ordinea:
<font-style>
<font-variant>
<font-weight>
<font-size>
<font-family>
Un exemplu pentru proprietăţile de font este dat mai jos:
<HTML><HEAD>
<STYLE>
OL {font:italic small-caps bold 18pt “Courier New” serif;}
LI{font-style:italic; font-size:15pt;font-family:Arial, serif;}
SPAN { font-variant:small-caps; color:red;font-size:1.5 em}
P{ font:italic small-caps bolder 15pt Garamond serif;}
TABLE{font-variant:small-caps;font-size:small;font-weight:lighter;
background:yellow}
</STYLE></HEAD>
<BODY>
<P> Utilizarea proprietăţilor pentru fonturi </P>
175
<OL type=I>
<LI><Font face=”Arial” size=+1 color=blue>Tehnici de programare </Font>
<UL>
<LI> Backtracking
<LI> Divide et impera
<LI> Greedy
<LI> Programare dinamică
</UL>
<LI> <Font face=”Arial” size=+1 color=blue> Arbori</Font>
<UL>
<LI> Arbori Binari</li>
<LI> Arbori Oarecare</li>
<LI> Arbori de sortare</li>
</UL>
</OL>
<TABLE border=3>
<TR><TD>Dacă ai întrebari
<TR><TD> <A href=mailto:rodicaniculescu@gmail.com> Scrie-mi la adresa
rniculescu@gmail.com</A>
</TABLE>
<P> Studentii care doresc <SPAN>Consultatii,</SPAN> pot să-mi scrie </P>
</BODY></HTML>
176
14.3. Proprietăţi pentru TEXT
CSS are mai multe proprietăţi pentru TEXT. O parte dintre acestea vor fi
descrise mai jos.
Proprietatea text-align – se foloseşte pentru alinierea textului. Valori
posibile sunt:
left
right
center
justify
Proprietatea text-decoration – permite introducerea unor decoraţiuni
textului: Valorile posibile sunt:
none – fără decoraţiune
underline – subliniat
overline – barat
line-through – tăierea cu o linie
blink – sclipire
177
OBSERVAŢIE!
Pentru redarea unui text aşa cum este scris se poate folosi marcajul
<PRE>...</PRE>, dar, în acest caz, textul este monospaţiat, aşa cum s-a precizat în
capitolul 3 – elemente de formatare.
Un exemplu de utilizare a acestor proprietăţi este dat în continuare.
<HTML> <HEAD>
<STYLE>
P {white-space:all; letter-spacing:1mm; word-spacing:2 mm; text-
transform:capitalize;}
DIV{text-indent:0.5 in; text-decoration:underline; white-space:nowrap;
color:blue}
SPAN {text-transform:uppercase;text-decoration:underline;color:red}
</STYLE> </HEAD>
<BODY>
<P>Agenda telefonica<br>
Ionescu Alin 0723553279<br>
Ionescu Dan 0742897618<br>
Diaconescu Ion 0745294738<br>
Popescu Ana 073431489 </P>
<DIV>Acesta este un text indentat la 0.5 in, subliniat şi scris pe un rand. Dacă
doriti să-l vizualizaţi folositi. <SPAN>Bara de scroll</SPAN></DIV>
</BODY> </HTML>
179
14.4. Proprietăţi pentru padding
S-a arătat în introducere că orice element HTML poate fi privit ca un box
cu părţile: content, padding, border şi margin.
În secţiunea 2 şi 3 s-a descris o parte din proprietăţile pentru partea de
conţinut (font şi text). În această secţiune se vor descrie proprietăţile pentru
padding.
Paddingul (ţesătura) este zona dintre conţinut şi bordură şi are doar
caracteristica size. Există cinci proprietăţi pentru a indica paddingul unui element,
şi anume:
padding-top
padding-right
padding-bottom
padding-left
padding – combinaţie a celor de sus, valorile fiind date în ordinea (top,
right, bottom, left)
Valorile posibile sunt:
o lăţime – exprimă lăţimea zonei de textură şi este dată în: in, cm, mm,
px, pt, pc, em
procent – exprimă lăţimea în procente relativ la părinte
OBSERVAŢII:
1. Proprietăţile padding-top, padding-right, padding-left, padding-bottom
acceptă numai o valoare
2. Proprietatea padding, care este o combinaţie a celor de mai sus, poate
accepta 1, 2, 3 sau 4 valori. În tabelul de mai jos se dă lista de valori şi
ordinea de atribuire a lor pentru cele patru proprietăţi de padding (top,
right, bottom şi left).
Nr Valori Atribuiri
1 v1 Top=right=bottom=left=v1
2 v1 v2 Right=left=v1, top=bottom=v2
3 v1 v2 v3 Top=v1 left=right=v2 bottom=v3
4 v1 v2 v3 v4 Top=v1 right=v2 bottom=v3 left=v4
Figura 14. 5. Ordinea de atribuire a valorilor
181
14.5. Proprietăţi pentru bordură
Există cinci proprietăţi pentru bordură:
border-top – bordura de sus
border-right – bordura dreapta
border-bottom – bordura de jos
border-left – bordura din stânga
border – combinaţie a celor de mai sus
Pentru fiecare proprietate BORDER se pot stabili trei caracteristici:
width – grosimea bordurii
color – culoarea bordurii
style – modelul bordurii
De exemplu, pentru proprietatea border-top avem proprietăţile:
border-top-width
border-top-color
border-top-style
Valorile posibile pentru width sunt:
o lăţime – ce reprezintă lăţimea fixă a bordurii sau a unei părţi din ea
thin (subţire) /medium (mediu) / thick (gros)
Valorile posibile pentru color sunt:
un nume de culoare
un cod RGB
Valorile posibile pentru style sunt:
None / hidden / dotted / solid / double / groove / inset / outset / ridge /
dashed / inherit.
Exemplificăm mai jos proprietatea border cu cele trei caracteristici: width,
color, style.
<HTML>
<HEAD>
<STYLE>
td {background:yellow; color:darkcyan;}
.bt {border-top-style:dashed; border-top-width:thick; border-top-color:blue;}
.br{border-right-style:groove;border-right-width:thin;border-right-
color:purple;}
.bb{border-bottom-style:ridge;border-bottom-width:medium; border-bottom-
color:lime;}
.bl{border-left-style:solid;border-left-width:10pt; border-left-color:magenta;}
.bord{border-style:outset; border-width:0.5 in; border-color:red;}
</STYLE>
</HEAD>
<BODY>
182
<PRE>
<PRE>
<BUTTON class="bt">Bordura superioara</BUTTON>
<BUTTON class="br">Bordura dreapta</BUTTON> <BR>
<BUTTON class="bb">Bordura inferioara</BUTTON>
<BUTTON class="bl">Bordura stanga </BUTTON>
</PRE>
<TABLE class="bord">
<TR><TD>a11<TD>a12
<TR><TD>a21<TD>a22
</TABLE>
</BODY>
</HTML>
183
<HTML>
<HEAD>
<STYLE>
H2 {border:5pt inset coral; margin:2mm;}
DIV{border:0.07in dotted green; color:magenta;}
</STYLE>
</HEAD>
<BODY>
<H2>Proprietăţi de <SPAN style="text-decoration:underline;font-weight:bold;">
Borduri </SPAN> </H2>
<DIV>Bordura are trei caracteristici: grosime, stil şi culoare</DIV>
</BODY>
</HTML>
<HTML>
<HEAD>
<STYLE>
H3 {border-width:8pt 7pt 9pt 6pt;
184
border-color:red green blue;
border-style:solid inset outset;}
!*pentru grosimi avem 4 valori (sus, dreapta, jos, stânga)
pentru culori şi stiluri avem 3 valori (sus stânga-dreapta jos)
</STYLE>
</HEAD>
<BODY>
<H3>Listă de valori pentru borduri</H3>
<UL>
<LI>grosime <LI>culoare <LI>stil
</UL>
</BODY </HTML>
185
în cazul în care folosim proprietatea margin, valoarea poate fi o listă de
1,2,3,4 valori cu semnificaţia din tabelul 14.5
Proprietatea margin este exemplificată mai jos:
<HTML>
<HEAD>
<STYLE>
blockquote {margin-top:0.01in;margin-right:20%;margin-
bottom:2ex;margin-left:10%;}
P{margin: -20pt 10ex 10px; color:SandyBrown ;}
DIV{margin:30 pt; color:red;}
SPAN{margin 100px 50px; background:cyan;}
</STYLE>
<BODY>
<BLOCKQUOTE>Acest bloc este un citat <SPAN>Omul care nu are
nimic de pierdut este cel mai greu de invins<BR>
(Goethe)</SPAN>BLOCKQUOTE>
<DIV>Acesta e un bloc de diviziune</DIV>
</BODY>
</HTML>
<HTML>
<HEAD>
<STYLE>
P{font-style:italic; text-transform:uppercase; color:yellow;}
BODY {background-color:red; background-image: URL(bliss.bmp);}
</STYLE>
<BODY>
<P>Acesta este un exemplu de utilizare a proprietăţilor de culoare</P>
</BODY>
</HTML>
187
Figura 14. 11. Proprietăţi de culoare
<HTML>
<HEAD>
<STYLE>
body{background-color:yellow;background-image: URL(ush.jpg);}
div {background-attachment:fixed; width:300px; height:200px;}
</STYLE>
<BODY>
<DIV>Acesta este un text despre Universitatea Spiru Haret.</DIV>
</BODY>
</HTML>
188
Figura 14. 12. Proprietatea attachment
189
Exemplificarea acestei proprietăţi se face prin codul de mai jos.
<HTML>
<HEAD>
<STYLE>
BODY * {background-image:url(im4.gif);}
</STYLE>
</HEAD>
<BODY >
<H2 style="color:darkblue;"> Proprietatea background-repeat </H2>
<UL style="line-height:20pt; background-image:url(peace.jpg); background-
repeat: no-repeat;color:darkblue"> Proprietati de culoare
<LI style="background-image:url(im5.gif); background-repeat : repeat-
x;"> color
<LI style="background-image:url(im2.gif); background-repeat : repeat">
background-color
<LI style="background-image:url(bullet.gif); background-repeat : repeat-
y;color:"> background-image
</UL>
</BODY>
</HTML>
191
Proprietatea background – este o combinaţie a proprietăţilor de culoare
şi imagine de fundal. Valoarea acestei proprietăţi este o listă de valori a
proprietăţilor de mai sus, separate prin spaţiu şi având următoarea ordine.
Background-attachments, background-color, background-image,
background- position şi background-repeat.
Exemplificarea acestei proprietăţi se face prin codul de mai jos.
<HTML><HEAD></HEAD><BODY>
<H2 style="background:fixed yellow url(im2.gif) 300px 2cm repeat-y;">
Proprietatea background</H2>
<UL style="background:scroll cyan url(im7.bmp) no-repeat; line-
height:20pt;font-size:large;font-weight:900">
Ordinea proprietatilor lui background
<LI style= "background:scroll beige url(bullet.gif) 30% repeat-x; ">
background-attachment
<Li style= "background:scroll bisque url(im5.gif) 30% repeat;">
background-color
<LI style= "background:scroll coral url(tips.gif) 100% repeat-y; ">
background-image
<LI style= "background:scroll beige url(im4.gif) 30% repeat-x;">
background-position
<LI style= "background:scroll url(im6.gif) 100% repeat-y;">
background-repeat
</UL> </BODY> </HTML>
192
15. Poziţionarea elementelor în pagină în CSS
195
196
HTML
HEAD BODY
FRUNZĂ B I P DIV
TR TR B LI LI LI TR TR
TD TD TD TD TD TD TD TD
197
15.2. Proprietatea Display
Css oferă posibilitatea de a schimba modul de afişare a tipului elementelor
(bloc şi inline), prin utilizarea proprietăţii display.
Valorile posibile ale proprietăţii display sunt:
inline – elementele se afişează în continuarea rândului curent
block – elementele se afişează la început de rând
none – elementul nu se va afişa
Dacă se doreşte ca toate elementele din exemplul 15.1 să fie afişate inline,
se va scrie următoarea foaia de stil:
*{display:inline}
iar browser-ul le va afişa aşa cum se observă în figura 15.3.
198
Figura 15. 3. Proprietatea Display:inline
Se poate ca numai anumitor elemente să li se schimbe modul de afişare,de
exemplu, elementul de bloc TABEL dorim să fie afişat inline şi elementul de text B să fie
afişat la nivel de bloc. În acest caz, adăugăm în exemplul 15.1, următoarele linii de cod :
Table {display:inline}
B {display:block}
199
15.3. Elemente flotante
Modul normal de aşezare a elementelor în pagină poate fi modificat cu
ajutorul obiectelor flotante şi poziţionate.
Obiectele flotante se definesc cu ajutorul proprietăţii float care se poate
ataşa la orice element. Valorile posibile sunt:
none – caseta nu e flotantă
right – casetă flotantă spre dreapta
left – casetă flotantă spre stânga
OBSERVAŢIE!
Obiectele flotante se pot defini:
cu atributul align, pentru elementele HTML care-l acceptă (de exemplu
<img align=left>)
cu CSS pentru elementele care nu acceptă atributul align (de exemplu,
OL, UL etc.)
Dacă în exemplul din figura 15.1 adăugăm liniile de mai jos la foaia de stil
OL{float:left}
şi în corpul programului înlocuim elementul TABLE care defineşte primul tabel, cu
<TABEL style=”float:right”>, iar elementul IMG, cu <IMG align=left>, atunci
va apărea imaginea şi primul tabel aliniat la dreapta şi lista aliniată la stânga, ca în
figura de mai jos:
200
Browser-ul execută următorii paşi la întâlnirea unui element flotant:
fluxul normal de aşezare în pagină este întrerupt
elementul flotant este afişat în poziţia indicată (stânga, dreapta),
începând din rândul următor
se afişează elementele din flux de la punctul în care a fost întrerupt,
începând cu spaţiul rămas liber de deplasarea obiectului flotant
casetele elementelor flotante se pot suprapune peste casetele din fluxul
normal, dar nu şi conţinutul lor
Proprietatea CLEAR
După cum se observă în exemplul din figura 15.5, al doilea tablou apare în
spaţiul rămas liber. Dacă se doreşte ca un element de bloc să apară afişat pe rând
nou, după aplicarea proprietăţii float, se foloseşte proprietatea clear.
Valorile posibile sunt:
none – nu se deplasează elementul
left – partea din stânga elementului este liberă
right – partea din dreapta elementului este liberă
both – ambele parţi (stânga şi dreapta) vor fi libere
Dacă în figura 15.5, în al doilea tabel adăugăm atributul style=”clear:left ”
atunci tabelul va fi afişat pe rând nou, cum reiese din figura:
201
15.4. Elemente poziţionate
CSS oferă posibilitatea de a schimba fluxul normal de aşezare a
elementelor în pagină şi cu ajutorul proprietăţii POSITION, care poate fi ataşată
oricărui element în foaia de stil sau ca valoare a atributului STYLE.
Valorile posibile sunt:
static – aşezarea se face în flux normal (valoare implicită)
absolute – elementul iese din fluxul normal şi este afişat la o distanţă
relativă faţă de primul părinte poziţionat
relative – elementul rămâne, în fluxul normal, dar este poziţionat la o
distanţă relativă cu poziţia sa normală (elementul se poate suprapune
peste altele)
fixed – elementul iese din fluxul normal şi e afişat într-o zonă vizibilă. El
rămâne fix când se derulează pagina cu barele de defilare
Marginile casetei corespunzătoare elementului poziţionat sunt definite de
proprietăţiile:
top
right
bottom
left
Valorile posibile sunt:
o lungime dată în: cm, mm , px, pt, em
un procent – relativ la părinte
Poziţionarea absolută
Poziţionarea absolută a unui element este relativă la primul părinte poziţionat.
Dacă elementul, care se doreşte a fi poziţionat absolut, nu are un părinte sau “stramoş”
poziţionat, atunci el va fi poziţionat relativ la colţul stânga sus al ferestrei.
Pentru a poziţiona absolut un element se foloseşte proprietatea
position:absolute şi se atribuie valori proprietăţilor top, bottom, left şi right.
În continuare vor fi date trei exemple:
primul, pentru poziţionarea absolută a unui element TD, care nu are un
părinte poziţionat
al doilea, pentru poziţionarea absolută a unui element TD care are un
părinte poziţionat
al treilea, pentru poziţionarea absolută şi a părintelui
<HTML> <HEAD>
<STYLE>
IMG { position:absolute; left : 80px; top : 100px;}
</STYLE></HEAD>
<BODY>
<P>Pozitionarea absoluta a elementului IMG fata de coltul stanga sus</P>
<TABLE border=2 style=cellspacing=5 height=50 >
<TR ><TD>a11<TD> <IMG src="imag1.gif"> a12
202
<TR><TD>a21<TD>a22
</TABLE> </BODY> </HTML>
<HTML><HEAD><STYLE>
IMG{position:absolute; left:30pt; top:20pt}
.parinte{position:absolute; left:50pt; top:80pt}
</STYLE></HEAD>
<BODY>
<P>Pozitionarea absoluta a unui element IMG fata de parintele
TD, pozitionat absolut</P>
<TABLE borde=2 style=cellspacing=5 height=50 >
<TR><TD>a11
<TD class="parinte"> <IMG src="imag1.gif"> a12
<TR><TD>a21<TD>a22
</TABLE> </BODY> </HTML>
203
<HTML><HEAD><STYLE>
IMG{position:absolute; left:50pt; top:30pt}
.parinte{position:absolute; left:50pt; top:50pt}
</STYLE></HEAD>
<BODY>
<P>Pozitionarea absoluta a unui tabel si a unei imagini </P>
<TABLE class="parinte" borde=2 style=cellspacing=5 height=50 >
<TR><TD>a11<TD> a12
<TR><TD>a21<TD>a22 <IMG src="imag1.gif">
</TABLE>
</BODY> </HTML>
Poziţionarea relativă
Spre deosebire de poziţionarea absolută, în cazul poziţionării relative, un
element este poziţionat în raport cu fluxul normal, relativ la poziţia sa normală.
Poziţionarea relativă se face cu ajutorul proprietăţii position:relative şi
atribuind valori marginilor casetei: top, right, bottom, left
Un exemplu este redat mai jos
<HTML> <HEAD>
<STYLE>
IMG{position:relative; left:20px; top:20px}
204
</STYLE></HEAD>
<BODY>
<P>Pozitionarea relativa</P>
<TABLE border=2 style=cellspacing=5 height=50 >
<TR><TD>a11<TD> a12
<TR><TD>a21<TD> <IMG src="imag1.gif">
</TABLE>
</BODY> </HTML>
206
Figura 15. 12. Proprietatea z-index
207
PARTEA A III-A
JAVASCRIPT
207
208
16. JavaScript – Elemente de bază
209
NOTĂ!
JavaScript nu este acelaşi lucru cu Java. Java este limbaj de programare
complex (ca şi C++), realizat de firma Sun, creat cu scopul de a realiza atât
aplicaţii client, cât şi aplicaţii server.
O aplicaţie client este un program cu ajutorul căruia se poate interacţiona
cu calculatorul, de exemplu un browser.
O aplicaţie server este un program cu care interacţionează o aplicaţie
client, de exemplu un calculator la distanţă sau un server WEB. De exemplu, cu
ajutorul browser-ului (aplicaţie client) se pot cere pagini WEB de la un server
WEB (aplicaţie server), care “dialoghează” cu browser-ul utilizat.
Se pot întâlni miniaplicaţii Java (program Java) aflate pe un server WEB
şi care se execută prin utilizarea unor tag-uri în paginile HTML, ca de exemplu,
<applet> sau <object>. La întâlnirea acestor etichete, browser-ul deschide
programul Java de pe serverul WEB şi îl execută în fereastra sa.
Programele JavaScript, numite şi scripturi, sunt secvenţe de program ce se
scriu în blocul <SCRIPT> şi </SCRIPT> din antetul unei pagini sau din corpul
programului.
JavaScript – Interpretor
Prin limbaj interpretor se înţelege faptul că browser-ul preia câte o
instrucţiune, o execută şi trece la următoarea, o preia şi o execută s.a.m.d. Din acest
motiv, erorile la limbajele interpretate sunt mai greu de depistat, deoarece nu există
compilatoare ca la limbajele de programare complexe (Java, C, C++ etc.) Totuşi,
putem să sesizăm o eroare din faptul că după ea instrucţiunile nu mai pot fi
executate.
211
Unele evenimente sunt importante pentru JavaScript, cum ar fi atunci când
se executa clic pe butonul Submit, Reset all, Cancel etc., iar alte evenimente sunt
mai puţin importante, cum ar fi deplasarea mouse-ului într-o zonă fără informaţii a
unui formular. Modul de gestionare a evenimentelor este un concept fundamental
al limbajului JavaScript. Pentru a reacţiona la evenimentele importante, trebuie
definite rutine în JavaScript de tratare a evenimentelor.
Dacă se încorporează scripturi în paginile WEB, avem multe facilităţi, ca
de exemplu:
− Realizarea paginilor dinamice
− Scrierea mesajelor în bara de stare a browser-ului
− Afişarea căsuţelor de avertizare
− Deschiderea de noi ferestre ale browser-ului
− Validarea datelor din formulare
− Crearea de formulare interactive
− Efectuarea calculelor
− Actualizarea datei şi a timpului
− Identificarea programelor de completare pentru browser (plug-in), cum
ar fi Flash
Programul JavaScript este totuşi limitat, în sensul că nu poate executa orice
operaţie ca de exemplu:
− citirea şi scrierea fişierelor de pe, respectiv pe hard-ul propriu
− scrierea aplicaţiilor pe parte de server care au fost numite în capitolul 12,
aplicaţii Common Gateway Interface (CGI), care se pot scrie cu
limbaje ca: Java, Perl, PHP.
JavaScript este o componentă a limbajului DHTML (Dynamic HTML),
care, împreună cu HTML şi CSS, este folosit de profesionişti pentru realizarea
paginilor cu efecte speciale de tipul celor realizate cu limbajul Flash, fără a apela la
aplicaţiile de completare (plug-in).
OBSERVAŢIE!
Se poate întâmpla ca mai multe browser-e să nu poată interpreta scripturile
(cum ar fi versiunile anterioare Microsoft Internet Explorer 3, Netscape 1.X şi
America Online 3) şi în loc să execute aceste scripturi le afişează. Pentru a ascunde
un cod JavaScript de browser-ele mai vechi, acesta se poate plasa într-un
comentariu HTML din paginile WEB care este scris între < !-- şi -- >.
Browser-ele compatibile cu JavaScript recunosc şi rulează un script
conţinut într-un comentariu HTML. Browser-ele incompatibile cu JavaScript sau
pentru acelea pentru care JavaScript nu este activ (în mod prestabilit JavaScript
este activ pe majoritatea browser-elor) vor ignora scripturile, crezând că scriptul
este un comentariu. Atenţie însă, blocul de comentarii HTML se va plasa în
interiorul blocului SCRIPT (pentru ca scriptul să fie considerat comentariu şi să nu
fie afişat de browser-ele incompatibile JavaScript), nu în afara blocului SCRIPT,
caz în care şi browser-ele compatibile JavaScript îl vor considera ca pe un
comentariu HTML.
Să considerăm următorul exemplu:
<HTML> <HEAD>
<TITLE> primul script </TITLE>
<HEAD>
<BODY>
<SCRIPT language="JavaScript" type="text/javascript">
213
document.write('Bine aţi venit în lumea scriptului')
</SCRIPT>
</BODY> </HTML>
214
Putem să îmbunătăţim un pic aspectul programului de mai sus, prin
afişarea casetei de avertizare, care va conţine textul şi va rămâne pe ecran până se
execută evenimentul: clic pe butonul OK aflat în căsuţă.
Pentru a afişa caseta de dialog de avertizare se schimbă linia de declaraţie
din blocul SCRIPT, cu declaraţia care conţine funcţia de avertizare alert, astfel:
<HTML>
<HEAD>
<SCRIPT language="JavaScript" >
<!--
alert('Bine aţi venit, din nou')
-->
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
OBSERVAŢII!
− în programul din figura 16.1, scriptul este unul de conţinut (apare în
corpul programului)
− în programul din figura 16.2, scriptul este unul de antet (apare în blocul
de antet al paginii)
− caseta de dialog de avertizare rămâne pe ecran până se acţionează
butonul OK, caz în care browser-ul va afişa textul în fereastra sa (ca în
figura 16.1)
− spunem că funcţia alert comandă afişarea modală a cutiei de dialog de
avertizare, adică scriptul nu execută altă instrucţiune până la închiderea
cutiei
− programul JavaScript face distincţie între literele mari şi literele mici, de
exemplu o variabilă “student” este diferită de o variabilă “Student”
− dacă scriptul conţine mai multe instrucţiuni într-o linie, acestea vor fi
separate prin punct şi virgula ( ; ). De obicei se evită această situaţie.
215
16.3. Tipuri de date şi variabile
Informaţia inserată în paginile web sau în scripturi este o valoare care
aparţine unui tip de date. De exemplu, informaţia: “Bine aţi venit în mediul
JavaScript !” este o valoare de tip string.
În JavaScript există şase tipuri de date: numerice, şiruri, boolean, obiecte,
null, undefined (nedefinit).
216
Date de tip Boolean
Există două valori de tip boolean: adevarat sau true, fals sau false. Valorile
booleene sunt folosite în comparaţii pentru a ajuta programul JavaScript să ia o
decizie.
Obiecte
În secţiunea precedentă am definit obiectul, proprietăţile şi metodele lui.
Un obiect poate fi considerat un tip de dată care are o valoare (de exemplu, un
formular). În secţiunile următoare va fi prezentat lucrul cu obiecte.
Tipul de data Null
Un tip NULL este acela care nu are nicio valoare şi niciun înţeles. Aceste
valori vide sunt utile în scrierea scripturilor complicate, de exemplu câmpul nume
dintr-un formular poate să aibă valoarea null, până în momentul introducerii unui
nume.
Tipul de dată Undefined
O valoare nedefinită poate fi dată unei variabile după ce ea a fost creată,
dar înainte de a i se atribui o valoare.
Atribuire şi egalitate
Semnul egal (=) este folosit în JavaScript pentru a indica o operaţie de
atribuire.
De exemplu: cantitate = 20 înseamnă “Se atribuie valoarea 20 variabilei
cantitate” sau “cantitate ia valoarea 20”. Când se doreşte a se compara două valori
dacă sunt egale se foloseşte o pereche de semn egal (==). Acestea vor fi enumerate
şi la operatori, în secţiunea următoare.
16.3.2. Variabile
Variabilele sunt folosite în JavaScript pentru a stoca valori în scripturile
noastre. Variabilele sunt simboluri care înlocuiesc datele ce se pot modifica în
timpul execuţiei. În cazul în care nu se cunoaşte o valoare (de exemplu, un preţ al
unui produs dorit de achiziţionat), în momentul rulării unui program JavaScript se
poate folosi variabila “Preţ”. Ne putem imagina o variabilă ca pe o cutie, care are
pe ea scris un nume (Preţ) şi care va conţine o valoare (valoarea preţului).
Declararea variabilelor
Deşi nu este impusă, este considerată o bună practică să se declare
variabilele înainte de a fi folosite. Pentru a comunica browser-ului că dorim să
creăm o variabilă, se foloseşte declaraţia în două părţi:
− Cuvântul cheie var
− Numele variabilei – care este format dintr-un set de caractere
alfanumerice, dar primul caracter trebuie să fie o literă.
217
Este indicat ca numele variabilei să fie cât mai sugestiv. Este interzis să se
folosească drept nume de variabilă cuvintele cheie (25 la număr în JavaScript) şi nu
sunt indicate să se folosească cuvintele rezervate (33 la număr în JavaScript).
OBSERVAŢII!
− Se pot declara mai multe variabile cu acelaşi var, dar ele trebuie separate
prin virgule
− Amintim că JavaScript este un limbaj case-sensitive, adică face
distincţie între literele mari şi mici
− Variabilele pot avea orice lungime
− Nu se declară, în mod obligatoriu, tipul unei variabile, este suficient să
indicăm numele ei. Tipul poate fi dat în urma unei atribuiri
− Există posibilitatea să nu declarăm implicit o variabilă cu var, dar putem
să-i „asignăm” o valoare. De exemplu: preţ = 100 este o declarare
implicită a variabilei preţ
218
Mesajul (primul parametru) este afişat în cutia de dialog. Dacă se introduce
o dată şi se apasă OK, cutia va returna această dată. Dacă nu se introduce nicio dată
dar se apasă OK, cutia va returna al doilea parametru, valoarea implicită. Dacă se
apasă CANCEL, atunci se va returna NULL. O declaraţie de atribuire îi comunică
browser-ului să înlocuiască valoarea iniţială cu o valoare nouă. O declaraţie de
atribuire are trei părţi: numele variabilei, operatorul de atribuire (=) şi valoarea
returnată de funcţia prompt, astfel:
nume_variabilă= prompt(“Mesaj”, “valoare nouă”).
De exemplu:
var n=0
n = prompt(“Daţi valoarea lui n”, 0)
alert (n)
− Dacă se introduce în cutia de dialog o dată, de exemplu 10 şi se apasă
OK se va afişa 10
− Dacă se apasă OK şi nu se introduce nimic apare 0
− Dacă se apasă CANCEL se afişează NaN
Conversia datelor
Am arătat că variabilele în JavaScript nu au declarat tipul. Este posibil să
convertim anumite variabile la tipul dată dorit. De exemplu, numerele pot fi incluse
în şiruri, dar şirurile nu pot fi considerate direct numere ca să putem să le aplicăm
operatori aritmetici.
Concatenarea şirurilor
Valorile de tip şir pot fi concatenate cu ajutorul operatorului “+”. De
exemplu, prin şirul: şir1=”abc” şir2=”def” , “şir1” + “şir2” se întelege şirul format
prin unirea celor două “abcdef”
Dacă avem un număr, acesta este convertit direct în şir şi apoi afişat, de
exemplu, cu funcţia alert(“şir”).
- var vârstă=20
alert(“vârstă=” + vârstă + “ani”)
atunci variabila întreagă este convertita în întreg şi se va afişa
vârstă = 20 ani
Pentru a transforma şirurile în numere pentru a le putea aplica operatorii
aritmetici folosesc două funcţii: parseInt() şi parseFloat().
Aceste funcţii transformă un şir în număr întreg, respectiv în număr real.
Conversia unui şir în număr se face până când se întâlneşte un caracter care nu este
cifră.
219
De exemplu:
− parseInt(“100”) - întoarce 100
− parseInt(“-120”) - întoarce -120
− parseInt(“300ab”) - întoarce 300
− parseInt(“abc”) - întoarce NaN, mesaj de eroare
− parseInt(“20.75”) - întoarce 20
− parseFloat(“37.4”) - întoarce 37.4
− parseFloat(“47.89ab”) - întoarce 47.89
Exemplificăm cele spuse mai sus, în scriptul pentru adunarea a două
numere: nr1 şi nr2.
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
nr1 = parseInt(prompt("Daţi primul număr: ",0))
nr2 = parseInt(prompt("Daţi al doilea număr: ",0))
s = nr1+nr2
alert("Suma este: " + s)
</SCRIPT>
</HEAD>
</BODY>
</HTML>
220
Operatori
În JavaScript există mai multe tipuri de operatori: aritmetici, logici, de
atribuire, relaţionali, condiţionali, logici pe biţi. În continuare vor fi descrise
aceste tipuri de operatori.
În JavaScript, ca şi în alte limbaje de programare, operatorii sunt evaluaţi
într-o anumită ordine, ordine cunoscută sub numele de precedenţă. Un operator cu
precedenţă mai mare este evaluat înaintea unuia cu precedenţă mai mică.
În tabelul de mai jos este dată ordinea descrescătoare a precedenţei lor.
Operator Descriere
., (),[], Operatori de adresare: accesare câmp, indexare
tablou, apel functie
++, - -, +, - Operatori unari (un singur operand), întoarcerea
, !, ~ unei date, crearea unui obiect
*, /, % Înmulţirea, împărţirea, restul împărţirii
<<, >> Operatori de deplasare biţi
<, <=, >, Operatori relaţionali
>=
==,!=, = = Egalitate, inegalitate, identitate, nonidentitate
=, != = =
& AND (şi) pe biţi
^ XOR (sau exclusiv) pe biţi
| OR (sau) pe biţi
&& AND logic
|| OR logic
?: Condiţional
=, op=, Atribuirea, atribuire cu operaţie
(+=, -=, %=, |=,
*=, <<=, >>=, &=,
^=)
, Operator virgulă de evaluare multiplă
Operatori aritmetici
Operatorii aritmetici sunt : + (operator binar), - (operator binar), * , /, %,
++, --, + (operator unar de semn), - (operator unar de semn), + (operator de
concatenare).
NOTĂ!
− Operatorii unari au un singur operand
− Operatorii binari au doi operanzi
În continuare vor fi definiţi şi exemplificaţi operatorii aritmetici enumeraţi
mai sus:
221
− Operatorul binar + este operator de adunare. De exemplu:
o 5+7 ia valoarea 12
o 9.4+13.7 ia valoarea 22.1
o n=10 şi m=20 n+m ia valoarea 30
− Operatorul binar - este operator de scădere. De exemplu:
o 5-7 ia valoarea -2
o 9.4 - 13.7 ia valoarea -4.3
− Operatorul * este operatorul de înmulţire. De exemplu:
o 5*7 ia valoarea 35
o n=25 n*10 ia valoarea 250
− Operatorul / este operatorul de împărţire. De exemplu:
o 7/2 ia valoarea 3.5
o a = 10 2 / a ia valoarea 0.2
− Operatorul % este operatorul pentru obţinerea restului împărţirii.
De exemplu:
o 7%2 ia valoarea 1
o -5%2 ia valoarea -1
o n=7.5 atunci n%3 ia valoarea 1.5
OBSERVAŢIE!
În JavaScript restul poate fi şi negativ, operanzii pot fi şi numere reale.
222
y = x++*5
alert("Valoarea lui x++ este: " + x + " şi valoarea lui y = x++*5 este: " + y)
</SCRIPT>
</BODY></HTML>
browser-ul va afişa:
Operatori de atribuire
Atribuirea este un operator, pe care l-am introdus în secţiunea precedentă.
Există mai multi operatori de atribuire:
− Operatorul “=” se foloseşte într-o expresie variabilă = expresie şi are
ca efect evaluarea expresiei şi atribuirea valorii ei variabilei.
În JavaScript se pot efectua şi atribuiri multiple, cu următoarea sintaxă:
v1 = v2 = v3 =...= vn = expresie
Principiul de execuţie este următorul: se evaluează expresia din partea
dreaptă şi valoarea se atribuie variabilei vn, apoi conţinutul variabilei vn este
atribuit variabilei vn-1 s.a.m.d.
− Operatorul de atribuire = poate fi prefixat de un operator aritmetic astfel:
(OP=), unde OP poate fi +, -, *, /, %. Efectul unor astfel de atribuiri este
următorul: se execută operaţia din stânga semnului “=” şi apoi se face
atribuirea valorii operaţiei variabilei prima din stânga.
Se consideră următorul cod:
<HTML><HEAD>
<SCRIPT language="JavaScript">
var x=100, y=200
x+=y
alert("x+=y este: " + x)
x=100
224
x*=y
alert("x este: " +x)
</SCRIPT>
</BODY></HTML>
Browser-ul va afişa:
OBSERVAŢII!
1. Se pot compara şi şiruri, ordinea fiind cea lexicografică
2. Conform codului ASCII – o cifră este mai mică decât o literă (codul
cifrelor este 48-57) şi o literă mare (codul 64-93) este mai mică decât o
literă mică (codul 97-126)
225
Exemple cu operatori relaţionali:
a) 35> 45 returnează false
b) a = 35 a>20 returnează true
c) “5”<”aBc” returnează true
d) “C”<”c” returnează true
e) a=”aBc” b=”Abc” a>b returnează false
f) a!=b returnează true
g) a== b returnează false
Operatorul condiţional
Operatorul condiţional, cunoscut şi sub numele de operator trenar, este
diferit de cei prezentaţi mai sus. Acest operator cere browser-ului să evalueze o
expresie şi, în funcţie de valoarea acesteia, se execută o anumită expresie dacă
valoarea este true şi o alta dacă valoarea este false. Sintaxa este următoarea:
expresie ? expresie1: expresie 2
şi are ca efect :
− Se evaluează expresia (prima parte a operatorului)
− Dacă expresie = true atunci se evaluează expresie1 (partea a doua)
− Dacă expresie = false atunci se evaluează expresie2 (partea a treia)
După cum reiese din sintaxa operatorului condiţional, acesta este alcătuit
din trei părţi. Prima parte este separată de partea a doua prin caracterul “ ? ”, iar
partea a doua este separată de partea a treia prin caracterul “ : ”.
De exemplu, putem folosi operatorul condiţional în rezolvarea ecuaţiei de
gradul I, ax+b =0, scriind scriptul:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
a=parseInt(prompt("dati primul numar",0))
b=parseInt(prompt("dati al doilea numar",0))
a!=0?alert("x= "+-b/a):b!=0?alert("nu exista solutii"):alert("o
infinitate de solutii")
</SCRIPT>
</HEAD>
<BODY></BODY>
</HTML>
226
Figura 16. 7. Operatorul condiţional “?”
227
Operatorii binari &, |, ^ , AND, OR, XOR acţionează; la nivel de bit,
pentru fiecare pereche de biţi aflaţi pe poziţii identice, conform tabelului
de mai jos:
OBSERVAŢIE!
Aceşti operatori lasă nemodificat conţinutul variabilelor, de exemplu,
x=2
alert ( x << 2)
alert (x)
va afişa mai 8 apoi 2.
x<<2 va fi 8 (00001000)
~x va fi -3 (11111101)
x>>1 va fi 1 (00000001)
y<<2 va fi 20 (00010100)
x&y va fi 0 (00000000)
x|y va fi 7 (00000111)
x^y va fi 7 (00000111)
229
17. Instrucţiuni şi Funcţii în JavaScript
17.1. Instrucţiuni
În JavaScript, ca şi în majoritatea limbajelor de programare complexe,
există trei mari categori de instrucţiuni:
− de atribuire
− de decizie
− repetitive
Despre instrucţiunile de atribuire s-a vorbit şi în capitolul precedent.
Instrucţiunea IF şi IF … ELSE
Instrucţiunea IF este una din cele mai folosite instrucţiuni în JavaScript,
pentru că determină browser-ul să execute un set de instrucţiuni dacă o anumită
expresie condiţională este adevarată sau nu.
O expresie condiţională este o expresie booleană care ia valoarea true sau
false.
Instrucţiunea IF simplă
Instrucţiunea If are sintaxa:
IF (expresie conditională) { instrucţiuni }
Se observă că instrucţiunea condiţională IF simplă are trei părţi: cuvântul
cheie IF o expresie condiţională cuprinsă între paranteze şi blocul de instrucţiuni
care se execută în cazul în care expresia este true, cuprins între acolade ({}). Blocul
de instrucţiuni se mai numeşte instrucţiune compusă.
230
În cazul în care blocul de instructiuni conţine o singură instrucţiune,
acoladele pot lipsi, dar este indicat să se folosească pentru lizibilitatea scriptului.
Un exemplu de instrucţiune IF simplă este dat mai jos.
<HTML>
<HEAD></HEAD>
<BODY>
<SCRIPT language = "JavaScript">
// Ecuaţia de gradul I
a = parseInt( prompt ("Daţi un număr a", 0))
b = parseInt( prompt ("Daţi termenul liber b", 0))
if (a !=0)
{ x = - b / a; alert ("x = " + x) }
</SCRIPT>
</BODY></HTML>
IF (expresie 1)
{ instrucţiuni 1}
else if (expresie 2)
{instrucţiuni 2 }
else
{instrucţiuni 3}
233
Figura 17.3. Instrucţiunea IF ... else if ... else
Instrucţiunea IF imbricată
În cazul în care o expresie este adevărată se execută o instrucţiune IF care
are o expresie care se evaluează şi, dacă este adevărată, se execută altă instrucţiune
IF s.a.m.d., spunem că avem instrucţiuni IF imbricate.
Sintaxa instrucţiunii este:
IF (expresie 1)
{expresie 2}
……..
{ if expresie n }
else
{expresie n1}
.........
else
{expresie 2.1}
else
{expresie 1.1}
234
În exemplul următor se rezolvă ecuaţia de gradul 2: ax2 + bx + c = 0
<HTML>
<HEAD></HEAD>
<BODY>
<SCRIPT language = "JavaScript">
a = parseInt(prompt ("Daţi a ", 0))
b = parseInt(prompt ("Daţi b ", 0))
c = parseInt(prompt ("Daţi c ", 0))
D=b*b-4*a*c
if (a != 0)
if (D>=0) // a<>0 D>0
{alert ("Rădăcini reale") }
else // a <> 0 D< 0
{alert ("Rădăcini complexe") }
else
if (b!=0) // a=0 b<>0
{ alert ("Ecuaţie gradul I x = " + -c/b) }
else
if (c==0)
{alert ("O infinitate de soluţii ") }
else // a=b=0 c<>0
{alert ("Nu există soluţii") }
</SCRIPT>
</BODY>
</HTML>
235
Figura 17.4. Instrucţiunea IF imbricată
Instrucţiunea switch...case
În cazul în care browser-ul trebuie să ia o serie de decizii pe baza unei
singure valori de schimb atunci instrucţiunea if este ineficientă, folosindu-se
instrucţiunea switch … case.
Sintaxa instrucţiunii switch...case:
switch (expresie)
{
case exp1: instrucţiuni 1 [; break]
case exp2: instrucţiuni 2 [; break]
.
.
case exp3: instrucţiuni n [; break]
[default: instrucţiuni n +1]
} // end switch
unde:
- [ ] - au caracter opţional
- expresie - este o expresie întreagă
- expresie i – sunt expresii întregi
- instrucţiuni i – sunt instrucţiuni care se execută în cazul în care
expresie==expresie i
236
execută instrucţiunile ce urmează după cuvântul cheie default, dacă acesta există,
altfel, iese din instrucţiunea switch … case.
Dacă break este ultima instrucţiune din grupul de instrucţiuni in care se
execută, atunci browserul omite să evalueze expresiei+1 … expresiein şi execută
instrucţiunea ce urmează după acolada închisă (‘}’).
Dacă break nu este la sfârşitul grupului de instrucţiuni ce se execută, atunci
browser-ul compară valoarea expresiei cu valoarea expresiilor i+1 … expresiein ,
chiar dacă nu va mai găsi egalitate până la sfârşitul instrucţiunii switch.
Codul care urmează probează instrucţiunea switch. Se dă un număr în baza
10 şi se cere transformarea lui în baza 16. Pentru aceasta se împarte un număr la 16
până când ajunge la zero şi resturile, luate în ordine inversă obţinerii lor, formează
numărul în baza 16 (N = Q * 16 + R).
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function Hexazec(n)
{
var Hexa ="", r
while (n>0) {
r=n%16
if (r>=10) {
switch(r) {
case 10: R="A"; break
case 11: R="B"; break
case 12: R="C"; break
case 13: R="D"; break
case 14: R="E"; break
case 15: R="F"; break
}
Hexa=R+Hexa
}
else {
Hexa=string(r)+Hexa
}
n=(n-r)/16
}
return Hexa
}
</SCRIPT>
<BODY>
<SCRIPT language="JavaScript">
n=parseInt(prompt("Daţi numărul n",0))
alert("Numărul în baza 10 este n = " + n )
alert("Numărul în baza 16 este nr16 = " + Hexazec(n))
</SCRIPT></BODY></HTML>
237
Figura 17.5. Instrucţiunea switch
Instrucţiunea “for”
Instrucţiunea for are o variabilă contor, o condiţie şi o acţiune ce
actualizează contorul. Ciclul for determină browser-ul să execute instrucţiunile din
corpul ciclului până când condiţia este falsă. Înainte de începerea unui ciclu (acesta
se mai numeşte şi o iteraţie sau un pas al ciclului) condiţia este testată. După
executarea instrucţiunilor din ciclu, contorul este actualizat înainte ca o nouă
iteraţie să înceapă.
Dacă condiţia returnează mereu valoarea false, ciclul nu se execută
niciodată. Dacă condiţia returnează mereu valoarea true, ciclul este infinit.
Sintaxa instrucţiunii for este:
for(expresie_iniţializare; expresie_condiţională [;
expresie_incrementare])
{
instrucţiuni
}
unde:
238
expresie_iniţializare se foloseşte pentru iniţializarea contorului
(variabila de ciclare)
expresie_test se foloseşte pentru a testa dacă se execută blocul de
instrucţiuni subordonate instrucţiunii for; dacă expresia are valoarea
true, atunci se execută instrucţiunile, altfel se opreşte ciclarea
expresie_incrementare este opţională şi se foloseşte pentru incrementarea
variabilei de ciclare. Dacă incrementarea se face cu 1, adică se foloseşte
operatorul ++, atunci expresie_incrementare poate lipsi
Instrucţiunea for funcţionează astfel:
a) se evaluează expresia_iniţializare (aceasta poate conţine şi declaraţia
variabilei de ciclare)
b) se evaluează expresia_test. În cazul în care are valoarea true, se execută
instrucţiunile după care se trece la pasul c), altfel se trece la
instrucţiunea după for
c) se evaluează expresia de incrementare şi se trece la pasul b)
Să probăm instrucţiunea for prin următoarele exemple: să aflăm suma
primelor n numere, în mai multe moduri.
OBSERVAŢIE! expresiile pot fi vide, dar nu este indicată folosirea
instrucţiunii for în această formă
1)
<HTML>
<HEAD><TITLE>Suma primelor n numere </TITLE></HEAD>
<BODY>
<SCRIPT language="JavaScript">
s1=0
n=parseInt(prompt("dati numarul n = ",1))
for(i=1 ; i<=n ; i++)
s1+=i //s1=s1+i
alert("suma primelor "+n+ " numere este "+s1)
s2=0
for(i=n; i>=0 ; i--)
s2+=i //s2=s2+i
document.write("Suma primelor " + n + " numere este "+ s2)
</SCRIPT>
</BODY>
</HTML>
2) Dacă variabila de ciclare este definită în afara instrucţiunii for şi
incrementarea se face cu 1, atunci putem avea următorul script:
<SCRIPT language = “JavaScript”>
var i = 0 , s = 0
for ( ; i<=n; ) s + = i
alert (s)
</SCRIPT>
239
3) Pot lipsi toate expresiile din instrucţiunea for:
4) Ciclul infinit:
240
Continue
Cuvântul cheie continue determină browser-ul să întrerupă execuţia
comenzilor din cadrul blocului de instrucţiuni şi să treacă la începutul ciclului,
adică la testarea expresiei condiţionale, ca şi cum ar fi ajuns la sfârşitul ciclului.
Cuvântul cheie continue se foloseşte pentru toate instrucţiunile de ciclare,
cu excepţia instrucţiunii do … while, care execută blocul de instrucţiuni cel putin o
dată.
De exemplu, dacă dorim să calculăm suma primelor 10 numere, fără a-l
aduna şi pe 5, vom proceda astfel:
<HTML>
<HEAD>
<TITLE>Suma primelor n numere fara unul </TITLE></HEAD>
<BODY>
<SCRIPT language="JavaScript">
s=0
for(i=1;i<=10; i++)
if (i == 5)
continue
else s+=i
document.write("Suma primelor 10 numere fara 5 este " + s)
</SCRIPT>
</BODY>
</HTML>
Instrucţiunea for … in
În JavaScript există o instrucţiune specială de ciclare şi anume
instrucţiunea for … in. Acestă instrucţiune este asemănătoare instrucţiunii for,
diferenţa constă că instrucţiunea for … in se foloseşte când nu se cunoaşte numărul
de repetări pe care browser-ul trebuie să le facă în cadrul unui ciclu, de exemplu,
241
dacă dorim să aflăm proprietăţile unui obiect fără a şti numărul lor. Instrucţiunea
for … in îi cere browser-ului să execute blocul de instrucţiuni pentru fiecare
element dintr-o listă.
Instrucţiunea for … in are structura următoare:
for (listă)
{ instrucţiuni}
Instrucţiunea While
Instrucţiunea de ciclare while este asemănătoare instrucţiunii for. Diferenţa
constă în faptul că instrucţiunea while nu are o variabilă contor, nici expresie de
incrementare.
242
Instrucţiunea while cere browser-ului să execute un bloc de instrucţiuni
atât timp cât o condiţie definită în această instrucţiune este true. Ciclul while nu
indică numărul de iteraţii făcute.
Sintaxa acestei instrucţiuni este:
while (expresie)
{instrucţiuni}
<SCRIPT language="JavaScript">
var s=0
n=parseInt(prompt("Daţi numărul n",1))
while (n>0) {
s+=n%10
n=(n-n%10)/10
}
alert("Suma cifrelor numărului n este: " + s)
</SCRIPT>
Instrucţiunea do … while
244
17.2. Funcţii în Java Script
În acest capitol se prezintă modul de definire şi utilizare a funcţiilor în
JavaScript. Funcţiile execută anumite acţiuni şi întorc rezultatele.
Ca şi limbajele de programare complexe, funcţiile în JavaScript combină
câteva instrucţiuni care să execute anumite operaţii, sub acelaşi nume. Informaţiile
despre funcţie sunt incluse după numele funcţiei între paranteze. Numele funcţiei
împreună cu operaţiile şi informaţiile ei pot fi introduse într-un cod scris într-un
anumit loc, iar executarea ei poate fi cerută browser-ului ori de câte ori este nevoie.
Informaţiile despre funcţie se mai numesc argumentele sau parametrii funcţiei.
Unele funcţii pot să nu aibă parametri.
246
17.2.2. Domeniul de valabilitate a variabilelor
Prin domeniul de valabilitate sau de vizibilitate a variabilelor se întelege în
JavaScript posibilitatea de accesare a unei variabile. În JavaScript există două
tipuri de variabile din punct de vedere al domeniului de valabilitate: variabile
globale şi variabile locale. O variabilă globală este definită în afara unei funcţii şi
valoarea ei este vizibilă (valabilă) şi poate fi modificată de toate funcţiile definite
după ea, precum şi de toate instrucţiunile existente după ea. Un exemplu de
utilizare a variabilelor globale:
<HTML>
<HEAD
> <TITLE>Variabile globale</TITLE>
<SCRIPT language="JavaScript">
function suma_cifre()
{alert('x= '+x)
while(x>0)
{s=s+x%10
x=(x-x%10)/10}
return s}
function afiseaza_suma()
{alert('Suma cifrelor lui x este: '+s) }
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
var x=prompt('Daţi numărul x',0)
var s=0
suma_cifre()
afiseaza_suma()
alert('numarul x dupa apelul suma_cifre() este '+x) </SCRIPT>
</BODY></HTML>
247
Figura 17.12. Variabile globale
248
<HTML>
<HEAD>
<TITLE>Variabile globale si locala</TITLE>
<SCRIPT language="JavaScript">
function suma_n()
{var s=0
n=parseInt(prompt('Daţi n ',0))
for(i=1;i<=n;i++)
s+=i
alert('Suma primelor n= ' + n + ' numere este: '+s)}
</SCRIPT></HEAD>
<BODY>
<SCRIPT language="JavaScript">
var s=10
suma_n()
alert("variabila globala s = "+ s)
</SCRIPT>
</BODY>
</HTML>
249
17.2.3. Parametri
În sintaxa unei funcţii, am arătat că între parantezele rotunde pot fi trecuţi
parametri sau argumente. De asemenea am spus că o funcţie efectuează o acţiune.
Unele funcţii îşi efectuează acţiunea fără a fi nevoie să introducem argumente,
având toate valorile necesare definite în corpul funcţiei. Acesta este cazul funcţiilor
fără argumente, introduse în secţiunea precedentă. Unele funcţii necesită unele date
(valori sau variabile) pentru a-şi efectua acţiunea. Aceste date, numite argumente
sau parametri, se trec între parantezele din definirea funcţiei, separate prin virgulă.
Aceste date nu sunt scrise în definiţia funcţiilor (ca la funcţiile fară argumente), şi
trebuie transmise funcţiei ca parametri. Parametrii din antetul funcţiei se numesc
parametri formali, iar parametrii din apelul funcţiei se numesc parametri efectivi.
La apelul funcţiei se transmit valori parametrilor formali, proces numit transferul
prin valoare către funcţie. Parametrii efectivi pot fi atât valori, cât şi variabile. În
funcţie, parametrii formali sunt de fapt variabile locale.
Dacă în exemplul din figura 17.11 presupunem că salariul de bază şi
procentul de indexare nu sunt date în corpul funcţiei, ci sunt argumente ale funcţiei
indexare_salariu(), noua funcţie va fi apelată prin valori sau se atribuie valori
parametrilor efectivi. Pentru acest exemplu vom avea codul:
<HTML>
<HEAD>
<TITLE>Funcţii cu parametrii</TITLE>
<SCRIPT language="JavaScript">
function indexare_salariu(sal_vechi,coef_indexare)
{var sal_nou=sal_vechi*(1+indexare/100)
alert('Salariul '+salariu+' indexat cu '+indexare+'% este: '+sal_nou)
}
</SCRIPT></HEAD><BODY>
<SCRIPT>
salariu=prompt('Daţi salariu',0)
indexare=prompt('Daţi coeficient de indexare',0)
//apel functie prin variabile
indexare_salariu(salariu,indexare)
//apel prin valori
salariu=2000; indexare=5
indexare_salariu(salariu,indexare)
</SCRIPT>
</BODY>
</HTML>
250
Figura 17.14. Apel funcţii cu parametri
Parametrii efectivi pot fi după cum reiese din exemplul de mai sus:
− prin variabilele salariu şi indexare, caz în care funcţia se apelează prin
valorile reţinute de acestea
− prin valori (2000 respectiv 5)
În capitolul următor se va arăta cum pot fi apelate funcţiile din codul HTML.
17.2.5. Recursivitate
Recursivitatea este o tehnică importantă de programare. Ea constă în
apelarea funcţiei în corpul ei. Un exemplu este codul factorialului:
<HTML>
<HEAD>
<TITLE>Funcţii recursive</TITLE>
<SCRIPT language="JavaScript">
function fact(n)
{
if(n==0)
return 1
else
return fact(n-1)*n
}
</SCRIPT>
<BODY>
<SCRIPT language="JavaScript">
n=parseInt(prompt("dati n= ",0))
alert(n+"! = "+ fact(n))
</SCRIPT>
</BODY>
</HTML>
252
18. OBIECTE
253
referi la proprietatea lungime vector, şi folosind parantezele drepte “[ ]”, pentru a
ne referi la componentele vectorului obiect.
<HTML> <HEAD>
<SCRIPT language="JavaScript">
function Initializare_vect(lung)
{
this.lungime=lung
for(i=0;i<this.lungime;i++); this[i]=0
}
</SCRIPT> </HEAD>
<BODY> <SCRIPT language="JavaScript">
vect=new Initializare_vect(20)
document.write("lungimea vectorului este "+ vect.lungime+ "<BR>")
for(i=0;i<vect.lungime;i++)
document.write(vect[i]+ " " )
</SCRIPT>
</BODY></HTML>
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function complex(a,b)
{
this.real=a; this.imag=b
}
function modific(z)
{
254
z.real= 5 + ++z.real; z.imag=2 + ++z.imag
}
</SCRIPT>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
z = new complex(1,1)
document.write("z.real= " + z.real + " z.imaginar= " + z.imag +"<BR>")
modific(z)
document.write("Dupa modificarea parametrilor"+"<BR>")
document.write("z.real= " + z.real +" z.imag= "+z.imag )
</SCRIPT></BODY> </HTML>
1 2 suma()
Dacă în exemplul de mai sus se doreşte ca suma să fie calculată într-un nou
obiect, atunci funcţia suma() va fi:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function complex(a,b)
{
this.real=a
this.imag=b
this.suma=suma
}
function suma(z)
{
w = new complex(0,0);
w.real=this.real+z.real
w.imag=this.imag+z.imag
}
</SCRIPT> </HEAD>
<BODY> <B> Metoda 2 de sumare a 2 nr. complexe</B> <BR>
<SCRIPT language="JavaScript">
z1 = new complex(2,7)
256
document.write("z1.real= " +z1.real + "z1.imaginar= "+ z1.imag +"<BR>")
z2 = new complex(1,6)
document.write("z2.real= " +z2.real +"z2.imaginar= " + z2.imag +"<BR>")
z1=z1.suma(z2)
document.write("suma.real= " +z1.real + " suma.imaginar= " + z1.imag )
</SCRIPT>
</BODY>
</HTML>
257
z2 = complex(1,6)
document.write("z2[real]=" +z2["real"]+"z2[imaginar]="+ z2["imag"]+"<BR>")
z1=z1.suma(z2)
document.write("suma[real]= "+z1["real"]+" suma[imaginar]= "+ z1["imag"])
</SCRIPT> </BODY> </HTML>
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function complex(a,b)
{
this.real=a
this.imag=b
this.modific=modific
}
function modific(z)
{
z.real= 5 + ++z.real
z.imag=2 + ++z.imag
}
</SCRIPT>
</HEAD>
<BODY>
<B>FOR pentru afisare proprietati si metode <BR>
FOR pentru afisare valori proprietati si cod sursa pentru metode </B><BR>
<SCRIPT language="JavaScript">
var i
259
z = new complex(1,2)
for (i in z) document.write(i+" ")
for (i in z) document.write(z[i] + " ")
modific(z)
document.write("<BR>"+"Dupa modificarea parametrilor" + "<BR>")
document.write("z.real= " + z.real +" z.imag= " +z.imag)
</SCRIPT> </BODY></HTML>
260
<SCRIPT language="JavaScript">
var i
for (i in z) document.write(i+" ") document.write("<BR>")
for (i in z) document.write(z[i] + " ")
modific(z)
document.write("<BR>"+"Dupa modificarea parametrilor" + "<BR>")
document.write("z.real= " + z.real +" z.imag= " +z.imag)
</SCRIPT></BODY> </HTML>
Obiecte Incluse
Un obiect poate include alte obiecte, aşa cum include proprietăţi şi
metode. Pentru a accesa componentele unui obiect inclus folosim scrierea:
nume_obiect.nume_obiect_inclus.nume.componenta
262
Cele mai importante metode ale obiectului Math sunt:
• abs(x) – returnează valoarea absolută a numărului real x (modul)
• cos (x) – returnează cosinusul numărului x
• sin(x) – returnează sinusul numărului x
• tan(x) -– returnează tangenta numărului x
• acos(x) –arccosinus, returnează unghiul în radiani
• asin(x) -– arcsin, returnează unghiul în radiani
• atan (x) – arctagent, returnează unghiul în radiani
• floor(x) – returnează partea întreagă a numărului real x ([x])
• random( ) – returnează un număr aleator în [0,1)
• round(x) – returnează cel mai apropiat întreg de argumentul x
(rotunjurea lui x)
• sqrt (x) – returnează radicalul numărului real x
• pow (x,y) – returnează x la puterea y
• exp(x) – returnează e la puterea x
• log(x) – returnează logaritm în baza e din x
Următorul exemplu testează unele funcţii matematice:
<HTML> <HEAD> </HEAD> <BODY>
FUNCTII MATEMATICE - EXEMPLE
<SCRIPT language="JavaScript">
alert("Aria cercului de raza 5= " + Math.PI*Math.pow(5,2))
alert("abs(2.5) =" + Math.abs (-2.5 ) )
alert("[1.58]= " + Math.floor (1.58))
alert("[-1.58]= " + Math.floor (-1.58))
alert("Math.logză un număr natural intre 1 şi 10")
alert("Math.sqrt(Math.pow((4-8),2)+Math.pow((5-2),2))= " +
Math.sqrt(Math.pow((4-8),2)+Math.pow((5-2),2)) +" lungime segment")
</SCRIPT></BODY></HTML>
263
Următorul exemplu defineşte o funcţie care returnează modulul unui
număr complex .
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function complex(a,b)
{ this.real=a; this.imag=b; this.modul=modul}
function modul()
{return Math.sqrt(this.real*this.real + this.imag*this.imag)}
</SCRIPT>
</HEAD>
<BODY> <B> Modulul unui număr complex </B> <BR>
<SCRIPT language="JavaScript">
z=new complex(3,4)
document.write("z.real= " +z.real + " z.imaginar= " + z.imag +"<BR>")
m=z.modul()
document.write("modulul numarului complex z= " + m)
</SCRIPT>
</BODY>
</HTML>
265
Metoda split(“delimitator”) – creează un vector, a cărui elemente vor fi
subşiruri ale şirului dat, obţinute de un şir delimitator. Astfel, din şirul:
s = ” 7, 35, 12, 67, 2007” , se va obţine vectorul v=(7,35,12,67,2007).
În exemplul următor se foloseşte ca delimitator şirul “,”.
<HTML> <HEAD> </HEAD> <BODY>
<SCRIPT language="JavaScript">
s =new String('7 , 35 , 12 , 67 , 2007')
document.write("sirul dat este: " + s + "<BR>")
v=s.split(",")
document.write("vectorul creat este: " + "<BR>")
for(i=0;i<v.length;i++)
document.write(v[i] + " ")
</SCRIPT </BODY> </HTML>
266
+ "<B>" + s.substring(6,15) + "</B>" + "<BR>")
document.write("metoda de substragere a unui sir de n caractere din
pozitia poz este: "
+ "<B>" + s.substr(16,6) + "</B>" + "<BR>")
</SCRIPT> </BODY> </HTML>
267
Următoarele trei metode sunt de conversie a şirurilor în numere şi invers.
Ele au mai fost definite, fiind utile în unele exemplificări.
Metoda parseInt(s) şi metoda parseFloat(s) - convertesc un şir la un
număr întreg, respectiv zecimal. De exemplu, atunci când introducem
date cu prompt( “sir_numeric”,”val_initiala) se returnează o valoare
de tip şir. Pentru a o putea folosi în calcule matematice se foloseşte una
din metodele de mai sus, astfel:
parseInt(prompt(“sir_numeric”,”val_initiala)) .
De exemplu: parseInt(prompt( “dati dimensiune sirului”, “ ”))
Metoda toString(n) – converteşte o valoare de tip string în număr.
Această metodă este automat apelată în cazul concatenării şirurilor.
De exemplu, în declaraţia: document.write(“suma = “+ s), numărul s va
fi considerat string.
Următoarele şase metode se referă la font (dimensiune, culoare), stil (bold,
italic) şi efecte (scriere cu litere mari sau mici).
Metoda fontcolor(“culoare”) – returnează şirul între tag-urile <font
color=”culoare”> şi </font> şi textul va apare cu culoarea culoare.
Metoda fontsize(“dim”) – returnează şirul între tag-urile <font
size=”dim”> şi </font> şi textul va fi scris de dimensiune dim.
Metoda bold() -– returnează şirul între tag-urile <B> şi </B> şi în
document textul va apare boldit.
Metoda italics() – returnează şirul între tag-urile <I> şi </I> şi în
document textul va apare italic.
Metoda toUpperCase() – returnează şirul scris cu majuscule.
Metoda toLowerCase() – returnează şirul scris cu litere mici.
Se probează metodele de mai sus în exemplul de mai jos.
Se introduce un şir şi se testează dacă este alfabetic, adică conţine litere şi
eventual caracterul spaţiu. Pentru a evita o testare în plus se transformă şirul în
majuscule sau în litere mici. Se folosesc operatorii logici: ! (negare logică),
&&(şi logic) şi || (sau logic), introduşi în capitolul 16.
268
if (ras) document.write("Sirul este alfabetic".fontcolor("blue") )
else document.write("Sirul NU este alfabetic".fontsize("6"))
</SCRIPT>
</BODY> </HTML>
269
Constructorul Array() este de fapt o metodă de creare a unui obiect de tip
tablou.
Accesarea elementelor unui vector se face cu nume_vector[indice].
270
unui tablou bidimensional se face cu a[i][j]. Încercarea de a accesa elementele unei
matrice în modul a[i, j] este eronată.
În următorul exemplu se creează o matrice a cărei elemente sunt produsele i*j.
<HTML> <HEAD> </HEAD>
<BODY> <B> Matrice cu elementele a[i][j]= i*j </B> <BR>
<SCRIPT language="JavaScript">
var i,j
n=parseInt(prompt("Dim. vect n= ", 0))
a= new Array(n)
for(i=0;i<n;i++)
a[i]= new Array(n)
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=( i*j)
for(i=1;i<n;i++)
{for(j=1;j<n;j++)
document.write(a[i][j] + " " ); document.write("<BR>") }
</SCRIPT> </BODY> </HTML>
272
În cazul în care vectorul este numeric, se observă că metoda sort
ordonează lexicografic (de exemplu, 2007<345)
273
{ aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; sortat=true}
pas=pas+1 }
while(sortat)
document.write("Vector sortat crescator:"+"<BR>")
for(i=0;i<n;i++)
document.write(v[i]+" ")
</SCRIPT> </BODY> </HTML>
275
19. Interacţiune JavaScript – HTML
276
Figura 19.1. Apel funcţie prin cod HTML
278
Funcţia setTimeout – realizează o pauză după afişarea unei secvenţe, până
la reluarea afişării. Funcţia are 2 parametri: primul este numele funcţiei, apelată la
pauză, iar al doilea parametru este lungimea pauzei în milisecunde.
Funcţia setTimeout() returnează o referinţă, o valoare care este folosită ca
parametru pentru funcţia clearTimeout(). Sintaxa funcţiei setTimeout() este:
ref = setTimout(“nume_funcţie”, nr_milisecunde)
De exemplu, să presupunem că introducem un buton în pagină. La
apăsarea butonului se va lansa o funcţie care are inclusă funcţia setTimeout(), care
execută funcţia la fiecare 2 secunde. Execuţia funcţiei se va încheia odată cu
închiderea ferestrei.
<HTML><HEAD>
<SCRIPT language = "JavaScript">
function Mesaj(){
alert("Mesajul va fi afişat la 2 secunde")
ref = setTimeout("Mesaj",2000)}
</SCRIPT></HEAD>
<BODY>
<INPUT TYPE="BUTTON" value = "Click!" onclick = "Mesaj()">
</BODY></HTML>
279
<HTML><HEAD>
<SCRIPT language = "JavaScript">
function Oprire()
{clearTimeout(ref)}
function Mesaj()
{alert("Mesajul va fi afişat la 2 secunde")
ref = setTimeout("Mesaj",2000) }
</SCRIPT>
</HEAD>
<BODY>
<INPUT TYPE="BUTTON" value = "click!" onclick = "Mesaj()">
<INPUT TYPE="BUTTON" value = "STOP" onclick = "Oprire()">
</BODY>
</HTML>
280
Figura 19.5. Valori alternative într-o poziţie
281
În JavaScript se pot valida informaţiile introduse în paginile web, precum
şi schimbarea dinamică a unui formular în timp ce acesta este afişat, putem activa
sau dezactiva elemente, se poate stabili o valoare prestabilită etc.
Un element al formularului devine un obiect în JavaScript. Un atribut al
elementului devine o proprietate a obiectului. Evenimentele se introduc ca
proprietăţi cărora li se asociază apelul funcţiei, care se va executa când se produce
evenimentul (clic pe un buton, selectarea unui buton radio, selectarea elementelor
unei liste sau mutarea cursorului pe un element etc.).
Când un element al formularului este selectat (dacă este un edit, apare
cursorul de editare, dacă este un buton, el se scufundă) se spune ca el primeşte
focus-ul.
− Evenimentul onfocus are loc când elementul primeşte focus-ul.
− Evenimentul onblur are loc când elementul pierde focus-ul. Când
utilizatorul mută cursorul în afară, ieşirea din afara atenţiei se mai
numeşte şi out of focus
Nu toate elementele pot primi focus-ul, de exemplu IMG. De obicei îl
primesc elementele care permit utilizatorului să scrie ceva, excepţie făcând
butoanele.
282
Figura 19.6. Evenimentul onblur
283
Dacă formularul are un nume, se poate face referirea prin nume, nu prin
indice:
[window]document.forms.test.nume_obiect_form.value
ne referim la valoarea elementului nume al formularului test.
De exemplu, vrem să afişăm valoarea butonului submit:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function afisare_submit() {
alert ("Valoare buton transmitere:
"+document.forms.test.submit.value)
}
</SCRIPT>
</HEAD>
<BODY>
<FORM method="post" name="test">
Nume:<input type="text" name="Fnume"><br>
Email:<input type="text" name="Email"><br>
<input type="submit" name="submit" value="Transmit"
onclick="afisare_submit()">
</FORM></BODY></HTML>
284
Valoarea plătită va consta din produsul dintre cantitate şi preţ. Obiectele
CANTITATE şi PRET captează (recepţionează) evenimentul onchange (tag-ul
INPUT are atributul onchange) care apelează funcţia calcul_valoare().
Codul pentru acest exemplu este dat în continuare:
<HTML>
<HEAD>
<SCRIPT language = "JavaScript">
function calcul_valoare() {
if (produse.cant.value.length > 0
&& produse.pret.value.length > 0)
{
produse.val.value = produse.cant.value * produse.pret.value
}
}
</SCRIPT>
</HEAD>
<BODY>
<FORM name="produse">
NUME_PRODUS: <INPUT type="text" name="Produs"><BR>
CANTITATE: <INPUT type="text" name="cant"
onchange="calcul_valoare()"><BR>
PRET: <INPUT type="text" name="pret"
onchange="calcul_valoare()">
<BR>
VALOARE: <INPUT type="text" name="val"><BR>
</FORM></BODY></HTML>
285
Astfel, să presupunem că avem un formular completat, iar în cazul în care
dorim să facem o schimbare în datele introduse putem folosi evenimentul
onchange. Să considerăm un formular cu date despre Universitate. Dacă
modificăm unul din elementele formularului, de exemplu, numărul de telefon sau
adresa, evenimentul onchange apelează o funcţie care evidenţiază prin formatare
elementul modificat. Codul pentru acest exemplu este:
<HTML><HEAD>
<SCRIPT language="JavaScript">
function formatare(obiect) {
obiect.style.color = "red"
obiect.style.background = "cyan"
obiect.style.fontStyle = "italic"
obiect.style.fontWeight = "bold" }
</SCRIPT></HEAD>
<BODY><PRE>
UNIVERSITATE: <INPUT type="text" name="univ" value="Spiru Haret"
onchange = "formatare(this)">
TELEFON: <INPUT type="text" name="tel" value="(021) 314 9431"
onchange="formatare(this)">
ADRESA: <TEXTAREA rows=2 cols=30 wrap="off"
onchange="formatare(this)">Str. Ioan Ghica nr. 13, sector 3, Bucureşti,
ROMANIA</TEXTAREA>
EMAIL: <INPUT type="text" name="mail" value="info@spiruharet.ro"
onchange="formatare(this)">
</PRE>
</BODY><HTML>
286
În exemplul de mai sus se observă că dacă se face o modificare asupra unei
căsuţe de text, după mutarea cursorului pe altă zonă decât cea modificată (out of
focus), informaţiile din căsuţa modificată vor fi formatate conform funcţiei
formatare(obiect) cu culoarea roşie, fundal cyan, italic şi bold.
287
Figura 19.10. Obiectul checkbox
288
<HTML>
<HEAD>
<TITLE>CKECKBOX</TITLE>
<SCRIPT language="JavaScript">
function Selectie()
{
var i; Selectie=" "
for (i=0; i<Lista.length; i++)
if (Lista.options[i].selected==true)
Selectie +="Optiunea " + (i+1) +"; "
alert(Selectie)
}
function schimba_lista(buton)
{
if(buton == 1)
{
Lista.options[0].text= "Univ. Bucuresti"
Lista.options[0].value=1
Lista.options[1].text= "Univ. Politehnica"
Lista.options[1].value=2
Lista.options[2].text= "Univ. Studii Economice"
Lista.options[2].value=3
Lista.options[3].text= "Univ. Arhitectura"
Lista.options[3].value=4
}
if(buton ==2)
{
Lista.options[0].text="Spiru Haret"
Lista.options[0].value=1
Lista.options[1].text= "Dimitrie Cantemir"
Lista.options[1].value=2
Lista.options[2].text= "Romano-Americana"
Lista.options[2].value=3
Lista.options[3].text= "Titus Maiorescu"
Lista.options[3].value=4
}
}
</SCRIPT>
</HEAD>
<BODY >
<SELECT name="Lista" multiple size=2>
<OPTION value=1> Univ. Bucuresti
<OPTION value=2> Univ. Politehnica
<OPTION value=3> Univ. Studii Economice
<OPTION value=4> Univ. Arhitectura
289
</SELECT><BR>
<INPUT type="radio" name="Univ" value=1
onclick="schimba_lista(this.value)"> Univ. Stat
<INPUT type="radio" name="Univ" value=2
onclick="schimba_lista(this.value)"> Univ. Particulare
<BR><BR><BR>
<INPUT type="button" name="Selectie" value="Ce s-a selectat?"
onclick="Selectie()">
</BODY> </HTML>
290
<HTML> <HEAD>
<TITLE>ONSUBMIT</TITLE>
<SCRIPT language="JavaScript">
function CreazaParola( )
{ with (document.forms.Parole)
{alert("lungime nume " + Nume.value.length)
Parola.value = Nume.value.charAt (0) + Prenume.value.charAt (0) +
Nume.value.length }}
</SCRIPT> </HEAD>
<BODY >
<FORM name="Parole">
<PRE>
Nume: <INPUT type="text" name="Nume" >
Prenume: <INPUT type="text" name="Prenume" >
Parola: <INPUT type="hidden" name="Parola" >
<INPUT type="submit" name="Submit" value="OK"
onclick= "CreazaParola( )">
</FORM>
</BODY></HTML>
<HTML><HEAD><TITLE>DISABLED &
READONLY</TITLE><HEAD>
<SCRIPT language = "JavaScript">
function activeaza_parola() {
if (Nume.value.length > 0 &&
Prenume.value.length > 0)
Parola.disabled = false}
function creaza_parola()
{ Parola.readonly = false
Parola.value = Nume.value.charAt(0) + Prenume.value.charAt(0) +
Nume.value.lenght
Parola.readonly = true}
</SCRIPT></HEAD>
<BODY>
<FORM name="Parola" >
Nume: <INPUT type="text" name="Nume"
onchange="activeaza_parola()"><BR>
Prenume: <INPUT type="text" name="Prenume"
onchange="activeaza_parola()"><BR>
Parola: <INPUT type="text" name="Parola" disabled = true
readonly=true><BR>
Parola: <INPUT type="submit" name="SUBMIT" value="OK"
onsubmit="creaza_parola()">
</FORM>
</BODY></HTML>
292
Figura 19.11. Disabled şi readonly
Se observă din bara de stare că parola nu mai este vizibilă.
OBSERVAŢIE!
Majoritatea browser-elor admit elemente rollover. Pentru a testa dacă
browser-ul poate utiliza astfel de elemente trebuie să se testeze obiectul
document.images, care e tip array şi cuprinde toate imaginile din pagină în ordinea
în care au fost introduse.
Astfel, ne putem referi la prima imagine, de exemplu prin
document.images[0].
Testarea compatibilităţii browser-ului cu elemente rollover se poate face
astfel:
if (document.images)
{ Browserul recunoaşte elementele rollover şi folosirea lor
prin metoda directă }
else
{ Browserul nu recunoaşte elementele rollover}
294
</BODY></HTML>
OBSERVAŢII!
− Dacă atributul onclick din ambele metode (figurile 19.14 si 19.15) se
înlocuieşte cu atributul ondblclick, efectul este acelaşi, diferenţa constă
în faptul că trebuie executat dublu clic pe imagine pentru ca imaginea să
fie încadrată cu un chenar de grosime 7px.
− Prin metoda directă unui atribut i se atribuie instrucţiunea de atribuire
completă, în cazul nostru onclick = “border=”7”
295
Instrucţiunea de atribuire (“border = 7”) trebuie neapărat sa fie inclusă
între ghilimele sau între apostrofuri. Este indicat ca între ghilimele să fie cuprinsă
instrucţiunea de atribuire şi între apostrofuri valorile atributelor.
297
Figura 19.15. Evenimente onmouseover şi onmouseout
299
20. Elemente avansate JavaScript
300
Proprietatea style în JavaScript este tot de tip obiect. Obiectul style are la
rândul lui, alte obiecte corespunzătoare atributelor de stil din CSS.
În JavaScript se foloseşte pentru a defini un stil pentru un obiect id-ul
scris cu litere mici, iar .class este folosit doar în HTML
Numele acestor obiecte sunt:
o numele atributelor corespunzătoare din CSS, dar obligatoriu scrise
cu litere mici. De exemplu: color în CSS este tot color în
JavaScript
o dacă numele din CSS a unui atribut are în componenţă caracterul
“-“ (linie), atunci acesta este eliminat şi ce urmează este scris cu
literă mare. De exemplu: font-size în CSS este fontSize în
JavaScript
Cu ajutorul limbajului JavaScript se pot schimba dinamic valorile
proprietăţilor (obiectelor) obiectului style
În continuare se vor prezenta exemple care vor proba cele menţionate mai
sus.
1) În acest exemplu se doreşte formatarea unui bloc de text atunci când se
dă un dublu clic pe suprafaţa lui. Pentru acesta obiectul DIV recepţionează
evenimentul ondblclick, care va apela o funcţie ce va formata textul din blocul
DIV, aşa cum reiese din următorul cod:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function stiluri() {
d.style.fontSize="40"
d.style.fontStyle="italic"
d.style.color="red"
p1.style.color="blue"}
</SCRIPT>
</HEAD>
<BODY>
<DIV id="d" ondblclick = "stiluri()">
Acesta este un text care se va formata conform stilurilor definite în funcţia
stiluri(). Funcţia este apelată de evenimentul ondblclick, care este un
atribut al elementului DIV. Se observă că va fi formatat dinamic şi
paragraful cu id=p1
</DIV>
<P id="p1"> Acesta este un alt text care va fi colorat cu albastru
</P>
</BODY>
</HTML>
301
Figura 20. 1. Formatarea dinamică a unui text
2) În acest exemplu se realizează afişarea unui text, care iniţial nu e vizibil
şi treptat se colorează intens. Se utilizează codul RGB. Culoarea albă are codul
RGB(255,255,255) sau #FFFFF, iar bl are codul RGB(0,0,FF). <HTML><HEAD>
<STYLE>
#par { color:#FFFFFF; font-size:20; font-style:italic;}
</STYLE>
<SCRIPT language="JavaScript">
i=255, rel=0
function Aparitie()
{ i--
par.style.color=255*256*256+256*i+i
rel=setTimeout ("Aparitie()" , 5)
if(i==0) clearTimeout(rel)
p1.style.color="blue" }
</SCRIPT></HEAD>
<BODY onload="Aparitie() ">
<Div id="par"> Acesta este un text care se va lumina cind se incarca pagina
</Div>
<P id="p1">Acesta este alt text care suporta modificare</P>
</BODY></HTML>
302
3) În acest exemplu se afişează un tabel care conţine temperatura,
umiditatea şi presiunea. Acestea vor defila pe verticală. Odată afişată o
caracteristică, aceasta va staţiona o perioadă pe ecran, după care va dispărea şi va
apărea la sfârşitul celorlalte, după care din nou totul se deplasează pe verticală.
Poziţionarea este absolută, faţă de colţul stânga-sus. Pentru aceasta se foloseşte
atributul top.
Se foloseşte o funcţie mutare(), care realizează deplasarea unei linii de
tabel. După ce aceasta dispare, executarea se opreşte. Această funcţie este apelată
de altă funcţie schimbare(), care se execută la intervale egale de timp după o
aşteptare.
În felul acesta vor defila continuu valorile caracteristicilor. Defilarea se
poate face şi pe orizontală, folosind, în acest caz, atributul left.
<HTML><HEAD>
<STYLE>
TH {background-color:"cyan"; color:"red"; width:300; height:100;}
#P1 {position:absolute; top:0; left:20}
#P2 {position:absolute; top:100; left:20}
#P3 {position:absolute; top:200; left:20}
</STYLE>
<SCRIPT language="JavaScript">
i=0; x=0; rel=0
x1=0; x2=100; x3=200
function mutare ()
{ P1.style.top=--x1
P2.style.top=--x2
P3.style.top=--x3
--x
if (x== -100)
{ switch (i)
{ case 0: x1=200; break;
case 1: x2=200; break;
case 2: x3=200; }
if(i ==2)
i=0
else i++
x=0 }
if (x==0) clearTimeout(rel)
else rel=setTimeout( "mutare ()" , 20) }
function schimba ()
{ mutare ()
setTimeout("schimba ()", 5000) }
</SCRIPT></HEAD>
<BODY onload="schimba ()">
<TABLE>
<TR id="P1"> <TH> Temperatura <TH> 10 Grade
303
<TR id="P2"> <TH> Umiditate <TH> 50%
<TR id="P3"> <TH> Presiune <TH> 754 mm coloana de mercur(Hg)
</TABLE>
</BODY></HTML>
Valori:
Parametri Efect activ= yes,1
dezactiv=no, 0
Butoane pentru directoare directories= 1 or yes
directories
standard ale browser-ului directories=0 or nu
Edit-ul care conţine adresa location=1
location
fişierului HTML location=0
menubar=1
menubar Bara de meniuri
menubar=0
resizable=1
resizable Redimensionarea ferestrei
resizable=0
scrollbars=0
scrollbars Barele de derulare
scrollbars=1
status Bara de stare status=1 status=0
Bara de instrumente
toolbar toolbar=1 toolbar=0
standard
height Inălţimea ferestrei în pixeli
width Lăţimea ferestrei în pixeli
Coordonatele x, y ale
top, left coltului stânga-sus la care va fi în pixeli
afişată fereasta
306
OBSERVAŢIE!
Dacă se doreşte să se deschidă mai multe ferestre pe ecran se poate folosi
un ciclu for care are în corpul lui deschiderea unei ferestre. Se creează un buton
care să apeleze o funcţie care conţine ciclul for. Primul parametru al metodei
open() este şirul vid(“ “), presupunând că dorim să se afişeze ferestre vide. În cazul
în care în ferestre se afişează anumite pagini web, nu se mai poate folosi un ciclu
for, ci fiecare fereastră trebuie deschisă cu metoda open().
Următorul exemplu afişează trei ferestre vide în fereastra curentă:
<HTML>
<HEAD>
<SCRIPT language="JavaScript">
function Multiple_Ferestre()
{for (i=1; i<4; i++)
fer=window.open(" ","fer"+i,"width=100, height=100, status=yes,
resizable=yes, menubar=0")}
</SCRIPT></HEAD>
<BODY>
<INPUT type="button" value="Ferestre" name="Ferestre"
onclick="Multiple_Ferestre()">
</BODY></HTML>
308
Figura 20. 7. Metodele focus() şi blur()
Metodele back(), forward(), stop() sunt mai puţin folosite, având acelaşi
efect ca şi butoanele browser-ului cu aceleaşi nume.
Dintre proprietăţile obiectului window, cea mai utilă este proprietatea
status(), care are ca efect afişarea valorii reţinută de ea în bara de stare.
De exemplu, adăugarea următoarei funcţii la unul din exemplele de mai
sus are ca efect afişarea mesajului în bara de stare:
function Mesaj() {status=”Testarea proprietăţii status”}
309
20.3. Obiectul DOCUMENT
Obiectul document este şi el, ca şi obiectul window, un obiect des utilizat
în JavaScript. Despre unele metode şi proprietăţi ale obiectului (document.write(),
document.images, document.forms etc.) s-a discutat în capitolele precedente.
În continuare se prezintă proprietăţile principale ale obiectului document,
precum şi cele mai importante metode ale sale.
Unele proprietăţi sunt de tip obiect, aşa cum proprietatea document a
obiectului window este obiectul document.
Proprietatea all
Proprietatea all este cea mai importantă proprietate a obiectului document.
Este o proprietate de tip obiect, care are, la rândul ei, alte proprietăţi şi metode.
Este un obiect vector ale tuturor elementelor care se găsesc într-o pagină, aşa cum
forms, images sunt obiecte vector al tuturor formularelor, respectiv ale tuturor
imaginilor dintr-o pagină.
Fiecare element al vectorului all este tot un obiect. De exemplu, elemente
(obiecte) ale vectorului all sunt: HTML, HEAD, BODY, câte un element pentru
fiecare imagine (IMG), paragraf (P) etc.
Cele mai importante proprietăţi ale obiectului vector all sunt:
− tagName – reţine tipul, de exemplu IMG, P etc. Dacă există, de
exemplu, o imagine într-o celulă a unui tabel se va afişa TABLE, TR,
TH sau TD, IMG
− length – indică numărul de elemente ale vectorului all
− id – afişează id-ul elementelor pentru care atributul id a fost definit
310
Figura 20. 8. Proprietatea all
311
<HTML><HEAD>
<SCRIPT language="JavaScript">
function Numara() {
alert(document.all.tags("P").length)
for (i=0; i<document.all.tags("P").length; i++)
document.all.tags("P")[i].style.color="red"}
</SCRIPT></HEAD>
<BODY>
<P> paragraful 1 </P>
<P> paragraful 2</P>
<P> paragraful 3</P>
<SCRIPT language="JavaScript">
Numara()
</SCRIPT>
</BODY></HTML>
313
Metoda write() – a fost prezentată în capitolul 17, având nevoie să fie
folosită în exemplificări. Amintim că ea este utilizată pentru a scrie în document şi
se aplică sub forma document.write(text).
Dacă textul conţine tag-uri HTML, sau este un fişier html, browser-ul
interpretează tag-urile şi le afişează.
În exemplul de mai jos scrim citeva tag-uri html astfel:
<Script language=”JavaScript”>
document.write(“<A href=”http://www.edu.ro> Informatii MEC</A>)
document.write(“<BR>”)
document.write(“<IMG src=flori.jpg>”
</Script>
314
ANEXE
315
316
ANEXA A
Culori
317
DarkSalmon #E9967A
DarkSeaGreen #8FBC8F
DarkSlateBlue #483D8B
DarkSlateGray #2F4F4F
DarkSlateGrey #2F4F4F
DarkTurquoise #00CED1
DarkViolet #9400D3
DeepPink #FF1493
DeepSkyBlue #00BFFF
DimGray #696969
DimGrey #696969
DodgerBlue #1E90FF
FireBrick #B22222
FloralWhite #FFFAF0
ForestGreen #228B22
Fuchsia #FF00FF
Gainsboro #DCDCDC
GhostWhite #F8F8FF
Gold #FFD700
GoldenRod #DAA520
Gray #808080
Grey #808080
Green #008000
GreenYellow #ADFF2F
HoneyDew #F0FFF0
HotPink #FF69B4
IndianRed #CD5C5C
Indigo #4B0082
Ivory #FFFFF0
Khaki #F0E68C
Lavender #E6E6FA
LavenderBlush #FFF0F5
LawnGreen #7CFC00
LemonChiffon #FFFACD
LightBlue #ADD8E6
LightCoral #F08080
LightCyan #E0FFFF
LightGoldenRodYellow #FAFAD2
LightGray #D3D3D3
318
LightGrey #D3D3D3
LightGreen #90EE90
LightPink #FFB6C1
LightSalmon #FFA07A
LightSeaGreen #20B2AA
LightSkyBlue #87CEFA
LightSlateGray #778899
LightSlateGrey #778899
LightSteelBlue #B0C4DE
LightYellow #FFFFE0
Lime #00FF00
LimeGreen #32CD32
Linen #FAF0E6
Magenta #FF00FF
Maroon #800000
MediumAquaMarine #66CDAA
MediumBlue #0000CD
MediumOrchid #BA55D3
MediumPurple #9370D8
MediumSeaGreen #3CB371
MediumSlateBlue #7B68EE
MediumSpringGreen #00FA9A
MediumTurquoise #48D1CC
MediumVioletRed #C71585
MidnightBlue #191970
MintCream #F5FFFA
MistyRose #FFE4E1
Moccasin #FFE4B5
NavajoWhite #FFDEAD
Navy #000080
OldLace #FDF5E6
Olive #808000
OliveDrab #6B8E23
Orange #FFA500
OrangeRed #FF4500
Orchid #DA70D6
PaleGoldenRod #EEE8AA
PaleGreen #98FB98
PaleTurquoise #AFEEEE
319
PaleVioletRed #D87093
PapayaWhip #FFEFD5
PeachPuff #FFDAB9
Peru #CD853F
Pink #FFC0CB
Plum #DDA0DD
PowderBlue #B0E0E6
Purple #800080
Red #FF0000
RosyBrown #BC8F8F
RoyalBlue #4169E1
SaddleBrown #8B4513
Salmon #FA8072
SandyBrown #F4A460
SeaGreen #2E8B57
SeaShell #FFF5EE
Sienna #A0522D
Silver #C0C0C0
SkyBlue #87CEEB
SlateBlue #6A5ACD
SlateGray #708090
Snow #FFFAFA
SpringGreen #00FF7F
SteelBlue #4682B4
Tan #D2B48C
Teal #008080
Thistle #D8BFD8
Tomato #FF6347
Turquoise #40E0D0
Violet #EE82EE
Wheat #F5DEB3
White #FFFFFF
WhiteSmoke #F5F5F5
Yellow #FFFF00
YellowGreen #9ACD32
320
ANEXA B
Caractere în HTML
322
Ü Ü Ü
Ý Ý Ý
Þ Þ Þ
ß ß ß
à à à
á á á
â â â
ã ã ã
ä ä ä
å å å
æ æ æ
ç ç ç
è è è
é é é
ê ê ê
ë ë ë
ì ì ì
í í í
î î î
ï ï ï
ð ð ð
ñ ñ ñ
ò ò ò
ó ó ó
ô ô ô
õ õ õ
ö ö ö
ø ø ø
÷ ÷ ÷
ù ù ù
ú ú ú
û û û
ü ü ü
ý ý ý
þ þ þ
323
ÿ ÿ ÿ
Ă Ă
Ă ă
Œ Œ Œ
Œ œ œ
Š Š Š
Š š š
Ţ Ţ
Ţ ţ
Ÿ Ÿ Ÿ
ˆ ˆ ˆ
˜ ˜ ˜
   
   
   
‍ ‍
‎ ‎
‏ ‏
– – –
— — —
‘ ‘ ‘
’ ’ ’
‚ ‚ ‚
“ “ “
” ” ”
„ „ „
† † †
‡ ‡ ‡
… … …
‰ ‰ ‰
‹ ‹ ‹
› › ›
€ € €
324
ANEXA C
CSS - Specificaţii de stil
Background
Proprietate Valoare
background-color; background-image
background background-repeat; background-attachment;
background-position
background-attachment scroll; fixed
background-color color-rgb; color-hex; color-name; transparent
background-image url(URL); none
top left; top cente;r top right;
center left; center center; center right;
background-position
bottom left; bottom center; bottom right;
x% y%; xpos ypos
background-repeat repeat; repeat-x; repeat-y; no-repeat
Borduri
Proprietate Valoare
border border-width; border-style; border-color
border-bottom border-bottom-width; border-style; border-color
border-bottom-color border-color
border-bottom-style border-style
border-bottom-width thin; medium; thick; length
border-color color
border-left border-left-width; border-style; border-color
border-left-color border-color
border-left-style border-style
border-left-width thin; medium; thick; length
border-right border-right-width; border-style; border-color
border-right-color border-color
border-right-style border-style
border-right-width thin; medium; thick; length
none; hidden; dotted; dashed; solid; double
border-style
groove; ridge; inset; outset
border-top border-top-width; border-style; border-color
border-top-color border-color
border-top-style border-style
325
border-top-width thin; medium; thick; length
border-width thin; medium; thick; length
Clasificări
Proprietate Valoare
clear left; right; both; none
url; auto; crosshair; default; pointer; move;
e-resize; ne-resize; nw-resize; n-resize;
cursor
se-resize; sw-resize; s-resize; w-resize
text; wait; help
none;inline; block; list-item; run-in; compact
marker; table; inline-table; table-row-group
display table-header-group; table-footer-group
table-row; table-column-group; table-column
table-cell; table-caption
float left; right; none
position static; relative; absolute; fixed
visibility visible; hidden; collapse
Dimensiuni
Proprietate Valoare
height auto; length; %
line-height normal; number; length; %
max-height none; length; %
max-width none; length; %
min-height length; %
min-width length; %
width auto; length; %
Fonturi
Proprietate Valoare
font-style; font-variant; font-weight
font font-size/line-height; font-family; status-bar
caption;icon;menu; message-box; small-caption
font-family family-name; generic-family
xx-small; x-small;small; smaller
font-size medium; large; x-large; xx-large;
larger; length; %
font-size-adjust none; number
font-stretch normal; wider; narrower; ultra-condensed;
326
extra-condensed; condensed; semi-condensed;
semi-expanded; expanded;
extra-expanded;ultra-expanded
font-style normal; italic; oblique
font-variant normal; small-caps
normal; bold; bolder; lighter;
font-weight
100;200;300;400;500;600;700;800;900
Conţinut generat
Proprietate Valoare
string; url; counter(name); open-quote;
close-quote;no-open-quote; no-close-quote;
content counter(name, list-style-type); attr(X)
counters(name, string);
counters(name, string, list-style-type)
counter-increment none; identifier number
counter-reset none; identifier number
quotes none; string
Liste
Proprietate Valoare
list-style-type; list-style-position;
list-style
list-style-image
list-style-image none; url
list-style-position inside; outside
none; disc; circle; square; decimal
decimal-leading-zero; lower-roman
upper-roman; lower-alpha; upper-alpha
list-style-type
lower-greek; lower-latin; upper-latin;hebrew
armenian; georgian; cjk-ideographic
hiragana; katakana; hiragana-iroha
marker-offset auto; length
Margini
Proprietate Valoare
margin-top; margin-right
margin
margin-bottom; margin-left
margin-bottom auto; length; %
327
margin-left auto; length; %
margin-right auto; length; %
margin-top auto; length; %
Outline
Proprietate Valoare
outline outline-color; outline-style; outline-width
outline-color color; invert
none; dotted; dashed; solid; double; groove;
outline-style
ridge; inset; outset
outline-width Thin; medium; thick; length
Padding
Proprietate Valoare
padding-top; padding-right
Padding
padding-bottom; padding-left
padding-bottom length; %
padding-left length; %
padding-right length; %
padding-top length; %
Poziţionare
Proprietate Valoare
bottom auto; %; length
clip shape; auto
left auto; %; length
overflow visible; hidden; scroll; auto
position static; relative; absolute; fixed
right auto; %; length
top auto; %; length
baseline; sub; super; top; text-top; middle;
vertical-align
bottom; text-bottom; length; %
z-index auto; number
Tabele
Proprietate Valoare
collapse
border-collapse
separate
328
border-spacing length length
caption-side top; bottom; left; right
empty-cells show; hide
table-layout auto; fixed
Text
Proprietate Valoare
color color
direction ltr; rtl
line-height normal; number; length; %
letter-spacing normal; length
text-align left; right; center; justify
text-decoration none; underline; overline; line-through; blink
text-indent length; %
text-shadow none; color; length
text-transform none; capitalize; uppercase; lowercase
unicode-bidi normal; embed; bidi-override
white-space normal; pre; nowrap
word-spacing normal; length
329
330
BIBLIOGRAFIE SELECTIVĂ
331
Redactor: Cosmin COMARNESCU
Tehnoredactare: Marcela OLARU
Coperta: Rodica Florentina NICULESCU
Cornelia PRODAN
332