Documente Academic
Documente Profesional
Documente Cultură
SUPORT DE CURS
CSS si DHTML
-DEVA-2006-
CSS si DHTML
OBIECTIVUL CURSULUI:
Dupa studierea acestui curs, studentii vor fi capabili sa realizeze pagini web de complexitate
ridicata prin :
controlul fonturilor printr-o gama larga de proprietati in special legate de aspectul acestora
controlul textului atat din punct de vedere al aspectului cat si din punct de vedere al
aranjarii si pozitionarii lui in pagina sau intr-o anumita sectiune
Tema finala va consta in reproiectarea site-ului propus ca tema la cursul de HTML, de data
aceasta fiind bazat pe formatarea elementelor utilizand pe cat posibil CSS si incluzand
animatie folosind DHTML.
CSS si DHTML
CUPRINS
Generalitati ......................................................................................................14
Stabilirea fontului ............................................................................................14
Descarcarea fonturilor......................................................................................15
Stabilirea dimensiunii fontului .........................................................................15
Text inclinat .....................................................................................................16
Grosimea unui font...........................................................................................16
Majuscule mici..................................................................................................17
Valori multiple pentru font ...............................................................................17
Tabel recapitulativ ...........................................................................................17
CSS si DHTML
CSS si DHTML
CSS si DHTML
Partea I CSS
1. NOTIUNI INTRODUCTIVE
Crearea paginilor HTML este un lucru relativ simplu, invatarea etichetelor HTML si crearea unor
imagini ducand la realizarea documentelor HTML de o complexitate medie. Odata cu patrunderea
HTML-ului dinamic (DHTML) si a foilor de stil in cascada (CSS), proiectarea paginilor web a
devenit o sarcina ceva mai dificila, insa totodata ele sunt standarde utilizate in continuare la
crearea site-urilor web.
Un selector HTML reprezinta partea etichetei HTML care indica navigatorului tipul de eticheta.
Definirea unui selector HTML folosind CSS implica de fapt redefinirea etichetei HTML. Selectorul si
eticheta desi par identice, totusi nu sunt.
1.2.2. Clasa
Clasa este o regula care poate fi aplicata oricarei etichete HTML, fiind cel mai adaptabil tip de
selector.
CSS si DHTML
Selectorii identifica o regula; pot fi selectori de etichete HTML, clase sau identificatori.
Proprietatile identifica o entitate definita; se refera in special la aspect.
Valorile sunt atributele unei proprietati; pot fi cuvinte cheie, valori numerice sau
procentuale, tipul valorii depinzand foarte mult de proprietate.
CSS si DHTML
Este bine ca pentru delimitarea listei de definitii sa se foloseasca ghilimele duble (), iar pentru
valori in cadrul listei ghilimele simple ().
<style type=text/css>
selector_1 {proprietate1:valoare1; proprietate2:valoare2; ... }
...
selector_n {proprietate1:valoare1; proprietate2:valoare2; ... }
</style>
Definirea tuturor stilurilor intr-o locatie comuna faciliteaza modificarea mai rapida a unui
document.
<style type=text/css>
h1 {font-family:Arial; font-size:16px; font-weight:bold; color:red }
p {font-family:Arial; font-size:12px; color:blue }
</style>
CSS si DHTML
Este bine sa se utilizeze etichetele de comentariu HTML pentru a ascunde codul CSS de
navigatoarele care nu recunosc acest limbaj, altfel va fi afisat in fereastra definirea foilor de stil in
format text.
Eticheta LINK apare in antetul documentului (sectiunea head), iar atributele folosite transmit
navigatorului tipul de legatura (rel legatura cu o foaie de stil) si locatia inspre fisierul ce contine
regulile CSS (href calea relativa sau absoluta si numele complet al fisierului, inclusiv extensia).
2.3.3. Importul CSS externe
O alta modalitate de utilizare a foilor de stil externe intr-un document HTML o reprezinta importul
acestora folosind comanda @import.
Sintaxa pentru importul unei foi de stil externe este urmatoarea:
<style type=text/css>
@import url(nume_fisier.css);
</style>
Pentru a importa un fisier CSS extern se foloseste in cadrul sectiunii HEAD a documentului HTML
eticheta container STYLE. In cadrul acestei etichete va aparea instructiunea @import, unde
nume_fisier.css reprezinta adresa URL a fisierului ce contine regulile CSS definite.
Alaturi de instructiunea @import, in cadrul etichetei STYLE pot exista definiti si selectori care
definesc reguli CSS suplimentare.
Legarea unui fisier CSS extern sau importul acestuia intr-un document HTML are acelasi efect ca
si cum stilurile incluse ar fi fost definire direct in eticheta STYLE din sectiunea HEAD a
documentului HTML.
CSS si DHTML
Dupa redefinirea etichetei HTML, toate aparitiile etichetei din documentul HTML vor fi modificate
automat. Prin redefinirea unei etichete, proprietatile prestabilite existente nu sunt anulate, ci se
adauga altele noi.
Exista cazul in care o clasa este asociata unui selector HTML, ceea ce inseamna ca acea clasa
poate fi folosita doar cu eticheta HTML respectiva. Pentru a defini o clasa asociata in mod direct
unui selector HTML se foloseste urmatoarea sintaxa:
Selectoarele de clasa sunt acceptate de toate navigatoarele. Numele unei clase nu poate fi un
cuvant rezervat JavaScript.
Identificatorii permit definirea unui element sub forma unui obiect, fiind folositi doar o singura
data in cadrul unei pagini web pentru identificarea obiectului unic in scopul manipularii acestuia
cu ajutorul functiilor JavaScript.
Identificatorii devin functionali doar atunci cand sunt specificati intr-o eticheta HTML individuala,
in cadrul unui document. Numele unui identificator nu poate fi cuvant rezervat din JavaScript.
CSS si DHTML
Pentru a configura o eticheta in linie trebuie configurata o clasa sau identificator care sa poata fi
aplicat apoi unei etichete <span>. In cazul in care selectorul de clasa este precedat de selectorul
HTML span, definitia respectiva poate fi utilizata doar intr-o eticheta span.
2.7.2. La nivel de bloc
In momentul in care este necesara configurarea unui bloc separat de restul continutului unui
document HTML, solutia este eticheta <div>. Aceasta determina un salt atat deasupra sa, cat si
dedesubtul sau.
Pentru crearea etichetelor la nivel de bloc se procedeaza la fel ca si in cazul etichetelor in linie,
prin configurarea mai intai a unei etichete de tip clasa sau identificator, urmata apoi de aplicarea
ei asupra unei etichete <div>.
Regulile CSS pentru definirea etichetelor personalizate in linie sau la nivel de bloc pot fi plasate in
sectiunea head a documentului in cadrul etichetei container style, sau intr-un fisier extern care
ulterior este legat sau importat in documentul HTML.
CSS si DHTML
selector1
Ultimul selector din lista este cel care primeste toate stilurile incluse in regula si le mosteneste pe
cele ale parintilor.
Ca si selectorii grupati, selectorii contextuali pot include in lista selectori de clasa, identificatori
sau selectori HTML.
CSS si DHTML
CSS si DHTML
3.1. Generalitati
Exista cinci familii de fonturi de baza:
serif au un ornament (serif) plasat la terminatia literei, care ii ofera o distinctie speciala.
Sunt folosite pentru tiparire, chiar daca textele sunt mai mari sau mai mici. Nu sunt
indicate pentru afisarea textelor pe ecran.
sans serif sunt fonturi care nu folosesc serife, fiind indicate pentru texte mai mici
afisate pe ecran.
monospace fonturile monospatiate pot avea nu nu serife, ele se deosebesc prin faptul
ca fiecare litera ocupa aceeasi cantitate de spatiu. Sunt cele mai indicate pentru textele
care trebuie citite cu exactitate, ca de exemplu liniile de program.
cursive imita scrisul de mana, intr-o maniera stilizata. Sunt indicate in scopuri
decorative, nefiind recomandate pentru scrierea unor texte mai lungi.
fantasy nu se incadreaza in nici una dintre categoriile de mai sus, fiind fonturi care au
un caracter predominant ornamental (reprezentand ilustratii sau pictograme).
selector { font-family:nume_font1,nume_font2,...,nume_generic }
Dupa ultima virgula se pot folosi urmatoarele nume generice de fonturi: serif,
serif sanssans-serif,
serif
cursive,
fantasy. Includerea unei asemenea valori este optionala, insa in acelasi
cursive monospace si fantasy
timp recomandata.
h1 { font-family:Arial,Helvetica,sans-serif }
Cand este specificata o lista de fonturi, navigatorul incearca sa foloseasca primul font din lista,
daca nu este gasit parcurge lista pana in momentul in care intalneste un font instalat. Daca nu
exista fonturi echivalente, textul va fi afisat cu fontul prestabilit. Daca este specificat un nume
generic, textul va fi afisat cu un font apartinand aceluiasi stil, in cazul in care fonturile specificate
in lista nu sunt disponibile.
CSS si DHTML
Nu poate fi ales orice font pentru a fi descarcat, acesta trebuie sa respecte un anume format.
Insa, problema este ca nu exista un format valabil pentru toate navigatoarele, de exemplu
Internet Explorer foloseste fonturi in format eof, obtinute cu ajutorul unui program numit WEFT.
selector { font-size:valoare }
Este bine ca pentru foile de stil care formateaza iesirea la imprimanta sa se foloseasca ca unitati
de masura punctele, cm sau mm.
h1 { font-size:12px; }
Pixelii reprezinta, probabil, cea mai des utilizata unitate de masura pentru stabilirea dimensiunii
fontului. Pixelii nu reprezinta o masura foarte sigura, dar, de obicei, constituie o masura mai
sigura decat dimensiunea in puncte.
CSS si DHTML
Dimensiunile exprimate in puncte constituie o modalitate comuna de a nota marimea unui font.
Este bine totusi, din motive de siguranta, sa nu se depaseasca dimensiunea de 50 de puncte
pentru stabilirea dimensiunii unui font.
3.5. Text inclinat
Atributul fontfont-style permite scrierea textelor inclinate in doua moduri: cursiv si oblic. Notiunile
pot fi confundate, insa cursivul se refera la versiunea unui font a carui caractere au o inclinare
spre dreapta, iar oblicul este un font inclinat fortat spre dreapta.
Pentru a crea caractere cursive in cadrul unei reguli trebuie precizata proprietatea fontfont-style
urmata de una din valorile: italic sau oblique.
oblique
selector { font-style:valoare }
Pentru a sterge formatarea cu caractere inclinate, valorea proprietatii font-style trebuie sa fie:
normal.
normal
h1 { font-style:italic; }
selector { font-weight:valoare }
400 reprezinta valoarea corespunzatoare ponderii normale, iar 700 valoarea ponderii pentru stilul
aldin. Majoritatea fonturilor nu dispun de noua ponderi, astfel ca daca este specificata o valoare
care nu este disponibila, va fi folosita o alta pondere.
h1 { font- weight:bold; }
CSS si DHTML
selector { font-variant:valoare }
Stabilirea unei reguli pentru majuscule mici se realizeaza prin utilizarea proprietatii fontfont-variant
cu valoarea smallsmall-caps.
caps Prin folosirea valorii normal,
normal vor fi anulate celelalte valori mostenite ale
proprietatii font-variant.
h1 { font-variant:small-caps; }
Daca o anumita valoare din lista este omisa, navigatorul va folosi valoarea prestabilita.
font-size
Valoare
<family-name>
<generic-family>
serif
sans-serif
cursive
fantasy
monospace
<length>
<percentage>
smaller
larger
xx-small
x-small
small
CSS si DHTML
Proprietate
font-style
font-weight
font-variant
font
Valoare
medium
large
x-large
xx-large
normal
italic
oblique
normal
bold
lighter
bolder
100-900
normal
small-caps
font-family
font-style
font-variant
font-weight
font-size
font-height
CSS si DHTML
selector { letter-spacing:valoare }
Daca valoarea proprietatii este normal sau 0 atunci spatierea va fi fixata la valorile implicite
(adica fara spatii suplimentare).
h1 { letter-spacing:1,5em; }
selector { word-spacing:valoare }
Pentru anularea spatierii intre cuvinte, valoarea proprietatii trebuie sa fie: normal.
normal
h1 { word-spacing:10px; }
O valoare pozitiva semnifica un plus de spatiu adaugat la valoarea implicita, iar o valoare
negativa reduce acest spatiu. Daca valoarea este egala cu 0 atunci spatiul dintre cuvinte este
fixat la valoarea prestabilita, neproducand de fapt nici un efect, fiind similar cu valoarea normal.
CSS si DHTML
Utilizarea interlinierii poate avea ca efect o mai buna si usoara citire a textului in cazul in care
aceasta este mai mare (creaza o regiune cu spatiu intre liniile de text). Alteori, daca inaltimea
este mai mica (folosita la randurile de titlu), poate conferi un aspect mai stilat.
Pentru a stabili inaltimea randurilor se foloseste proprietatea lineline-height,
height urmata de o valoare
care poate fi exprimata in trei moduri:
selector { line-height:valoare }
h1 { line-height:150%; }
Inaltimea liniei poate de asemenea fi definita in cadrul proprietatii font prin introducerea
caracterului / urmat de valoarea pentru inaltimea randului, imediat dupa dimensiunea fontului.
selector { text-transform:valoare }
capitalize pentru ca primul caracter din fiecare cuvant sa fie scris cu majuscula;
uppercase pentru ca toate caracterele sa fie scrise cu majuscule;
lowercase - pentru ca toate caracterele sa fie scrise cu litere mici;
none pentru ca textul sa fie afisat asa cum este.
h1 { text-transform:uppercase; }
Pentru ca un anume text sa apara scris cu majuscule si in cazul folosirii unui navigator mai vechi,
este bine ca respectivul text sa fie introdus ca atare.
Proprietatea text-transform este utila atunci cand textele sunt create in mod dinamic (de
exemplu, in cazul in care ele provin dintr-o baza de date), oferind o lizibilitate sporita acestora.
CSS si DHTML
selector { text-align:valoare }
Proprietatea poate fi aplicata numai elementelor la nivel de bloc, valoarea sa implicita fiind in
majoritatea cazurilor stabilita la valoarea left.
left
h1 { text-align:justify; }
selector { vertical-align:valoare }
Pentru definirea alinierii pe verticala a textului se foloseste una din urmatoarele optiuni:
span { vertical-align:baseline; }
CSS si DHTML
selector { text-indent:valoare }
Valorile pozitive determina o indentare tipica, in timp ce valorile negative determina o indentare
agatata, fiind necesar sau marirea umplerii sau marirea marginilor.
p { text-indent:10%; }
Daca se utilizeaza o valoare procentuala exprimata in unitati em, atunci decalarea rezultata va fi
calculata relativ la dimensiunea fontului elementului asupra caruia se aplica. Pentru eliminarea
decalarii se utilizeaza valoarea 0.
selector { text-decoration:valoare }
Pentru a elimina decoratiile se foloseste valoarea none. Prin folosirea acestei valori se elimina si
sublinierile legaturilor, chiar daca vizitatorul si-a configurat navigatorul astfel incat acesta sa
sublinieze lagaturile.
a:link { text-decoration:none; }
Elementul decorativ blink are un trecut cu probleme, fiind de curand eliminat de marea majoritate
a navigatoarelor.
selector { white-space:valoare }
CSS si DHTML
Pentru a activa afisarea tuturor spatiilor si a intreruperilor de linie din text, proprietatea va lua
valoarea pre. Utilizarea valorii nowrap impiedica trecerea la linia urmatoare.
p { white-space:pre; }
Valoarea normal permite navigatorului sa decida asupra modului de tratare a spatiilor. De obicei,
acestea vor fi transformate intr-un singur spatiu.
Spre deosebire de eticheta <PRE> care schimba fontul cu unul monospatiat, valoarea pre a
proprietatii white-space nu are nici un efect asupra fontului elementului la care se aplica.
text-transform
text-align
vertical-align
text-indent
text-decoration
white-space
Valoare
Normal
<length>
Normal
<length>
Normal
<number>
<length>
<percentage>
capitalize
uppercase
lowercase
none
left
right
center
justify
super
sub
baseline
<relative>
<percentage>
<length>
<percentage>
none
underline
overline
line-through
blink
normal
pre
nowrap
CSS si DHTML
selector {background-color:valoare }
body { background-color:#C0C0C0; }
selector { background-image:valoare }
body { background-image:url(imagine.gif); }
selector { background-repeat:valoare }
CSS si DHTML
body { background-repeat:no-repeat; }
selector { background-attachment:valoare }
body { background-attachment:scroll; }
selector { background-position:valoare }
Coordonatele x si y pot fi exprimate ca valori absolute sau ca procente. Se pot insa utiliza si
cuvintele cheie: top, center sau bottom pentru coordonata x, respectiv left, center sau right
pentru coordonata y.
body { background-position:center; }
CSS si DHTML
selector { color:valoare }
Valoarea culorii poate fi: numele culorii (una din cele 16 culori predefinite), o valoare in hexa
(sub forma #rrggbb) sau o valoare RGB (sub forma rgb(r, g, b) unde r, g, b pot fi reprezentate
prin numere intregi cuprinse intre 0 si 255 sau procente de rosu, verde si albastru cu valori intre
0% si 100%).
p { color:blue; }
background-attachment
background-position
background
color
Valoare
<color>
<url>
None
Repeat
repeat-x
repeat-y
no-repeat
scroll
fixed
<percentage>
<length>
top
center
bottom
left
right
<background-color>
<background-image>
<background-repeat>
<background-attachement>
<background-position>
<color>
CSS si DHTML
selector { margin:valoare/valori; }
CSS si DHTML
Exista posibilitatea de a stabili valoarea marginii doar pentru o singura latura, fara a tine cont de
celelalte margini. Pentru aceasta sunt folosite proprietatile marginmargin-top,
top marginmargin-bottom,
bottom marginmarginleft si marginmargin-right cu aceleasi valori ca si in cazul proprietatii margin.
selector
selector
selector
selector
{
{
{
{
margin-top:valoare; }
margin-bottom:valoare; }
margin-left:valoare; }
margin-right:valoare; }
selector { border:valoare/valori; }
selector { border-width:valoare; }
Daca precizati toate cele patru valori, ele sunt aplicate in ordinea: sus, dreapta, jos, stanga. Daca
precizati doar o valoare, ea va fi aplicata tuturor marginilor. Daca folositi doua sau trei valori,
valorile care lipsesc sunt copiate din valorile marginilor opuse lor in caseta.
6.4.2. Ornamentarea chenarului (aspectul)
Aspectul bordurii poate fi stabilit prin atributul borderborder-style;
style stilul este aplicat tuturor celor
patru margini si este definit astfel:
selector { border-style:valoare; }
Atributele proprietatii border-style sunt urmatoarele:
CSS si DHTML
Valoare
none (nici unul)
Aspect
selector { border-color:valoare; }
Nu este necesar sa includeti toate atributele individuale ale unui chenar. In cazul in care exista
atribute omise, navigatorul va folosi valorile prestabilite ale acestora.
6.4.4. Stabilirea chenarului pentru o latura
Fiecare latura a chenarului poate avea valori configurate in mod independent (prin care se
stabilesc stilul si culoarea fiecarei borduri din jurul elementului) dupa cum urmeaza:
selector
selector
selector
selector
{
{
{
{
border-top:valori; }
border-bottom:valori; }
border-left:valori; }
border-right:valori; }
CSS si DHTML
Cand specificati toate cele patru valori, ele sunt aplicate in ordinea: sus, dreapta, jos, stanga.
Daca specificati doar o valoare, aceasta va fi aplicata tuturor celor patru spatii. Daca specificati
doua sau trei valori, atunci valorile care lipsesc sunt copiate dupa valorile laturilor opuse.
selector { float:valoare; }
Cele trei valori posibile sunt: left, right si none. Valoarea none permite elementului sa fie plasat
acolo unde este posibil, iar celelalte valori forteaza plasarea elementului in stanga sau in dreapta
ecranului, textul urmand sa fie plasat in partea opusa, in jurul elementului.
selector { clear:valoare; }
Valoarea proprietatii specifica latura in jurul careia este interzisa infasurarea textului; poate lua
valoarea: left, right sau both. Alternativ se poate folosi valoarea none, ceea ce are ca efect
anularea altor atribute ale proprietatii clear.
Proprietatea clear impiedica afisarea elementului afectat (cel caruia i se aplica) pana cand latura
desemnata nu este eliberata de alte elemente flotante.
selector { display:valoare; }
Definirea modului de afisare a elementului se face alegand una din urmatoarele optiuni:
list-item plaseaza in prima linie a textului un indicator pentru articole de tip lista, dar si
un salt deasupra si dedesubtul articolului;
block defineste eticheta ca o eticheta la nivel de bloc si plaseaza un salt la linie noua
deasupra si dedesubtul elementului;
inline defineste eticheta ca o eticheta in linie si elimina caracterele de salt la linie noua;
CSS si DHTML
Proprietatea display nu trebuie confundata cu visibility. Spre deosebire de visibility care lasa un
spatiu pentru element, sintaxa display: none elimina complet elementul din pagina.
height
margin
border
border-style
border-color
border-width
padding
float
clear
display
Valoare
<length>
<percentage>
auto
<length>
<percentage>
auto
<length>
<percentage>
auto
<border-width>
<border-style>
<border-color>
none
dotted
dashed
solid
double
groove
ridge
inset
outset
<color>
thin
medium
thick
<length>
<length>
<percentage>
left
right
none
left
right
both
none
list-item
block
inline
none
CSS si DHTML
7. CONTROALE DE POZITIONARE
Pozitionarea elementelor cu ajutorul CSS este mai precisa decat prin intermediul obiectelor
grafice sau a tabelelor, afisarea facandu-se mult mai rapid. Prin intermediul CSS este permisa
pozitionarea exacta sau relativa a elementelor intr-o fereastra sau in raport cu alte elemente.
Fereastra navigatorului este suprafata in care sunt afisate toate elementele. Ea poate fi
redimensionata sau pozitionata pe ecran, sau poate fi divizata in alte ferestre prin intermediul
cadrelor.
Fereastra navigatorului constituie cel mai important element in proiectarea paginii web, fiind
parintele tuturor elementelor; are, de asemenea, doua caracteristici importante si anume:
latimea, respectiv inaltimea.
Toatele elementele amplasate in fereastra sunt pozitionate relativ la originea suprafetei ferestrei,
care este coltul din stanga-sus.
selector { position:static }
selector { position:relative }
Elementele pozitionate relativ pot fi mutate din locatia lor folosind proprietatile top si left.
7.1.3. Pozitionarea absoluta
Pozitionarea absoluta are ca efect crearea unui element independent de restul documentului,
plasat in fereastra intr-o locatie precisa definita prin intermediul coordonatelor x si y.
CSS si DHTML
selector { position:absolute }
Originea (punctul de coordonate 0,0) o reprezinta coltul din stanga-sus al ferestrei sau al
obiectului in care este inclus elementul pozitionat absolut.
7.1.4. Pozitionarea fixa
Marea majoritate a navigatoarelor nu recunosc valoarea fixed; astfel, in mod prestabilit ele vor
folosi tipul static pentru a pozitiona elementele. Pozitionarea fixa a unui element este
aproximativ la fel cu cea absoluta, cu diferenta ca la derularea paginii elementul fixat ramane pe
pozitia lui initiala, fara a se derula.
selector { position:fixed }
o valoare de tip numeric, care defineste distanta intre laturile ferestrei sau a elementului
parinte si laturile elementului;
o valoare procentuala, care semnifica deplasarea fata de laturile ferestrei sau a
elementului parinte;
valoarea auto, care permite navigatorului sa calculeze valoarea.
Proprietatile top si left pot sa nu fie incluse simultan intr-o regula; ele pot lua si valori negative;
nu sunt proprietati mostenite, insa in cazul in care este vorba despre elemente imbricate, acestea
vor fi deplasate solidar cu elementul parinte.
CSS si DHTML
selector { z-index:valoare; }
In cazul in care continutul elementelor se suprapune, elementul cu numarul de ordine mai mare
apare deasupra elementului cu numar mai mic.
Index z poate lua ca valori numere intregi pozitive, 0 sau negative. Utilizarea unei valori negative
determina amplasarea elementului dedesubtul parintelui sau cu atatea niveluri cu cate indica
indexul z.
...
.clsElRel {position: relative; top: 50px; left: 100px; }
.clsElAbs {position: absolute; top: 25px; left: 0px; }
...
<div class=clsElRel>
...
<div class=clsElAbs> ... </div>
...
</div>
...
CSS si DHTML
Cand un element pozitionat absolut este imbricat intr-un element pozitionat relativ, primul
foloseste ca origine coltul din stanga-sus al parintelui sau. In cazul in care un element pozitionat
relativ este plasat in interiorul unui element pozitionat absolut, acesta se va deplasa o data cu
elementul absolut.
...
.clsElAbs {position: absolute; top: 50px; left: 10px; }
.clsElRel {position: relative; left: 40px; }
...
<div class=clsElAbs> ...
<div class=clsElRel> ... </div>
</div>
...
top si left
bottom si right
z-index
Valoare
static
relative
absolute
fixed
<length>
<percentage>
auto
<length>
<percentage>
auto
<number>
auto
CSS si DHTML
8. CONTROALE DE VIZIBILITATE
O caracteristica importanta a CSS o constituie posibilitatea de a afisa sau ascunde unele elemente
sau parti ale unor elemente.
selector { visibility:valoare }
.ascuns { visibility:hidden; }
Valorile definesc distanta dintre coltul din stanga-sus al elementului si laturile de sus, dreapta, jos
si stanga ale regiunii vizibile.
Daca se foloseste valoarea auto, navigatorul calculeaza automat dimensiunea regiunii vizibile la
100%. Regiunile de vizibilitate pot avea doar forma dreptunghiulara.
CSS si DHTML
selector { overflow:valoare; }
.supradim { overflow:scroll; }
clip
overflow
Valoare
hidden
visible
inherit
rect (<top>, <right>, <bottom>, <left>)
auto
scroll
hidden
visible
inherit
CSS si DHTML
selector { cursor:valoare; }
Aspect
+
][
In cazul folosirii valorii auto, navigatorul decide asupra tipului de indicator folosit.
Valoare
<cursor name>
<URL>
auto
none
CSS si DHTML
Atat Macromedia Flash cat si DHTML reprezinta o modalitate de extindere a interactivitatii siteurilor web. DHTML adauga interactivitate prin utilizarea HTML, CSS si JavaScript. In schimb, Flash
este un format de fisiere care poate fi integrat in paginile HTML, dar care constituie o tehnologie
aparte.
Dintre avantajele tehnologiei Flash amintim:
CSS si DHTML
Dimensiuni reduse in cazul in care sunt create in mod adecvat, produc un efect
semnificativ.
In momentul in care trebuie decis ce tehnologie trebuie folosita pentru proiectarea unui site web,
trebuie luati in considerare urmatorii factori:
tehnologia disponibila;
costurile;
nivelul multimedia;
continutul;
timpul de dezvoltare si intretinere;
care sunt asteptarile publicului.
CSS si DHTML
11.3. Evenimente
Evenimentele se produc in momentul in care se intampla ceva in fereastra navigatorului, ca
urmare a actiunii unui vizitator.
Rutinele de tratare a evenimentelor (care contin numele evenimentului precedat pe cuvantul on)
permit definirea unor operatii care trebuie efectuate la detectarea unui anumit eveniment.
Cele mai cunoscute rutine de tratare a evenimentelor sunt:
Eveniment
onLoad
onUnload
onFocus
onBlur
onMouseOver
onMouseOut
onClick
onMouseDown
onMouseUp
onMouseMove
onKeyDown
onLeyUp
onKeyPress
onResize
Momentul declansarii
dupa incarcarea unui obiect
dupa ce obiectul nu mai este incarcat
cand un element este selectat
cand un element este deselectat
cand indicatorul mouse-ului trece pe deasupra
unei suprafete
cand indicatorul mouse-ului nu se mai gaseste
deasupra unei suprafete
cand s-a executat click pe o suprafata
la apasarea unui buton al mouse-ului
la eliberarea unui buton apasat
la deplasarea mouse-ului
la apasarea unei taste
la eliberarea unei taste apasate
la apasarea unei taste, urmata de eliberarea sa
la modificarea dimensiunii unei ferestre
Elemente afectate
documente si imagini
documente si imagini
documente si formulare
documente si formulare
legaturi si regiuni ale unei
imagini harta
toate
toate
toate
toate
document
formulare
formulare
formulare
document
CSS si DHTML
onMove
la mutarea ferestrei navigatorului
document
Modificarile aduse unui obiect prin schimbarea proprietatilor stilului trebuie sa fie declansate de o
rutina de tratare a evenimentelor.
O rutina de tratare a unui eveniment stabileste o legatura intre o actiune din fereastra
navigatorului si o functie JavaScript, care, la randul sau, produce o reactiune in fereastra. In cazul
in care un eveniment trebuie sa declanseze mai multe operatii, toate actiunile se trec in interiorul
ghilimelelor si sunt despartite de caracterul ;. Este de asemenea permisa si scrierea liniilor de
program JavaScript direct intre ghilimele.
<html>
<head>
<script>
function MyFunction {
document.object_id.object_prop=value;
}
</script>
</head>
<body>
<a_tag event=MyFunction()>
<other_tag id=object_id>content
</other_tag>
</a_tag>
</body>
</html>
document.layers[object_id].property
Acest tip de model DOM permite controlul unor proprietati ca: pozitie, vizibilitate si regiune
invizibila a unui document. Modificarile operate in cadrul acestor proprietati vor avea un efect
imediat in pagina.
Copyright 2006 : Institutul Multimedia Romno - Elveian
CSS si DHTML
document.all[object_id].style.property
document.getElementById[object_id].style.property
Modelul W3C DOM ID, sau modelul DOM standard, permite scrierea de scripturi care pot obtine
acces la orice element de pe ecran. Aceste elemente includ toate proprietatile CSS, iar
modificarile survenite asupra acestora sunt reflectate imediat in pagina.
<html>
<head>
<script>
var isDHTML = 0
var isID = 0
var isAll = 0
var isLayers = 0
if (document.getElementById) {
Copyright 2006 : Institutul Multimedia Romno - Elveian
CSS si DHTML
isID = 1;
isDHTML = 1;}
else {
if (document.layers) {
isLayers = 1;
isDHTML = 1;}
else {
if (document.all) {
isAll = 1;
isDHTML = 1;
}
}
}
</script>
</head>
<body>
<script>
if (isDHTML) {
document.write(Navigator capabil DHTML foloseste: );
}
if (isID) {
document.write(Modelul W3C DOM ID);}
else {
if (isAll) {
document.write(Modelul All DOM Internet Explorer);}
else {
if (isLayers) {
document.write(Modelul DOM Netscape Layer);}
else {
document.write(Navigator nu este capabil DHTML !);}
}
}
}
</script>
</body>
</html>
CSS si DHTML
Este util ca modelul DOM inter-browser creat, sa fie plasat intr-un fisier extern (existand
posibilitatea ca el sa fie apoi importat in documentul HTML), pentru ca functia findDOM sa poata fi
apelata cu usurinta din orice pagina web a site-ului.
Exemplul 11.2.
var
var
var
var
isDHTML=0;
isID=0;
is All=0;
isLayers=0;
if (document.getElementById) {
isID = 1;
isDHTML = 1;}
else {
if (document.all) {
isAll = 1;
isDHTML = 1;}
else {
browserVersion = parseInt(navigator.appVersion);
if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {
isLayers = 1;
isDHTML = 1;
}
}
}
function findDOM(objectID,withStyle) {
if (withStyle == 1) {
if (isID) {
return (document.getElementById(objectID).style);}
else {
if (isAll) {
return (document.all[objectID].style);}
else {
if (isLayers) {
return (document.layers[objectID]);
}
}
}}
else {
if (isID) {
return (document.getElementById(objectID));}
else {
if (isAll) {
return (document.all[objectID]);}
else {
if (isLayers) {
return (document.layers[objectID]);
}
}
}
}
}
CSS si DHTML
<html>
<head>
<title>Determinarea numelui si a versiunii navigatorului</title>
</head>
<body>
<script type='text/javascript' language='JavaScript'>
document.write('<b>Navigator: </b>');
document.write(navigator.appName + ' ');
document.write(navigator.appVersion);
var isNS = 0;
var isIE = 0;
var isOB = 0;
if (navigator.appName.indexOf('Netscape') != -1) {
isNS = 1;
} else {
if (navigator.appName.indexOf('Microsoft Internet Explorer') != -1) {
isIE = 1;
} else {
isOB = 1;
}
}
browserVersion = parseInt(navigator.appVersion);
document.write('<br><br>');
if (isNS) {
document.write('Navigator compatibil cu Netscape versiunea ');
} else {
if (isIE) {
document.write('Navigator compatibil cu Internet Explorer versiunea ');
} else {
if (isOB) {
document.write('Navigator nerecunoscut. Versiunea: ');
}
}
}
document.write(browserVersion + '.');
</script>
</body>
</html>
CSS si DHTML
Detectarea navigatorului este utila pentru a determina daca o functie DHTML trebuie rulata sau
nu pentru cazul in care pagina web este incarcata intr-un anume navigator. Marea majoritate a
navigatoarelor diferite de Internet Explorer si Netscape sunt identificate ca fiind unul din acestea.
<html>
<head>
<title>Determinarea sistemului de operare</title>
</head>
<body>
<script type='text/javascript' language='JavaScript'>
document.write('<b>Navigator: </b>');
document.write(navigator.appName + ' ');
document.write(navigator.appVersion);
var isMac = 0;
var isWin = 0;
var isOOS = 0;
if (navigator.appVersion.indexOf('Macintosh') != -1) {
isMac = 1;
} else {
if (navigator.appVersion.indexOf('Windows') != -1) {
isWin = 1;
} else {
isOOS = 1;
}
}
document.write('<br><br>');
if (isMac) {
document.write('Navigatorul ruleaza sub Macintosh.');
} else {
if (isWin) {
document.write('Navigatorul ruleaza sub Windows.');
} else {
if (isOOS) {
document.write('Navigatorul ruleaza sub SO necunoscut.');
}
}
}
</script>
</body>
</html>
CSS si DHTML
<html>
<head>
<title>Determinarea dimensiunilor ecranului</title>
</head>
<body>
<script type='text/javascript' language='JavaScript'>
var scrH = screen.height;
var scrW = screen.width;
var lscrH = screen.availHeight;
var lscrW = screen.availWidth;
document.write('Inaltimea totala a ecranului: ' + scrH + 'px <br>');
document.write('Latimea totala a ecranului: ' + scrW + 'px <br><br>');
document.write('Inaltimea totala a suprafetei active: ' + lscrH + 'px <br>');
document.write('Latimea totala a suprafetei active: ' + lscrW + 'px <br><br>');
</script>
</body>
</html>
<html>
<head>
<title>Determinarea numarului de culori</title>
</head>
<body>
<script type='text/javascript' language='JavaScript'>
var scrColDep = screen.colorDepth;
document.write('Profunzimea culorii este de: ' + scrColDep + 'biti. <br>');
</script>
</body>
</html>
CSS si DHTML
<html>
<head>
<script type='text/javascript' language='JavaScript'>
function getBrowserH () {
if (window.outerHeight != null) {
return window.outerHeight;
} else {
return null
}
}
function getBrowserW () {
if (window.outerWidth != null) {
return window.outerWidth;
} else {
return null
}
}
</script>
<title>Determinarea dimensiunilor ferestrei navigatorului</title>
</head>
<body>
<script type='text/javascript' language='JavaScript'>
browserH = getBrowserH();
browserW = getBrowserW();
if (browserH != null) {
document.write('Inaltimea navigatorului este: ' + browserH + 'px. <br>');
} else {
document.write('Inaltimea navigatorului nu poate fi determinata. <br>');
}
if (browserW != null) {
document.write('Latimea navigatorului este: ' + browserW + 'px. <br>');
} else {
document.write('Latimea navigatorului nu poate fi determinata. <br>');
}
</script>
</body>
</html>
CSS si DHTML
<html>
<head>
<script type='text/javascript' language='JavaScript'>
function getiBrowserH () {
if (window.innerHeight != null) {
return window.innerHeight;
}
if (document.body.clientHeight != null) {
return document.body.clientHeight;
}
return null;
}
function getiBrowserW () {
if (window.innerWidth != null) {
return window.innerWidth;
}
if (document.body.clientWidth != null) {
return document.body.clientWidth;
}
return null;
}
</script>
<title>Determinarea dimensiunilor ferestrei navigatorului</title>
</head>
<body>
<script type='text/javascript' language='JavaScript'>
browserH = getiBrowserH();
browserW = getiBrowserW();
document.write('Inaltimea suprafetei active este: ' + browserH + 'px. <br>');
document.write('Latimea suprafetei active este: ' + browserW + 'px. <br>');
</script>
</body>
</html>
<html>
<head>
<title>Determinarea adresei si
</head>
<body>
<script type='text/javascript'
var pagURL = self.location;
var pagTit = document.title;
document.write('Adresa paginii
document.write('Titlul paginii
</script>
</body>
</html>
CSS si DHTML
<html>
<head>
<script type='text/javascript' language='JavaScript'>
function getScrollL () {
if (window.pageXoffset != null) {
return window.pageXoffset;
}
if (document.body.scrollHeight != null) {
return document.body.scrollLeft;
}
return null;
}
function getScrollT () {
if (window.pageYoffset != null) {
return window.pageYoffset;
}
if (document.body.scrollWidth != null) {
return document.body.scrollTop;
}
return null;
}
function showScroll() {
windScrollL = getScrollL();
windScrollT = getScrollT();
status = 'Stanga: ' + windScrollL + ', Sus:' + windScrollT;
setTimeout("showScroll()",100);
}
</script>
<title>Determinarea dimensiunilor ferestrei navigatorului</title>
</head>
<body onLoad="showScroll()">
Derulati fereastra si observati pozitia derularii in bara de stare
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<hr width="1600">
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>
</html>
CSS si DHTML
<html>
<head>
<script>
function getWidth(objectID) {
var dom = document.getElementById(objectID);
if (dom.offsetWidth)
return dom.offsetWidth;
if (dom.clip.width)
return dom.clip.width;
return (null);
}
function getHeight(objectID) {
var dom = document.getElementById(objectID);
if (dom.offsetHeight)
return dom.offsetHeight;
if (dom.clip.height)
return dom.clip.height;
return (null);
}
</script>
<style>
a {color:black; text-decoration:none;}
a:vlink {color:black; text-decoration:none;}
a:hover {color:white; text-decoration:none;}
#o1 {font-family:Arial, sans-serif; font-size:12px; background-color:red;
position:absolute; top:50px; left:50px; width:100px; height:75px;}
#o2 {font-family:Arial, sans-serif; font-size:12px; background-color:blue;
position:absolute; top:250px; left:250px; width:75px; height:50px;}
</style>
<title>Determinarea dimensiunilor unui obiect</title>
</head>
<body>
<script>
function showDim(objectID) {
var ObjW = getWidth(objectID);
var ObjH = getHeight(objectID);
alert('Latime: ' + ObjW + 'px;
Inaltime: ' + ObjH + 'px');
}
</script>
<div id='o1'>
<a href='#' onClick="showDim('o1')">Click pentru dimensiuni</a></div>
<div id='o2'>
<a href='#' onClick="showDim('o2')">Click pentru dimensiuni</a></div>
</body>
</html>
Pentru diverse navigatoare acelasi obiect va avea dimensiuni usor diferite din cauza faptului ca in
anumite cazuri, in valoarea latimii, respectiv a inaltimii este inclus si chenarul.
CSS si DHTML
<html>
<head>
<script>
function getLeft(objectID) {
var dom = document.getElementById(objectID);
var domStyle = document.getElementById(objectID).style;
if (domStyle.left)
return domStyle.left;
if (domStyle.pixelLeft)
return domStyle.pixelLeft;
if (dom.offsetLeft)
return dom.offsetLeft;
return (null);
}
function getTop(objectID) {
var dom = document.getElementById(objectID);
var domStyle = document.getElementById(objectID).style;
if (domStyle.top)
return domStyle.top;
if (domStyle.pixelTop)
return domStyle.pixelTop;
if (dom.offsetTop)
return dom.offsetTop;
return (null);
}
</script>
<style>
a {color:black; text-decoration:none;}
a:alink {color:black; text-decoration:none;}
a:vlink {color:black; text-decoration:none;}
a:hover {color:white; text-decoration:none;}
#o1 {font-family:Arial, sans-serif; font-size:12px; background-color:green;
position:absolute; top:50px; left:100px; width:100px; height:75px;}
</style>
<title>Determinarea pozitiei unui obiect</title>
</head>
<body>
<script>
function showPoz(objectID) {
var ObjL = getLeft(objectID);
var ObjT = getTop(objectID);
alert('Stanga: ' + ObjL + 'px;
Sus: ' + ObjT + 'px');
}
</script>
<div id='o1'><a href='#' onClick="showPoz('o1')">Click pentru pozitie</a></div>
</body>
</html>