E suficient, probabil, sa va ganditi la Kant. Spatiul si timpul sunt forme pure ale sensibilitatii, care structureaza materialul sensibil. Dupa aceea, senzatiilor in spatiu si timp, considerate ca materie, li se aplica toate conceptele intelectului (potrivit schematismului) - ca forma. Ok, despre ce e vorba? Textul simplu, neformatat (in cod ASCII sau ANSI) reprezenta materia peste care aplicam etichetele. Acum puteti sa va inchipuiti ca materia o reprezinta codul HTML - text + etichete. "Peste" asta se poate aplica iarasi o forma, iar forma asta e construita folosind CSS (sa zicem "foi cu reguli stilistice", partea cu cascada vine mai incolo). Orice foaie cu reguli stilistice cuprinde reguli de forma:
SELECTOR { DECLARATIE }Prin declaratie este definita regula, iar selectorul ne spune cui i se aplica. Sa le luam pe rand. Un selector poate arata asa (cascati ochii la culori si numere):
NUME_DE_ETICHETA de pilda: H4 .NUME_DE_CLASA de pilda: .special NUME_DE_ETICHETA.NUME_DE_CLASA de pilda: B.special NUME_DE_ETICHETA1, NUME_DE_ETICHETA2 etc. de pilda: H4, B, SUP etc. NUME_DE_ETICHETA1.NUME_DE_CLASA1, NUME_DE_ETICHETA2.NUME_DE_CLASA2, NUME_DE_ETICHETA3 etc. de pilda: H4.special, FONT.test, SUP etc. SELECTOR1 SELECTOR2 SELECTOR3 etc. de pilda: FONT FONT sau: P.special B sau: OL.test LI.special BSa o luam incet. Atunci cand selectorul este un nume de eticheta, inseamna ca "forma" definita de declaratie se va aplica elementelor din eticheta respectiva. Atunci cand am mai multe nume de etichete separate prin virgula, inseamna ca "forma" se va aplica tuturor elementelor din etichetele respective. Atunci cand numele nu sunt despartite prin virgula, inseamna ca "forma" nu se va aplica decat elementelor din etichete incapsulate in alte etichete potrivit ordinii din selector. De pilda, daca selectorul este OL LI B, elementele afectate vor fi doar cele din eticheta <B> </B> care apare in interiorul elementelor unei liste ordonate. Mai departe. Orice eticheta suporta atributul CLASS, care poate lua ca valori siruri alfanumerice (la fel ca atribului NAME al etichetei ancora). Putem avea, de pilda, un cod de forma:
SELECTOR_CONTEXTUAL1, SELECTOR_CONTEXTUAL2, SELECTOR_CONTEXTUAL3 etc. de pilda: FONT FONT, P.special B etc.In afara de sistemul selectorilor contextuali si al claselor, orice obiect HTML poate fi identificat unic inserand in eticheta respectiva atributul ID, care primeste ca valoare un sir alfanumeric ales. In CSS selectorul care trimite la acel obiect are forma: #nume_ales. De pilda, putem avea o eticheta de forma aici text. Nici o alta eticheta nu va avea acelasi identificator ("xyz23"). Selectorul #xyz23 va trimite doar la ceea ce se gaseste in aceasta eticheta si la nimic altceva.
{ PROPRIETATE1: VALOARE1; PROPRIETATE2: VALOARE2; etc. }Atentie, proprietatile nu sunt acelasi lucru cu atributele etichetelor. Impreuna, totul arata cam asa (doar un exemplu):
ETICHETA.CLASA{ PROPRIETATE1: VAL1; PROPRIETATE2: VAL2; PROPRIETATE3: VAL3; }Dupa cum v-ati prins deja, proprietatile nu sunt dependente de etichete, asa cum sunt atributele. Pot spune ca o anumita proprietate a unor obiecte HTML din etichete diferite sa aiba o anumita valoare. De pilda, pot stabili ca toate titlurile de marimea 1 (H1) si toate cuvintele ingrosate sa fie de fapt scrise cu albastru. Asta o sa arate asa:
H1, B{ color: blue; }E suficient sa introduc aceasta regula stilistica in codul unei pagini HTML si Booom! - toate titlurile si cuvintele ingrosate vor fi albastre. Cum introduc regula in codul HTML? Simplu. O incapsulez intr-o eticheta speciala, numita STYLE. Totul va arata asa:
<STYLE TYPE="text/css"> H1, B{ color: blue; } </STYLE>Tot codul de mai sus o sa-l pun undeva in HEAD. Atributul TYPE al etichetei STYLE are si el un rol, dar deocamdata nu o sa-l folositi decat cu valoarea "text/css". Cu ajutorul lui se precizeaza ce limbaj e folosit pentru a construi foaia stilistica. Da, ati ghicit, CSS e un limbaj (ca si HTML, are mai multe versiuni; daca va intreaba cineva ce ati invatat, puteti sa spuneti asa: HTML 3.2 si CSS Level 1). Exista insa si alte limbaje in care poate fi construita o foaie stilistica - ideea e aceeasi, sintaxa difera. Unul dintre ele e JavaScript. Daca foaia ar fi fost scrisa in JavaScript, valoarea atributului TYPE ar fi fost "text/javascript". N-o mai lungesc, puteti vedea aici rezultatul.
_______________________________________ | | | margine (transparenta) | | _________________________________ | | | | | | | bordura (border) | | | | ___________________________ | | | | | | | | | | | padding | | | | | | _____________________ | | | | | | | | | | | | | | | continut | | | | | | | |_____________________| | | | | | |___________________________| | | | |_________________________________| | |_______________________________________| | latimea elementului | | latimea cutiei |Pentru a stabili latimea marginii folosim margin. Exemplu:
OL { margin: 60px } /* toate marginile au 60px */ OL { margin: 60px 120px } /* sus & jos = 60px, stanga & dreapta = 120px */Dimensiunile pot fi date in mai multe feluri. Mai sus am folosit valori in pixeli (asta e motivul pentru care se adauga "px" la numar). Daca doresc sa dau dimensiuni diferite fiecarei margini in parte pot folosi mai multe proprietati:
OL { margin-top: 1em; margin-bottom: 3em; margin-left: 2em; margin-right: 1em; }Unitatile de tip "em" sunt relative la dimensiunile literelor folosite. O unitate 'em' masoara cat inaltimea literelor majuscule standard folosite in interiorul elementului pentru care folosim valoarea. Literele, la randul lor, se masoara in puncte. In orice editor specializat aveti posibilitatea sa folositi litere de diferite marimi (in puncte). Dimensiunea obisnuita este 12pt. Diferenta dintre pixeli si puncte e urmatoarea: marimile in pixeli sunt relative la densitatea de pixeli pe ecran - data de rezolutia monitorului. Cu cat rezolutia e mai mare, cu atat densitatea de pixeli pe ecran e mai mare (considerand ca ecranul nu-si schimba dimensiunile fizice); Un punct este o unitate de marime absoluta - 1/72 dintr-un inch (2.54 cm). Recapitulare: CSS permite ca valorile pentru proprietatile spatiale sa fie absolute (pt, mm, cm, in - da, toate sunt valori legale: puncte, milimetri, centimetri si inches) sau relative (px, em, %; valorile in procente sunt in functie de o alta marime - latimea elementului bloc, marimea literei etc.).
OL { border-color: rgb(255, 0, 0) }Nu intrati in panica. 'rgb(255, 0, 0)' este o singura valoare, doar ca se foloseste codul RGB (in primul tutorial era o lectie despre culori). Valorile pentru culori pot fi date folosind codificarea RGB (mai sus am scris de fapt rosu) sau codul obisnuit in hexazecimal (dar daca il folositi, scrieti cu litere mici; aceeasi valoare de mai sus ar fi in hexazecimal '#ff0000') sau cuvinte ('red'). Ca si mai sus (la proprietatea margin) pot seta culori diferite pentru fiecare latura in parte insirand (cu spatii libere despartitoare) patru valori una dupa alta (ordinea e: sus jos stanga dreapta). De exemplu asa:
DIV { border-color: red green orange blue }Grosimea bordurii se stabileste, in aceeasi maniera, folosind border-width. Puteti folosi valori numerice (relative sau absolute) sau cuvinte (thin | medium | thick). La fel ca mai sus, puteti seta grosimi diferite pentru fiecare latura a bordurii folosind siruri de valori.
BLOCKQUOTE { border: thin solid blue }Proprietatea padding (mai tineti minte atributul CELLPADDING de la tabele?) stabileste distanta continutului cutiei fata de bordura. Se foloseste exact ca margin (si tot ca si la margin exista toate cele patru proprietati: padding-top, padding-bottom, padding-left, padding-right). Acum stiti cam tot ceea ce trebuie sa stiti despre cutii. Pentru un exemplu e suficient sa inspectati codul acestei pagini pentru a vedea cum a fost construita lista ordonata din chenarul albastru de mai inainte. BTW, ce fel de element credeti ca este cel din eticheta <BODY> </BODY>? Tot o cutie.
BODY { background-color: gray; color: black; }inlocuieste atributele BGCOLOR si TEXT din <BODY> </BODY>. Cu link-urile lucrurile stau mai complicat. link, active si visited sunt tratate ca niste clase (de fapt, pseudo-clase) ale elementului ancora (A). Selectorul pentru ele este de tipul A:link si sunt elemente inline. In cazul in care formam o clasa din unele linkuri si vrem sa selectam clasa respectiva (sa zicem ca se cheama 'test'), selectorul e de forma: A.test:visited. De pilda, codul:
A.test:visited { color: gray; }e echivalent cu VLINK="gray" din <BODY> </BODY>, pentru link-urile din clasa test (adica cele care incep in genul <A CLASS="test" HREF="...).
font-family | stabileste tipul de font care urmeaza sa fie folosit (cam ca atributul FACE al etichetei <FONT></FONT>); se foloseste de obicei un sir de valori; fiecare valoare e numele unui format de litera (font); browserul cauta pe rand seturile de caractere; daca nu e gasit primul e cautat al doilea, daca nu e gasit al doilea e cautat al treilea s.a.m.d.; ultima valoare din sir e recomandat sa fie un nume generic de litera [serif (gen 'Times' | sans-serif (gen 'Arial') | cursive | fantasy | monospaced (gen 'Courier')]; numele de fonturi care includ spatii trebuie sa fie puse intre ghilimele; | EXEMPLU |
font-style | primeste ca valori: normal | italic | oblique; restul e de la sine inteles (pentru valoarea "oblique", daca setul de fonturi nu include si fonturi oblice, atunci toata povestea e ignorata) | Exemplu cu litere italice |
font-variant | Doar doua valori: normal (subinteleasa) si small-caps; Netscape nu se descurca cu exemplul de aici; | Exemplu cu small-caps |
font-weight | E vorba de grosimea literei; Aceasta poate fi stabilita folosind valori numerice intre 100 si 900 (din suta in suta), de la subtire la gros, sau folosind cuvinte (normal | bold | bolder | lighter) | litere foarte groase |
font-size | Cu ajutorul ei se stabileste dimensiunea literei; Poate primi oricare din valorile numerice de dinainte (in pt, em, mm, px etc.) sau o valoare dintre: xx-small | x-small | small | medium | large | x-large | xx-large (acestea sunt in principiu echivalente cu valorile numerice 1-7 ale atributului SIZE al etichetei <FONT></FONT>). | litere marisoare |
line-height | E vorba de inaltimea liniei de text. Aceasta poate sa depaseasca dimensiunile literelor. Cu ajutorul acestei proprietati se poate spatia textul la un rand si jumatate, doua etc. | text la un rand si jumatate |
P { font: 12pt/14pt bold italic "new century schoolbook", serif }Ok, lectia asta a durat cam mult. Puteti lua o pauza aici. In lectia urmatoare continui cu proprietatile pentru text si pentru elementele inlocuite + cateva proprietati speciale ale listelor, dupa care va explic cum pot fi construite layers (care sa fie vazute si de Netscape si de IE) folosind CSS. Bye!