Biblioteca
Tutora
BibliotecaInformatică și TIC › clasa a X-a

Tehnologii web

Introducere în crearea paginilor web statice și dinamice folosind HTML, CSS și noțiuni de bază de JavaScript.

Structura unui document HTML5

HTML (HyperText Markup Language) descrie structura și conținutul unei pagini web. Este un limbaj de marcare, nu de programare — nu are variabile, condiții sau cicluri; el doar etichetează conținutul: acesta e un titlu, acesta e un paragraf, aceasta e o imagine.

Scheletul obligatoriu al unui document HTML5:

Distincția head/body este prima sursă de confuzie: `<title>` NU apare în pagină, ci pe fila browserului; ce se vede în pagină stă exclusiv în body.

Un element HTML are de regulă etichetă de deschidere, conținut și etichetă de închidere: `<p>text</p>`. Câteva elemente sunt vide și nu se închid: `<img>`, `<br>`, `<input>`. Atributele adaugă informații în eticheta de deschidere, ca perechi nume-valoare: `<img src='poza.jpg' alt='descriere'>`.

Elementele se imbrică corect ca păpușile rusești: ultimul deschis se închide primul. Scrierea `<b><i>text</b></i>` este imbricare greșită — browserele o tolerează adesea, dar validatoarele o resping, iar comportamentul devine imprevizibil.

Elemente HTML de bază

Elementele pe care se construiește orice pagină:

Comentariile HTML se scriu `<!-- așa -->` și nu apar în pagină.

CSS: selectori și proprietăți

CSS (Cascading Style Sheets) descrie aspectul paginii: culori, fonturi, spații, așezare. Principiul de aur al web-ului modern: HTML pentru structură, CSS pentru prezentare — separarea lor face paginile ușor de întreținut.

O regulă CSS are forma: selector { proprietate: valoare; } — de exemplu `p { color: blue; font-size: 16px; }`.

Selectorii de bază, în ordinea în care trebuie știuți:

CSS se poate atașa în trei moduri: inline (atributul style direct pe element — de evitat), intern (blocul `<style>` din head) și extern (fișier .css separat, legat cu `<link rel='stylesheet' href='stil.css'>`) — varianta corectă pentru orice site real, pentru că un singur fișier stilizează toate paginile.

Când mai multe reguli țintesc același element, câștigă regula mai specifică (id bate clasa, clasa bate elementul), iar la specificitate egală, ultima declarată — aceasta este „cascada” din nume. Proprietăți de bază: `color` (culoarea textului), `background-color`, `font-family`, `font-size`, `text-align`, `font-weight: bold`. Culorile se scriu cu nume (red), hexazecimal (#ff0000) sau rgb(255, 0, 0).

Modelul cutiei și așezarea în pagină

În CSS, fiecare element este o cutie dreptunghiulară formată din patru straturi concentrice — modelul cutiei (box model), dinspre interior spre exterior:

Confuzia padding/margin este cea mai frecventă greșeală practică: padding-ul „umflă” elementul pe dinăuntru, margin-ul îl distanțează de celelalte. Lățimea reală ocupată = width + padding + border + margin (în modelul implicit), motiv pentru care multe pagini setează `box-sizing: border-box`, care include padding-ul și chenarul în width.

Elementele sunt de două feluri de afișare: bloc (div, p, h1 — ocupă toată lățimea și încep pe rând nou) și inline (span, a, b — curg în interiorul textului; width și height nu au efect asupra lor).

Pentru așezarea (layout) modernă a paginii:

Regula practică de alegere: o singură direcție (un rând SAU o coloană) → Flexbox; rânduri ȘI coloane simultan → Grid. Metodele istorice — tabele HTML pentru layout, float-uri — sunt considerate depășite.

Introducere în JavaScript

JavaScript este limbajul de programare al paginilor web — a treia componentă a triadei: HTML structura, CSS aspectul, JavaScript comportamentul. Rulează direct în browser (client-side) și poate reacționa la acțiunile utilizatorului și modifica pagina din mers, fără reîncărcare.

Precizare cerută la orice test: JavaScript NU este Java — sunt limbaje diferite, cu nume asemănător din motive istorice de marketing.

Elementele de bază:

Puntea dintre JavaScript și pagină este DOM (Document Object Model) — reprezentarea paginii ca arbore de obiecte pe care scriptul îl poate citi și modifica: `document.getElementById('titlu').textContent = 'Salut';` schimbă textul elementului cu id-ul titlu.

Evenimentele leagă codul de acțiunile utilizatorului: click, tastare, trimiterea unui formular. Varianta modernă folosește `addEventListener('click', functie)` pe elementul dorit.

Capcana clasică a operatorilor: `==` compară cu conversii automate de tip ('5' == 5 este adevărat), pe când `===` cere și egalitatea tipurilor ('5' === 5 este fals). Practica recomandată este folosirea consecventă a lui ===, tocmai ca să nu apară potriviri-surpriză.

Formulare și validare

Formularele sunt mecanismul prin care paginile colectează date de la utilizator. Elementul container este `<form>`, cu atributele action (adresa către care se trimit datele) și method:

Controalele uzuale, toate pe elementul `<input>` diferențiat prin atributul type: `text` (o linie de text), `password` (caractere mascate), `email`, `number`, `date`, `checkbox` (bife multiple), `radio` (o singură opțiune din grup — butoanele radio cu același atribut name formează grupul), `submit` (butonul de trimitere). Pentru texte lungi există `<textarea>`, pentru liste derulante `<select>` cu `<option>`. Eticheta `<label>` se leagă de control prin atributul for, îmbunătățind accesibilitatea.

Atributul name al fiecărui control este esențial: sub acest nume ajunge valoarea la server — un input fără name nu trimite nimic.

Validarea verifică datele înainte de trimitere. HTML5 oferă validare declarativă, fără nicio linie de cod: required (câmp obligatoriu), min/max și minlength/maxlength (limite), type='email' (format de adresă), pattern (expresie regulată). Browserul blochează trimiterea și afișează mesaje automat.

Pentru reguli mai complexe se adaugă validare în JavaScript, la evenimentul submit. Însă regula de securitate care trebuie ținută minte toată viața: validarea pe client este doar confort pentru utilizator; serverul TREBUIE să revalideze totul — orice utilizator rău intenționat poate ocoli complet browserul și trimite date fabricate direct către server.

De reținut

HTML
limbaj de marcare care descrie structura și conținutul paginii web prin elemente delimitate de etichete; nu este limbaj de programare
atribut HTML
pereche nume-valoare scrisă în eticheta de deschidere a unui element, care îi adaugă informații: href la linkuri, src și alt la imagini
CSS
limbajul foilor de stil în cascadă, care descrie aspectul paginii prin reguli de forma selector { proprietate: valoare; }
selector de clasă și de id
.nume selectează toate elementele cu clasa respectivă, refolosibilă; #nume selectează elementul cu id-ul respectiv, care trebuie să fie unic în pagină
modelul cutiei
reprezentarea oricărui element ca o cutie cu patru straturi: conținut, padding (spațiu interior), border (chenar) și margin (spațiu exterior)
Flexbox și Grid
sistemele moderne de așezare CSS: Flexbox aranjează elementele pe o singură direcție (rând sau coloană), Grid pe două dimensiuni simultan
JavaScript
limbajul de programare al browserului, care adaugă comportament paginii: reacționează la evenimente și modifică documentul prin DOM; diferit de Java
DOM
Document Object Model — reprezentarea paginii ca arbore de obiecte, prin care JavaScript citește și modifică dinamic conținutul și stilul elementelor
GET și POST
metodele de trimitere a formularelor: GET atașează datele la URL (vizibile), POST le trimite în corpul cererii — varianta obligatorie pentru date sensibile
validare pe client și pe server
verificarea datelor în browser (HTML5, JavaScript) este doar confort pentru utilizator; serverul trebuie să revalideze totul, fiindcă clientul poate fi ocolit

Greșeli frecvente

Greșit: Considerarea HTML drept limbaj de programare
Corect: HTML este limbaj de marcare: etichetează structura conținutului, fără variabile, decizii sau cicluri; programarea în pagină o face JavaScript
Greșit: Folosirea aceluiași id pe mai multe elemente din pagină
Corect: Id-ul trebuie să fie unic în document; pentru stiluri aplicate mai multor elemente se folosesc clasele — exact pentru asta există
Greșit: Confundarea padding-ului cu margin-ul
Corect: Padding este spațiul interior, între conținut și chenar, și preia fundalul elementului; margin este spațiul exterior, transparent, care desparte elementul de vecini
Greșit: Compararea valorilor în JavaScript cu == în loc de ===
Corect: == face conversii automate de tip ('5' == 5 e adevărat) și produce potriviri-surpriză; === compară și valoarea, și tipul — varianta sigură
Greșit: Bazarea securității exclusiv pe validarea din browser
Corect: Validarea HTML5/JavaScript poate fi ocolită complet de un utilizator rău intenționat; serverul trebuie să revalideze fiecare dată primită

Test — 6 întrebări ca la examen

1. Elementul <title> al unui document HTML:
  1. afișează titlul principal, cu litere mari, în partea de sus a paginii
  2. stabilește textul afișat pe fila browserului și aparține secțiunii head
  3. este obligatoriu să apară în body
  4. creează un link către prima pagină a site-ului
Vezi răspunsul
stabilește textul afișat pe fila browserului și aparține secțiunii head. title stă în head, printre metadate, și se vede pe fila browserului, nu în pagină. Titlul vizibil din pagină se face cu h1 — confuzia title/h1 este exact capcana acestei întrebări.
2. Care este rolul atributului alt al elementului <img>?
  1. stabilește adresa fișierului imagine
  2. definește lățimea imaginii în pixeli
  3. oferă un text alternativ afișat când imaginea nu se încarcă și citit de cititoarele de ecran
  4. adaugă un chenar decorativ imaginii
Vezi răspunsul
oferă un text alternativ afișat când imaginea nu se încarcă și citit de cititoarele de ecran. alt descrie imaginea în text: apare când fișierul lipsește și este esențial pentru accesibilitate. Adresa fișierului o dă atributul src — distractorul clasic, fiindcă cele două atribute stau mereu împreună pe img.
3. Regula CSS .mesaj { color: red; } se aplică:
  1. elementului unic cu id-ul mesaj
  2. tuturor elementelor care au clasa mesaj
  3. tuturor paragrafelor din pagină
  4. doar primului element cu clasa mesaj
Vezi răspunsul
tuturor elementelor care au clasa mesaj. Punctul din fața numelui marchează un selector de clasă, iar clasa poate fi purtată de oricâte elemente — toate primesc stilul. Selectorul de id ar începe cu # și ar ținti un singur element; diferența punct/diez este verificarea standard la selectori.
4. În modelul cutiei CSS, spațiul dintre conținutul elementului și chenarul său este:
  1. margin
  2. padding
  3. border
  4. outline
Vezi răspunsul
padding. Padding-ul este spațiul interior, între conținut și border, și preia culoarea de fundal a elementului. Margin — distractorul simetric — este spațiul din afara chenarului, care desparte elementul de vecinii lui.
5. În JavaScript, expresia '5' === 5 are valoarea:
  1. true, pentru că valorile sunt egale
  2. false, pentru că operanzii au tipuri diferite
  3. eroare de sintaxă
  4. 5
Vezi răspunsul
false, pentru că operanzii au tipuri diferite. Operatorul === cere egalitate de valoare ȘI de tip: un șir de caractere nu este identic cu un număr, deci rezultatul e false. Cu == rezultatul ar fi true datorită conversiei automate — exact diferența dintre cei doi operatori pe care o testează itemul.
6. Un formular de autentificare cu parolă trebuie trimis cu metoda POST deoarece:
  1. GET nu poate trimite mai mult de un câmp
  2. POST atașează datele la URL pentru verificare
  3. la GET datele apar în URL, unde pot fi văzute și salvate în istoric
  4. POST validează automat datele pe server
Vezi răspunsul
la GET datele apar în URL, unde pot fi văzute și salvate în istoric. GET pune datele în bara de adrese — parola ar rămâne în istoricul browserului și în jurnalele serverelor; POST le trimite în corpul cererii. Varianta b afirmă despre POST exact comportamentul lui GET, iar validarea pe server nu o face automat nicio metodă — rămâne responsabilitatea programatorului.
Deschide varianta interactivă — cu AI care îți explică
← Rețele de calculatoareSecuritatea informației și protecția datelor →
BiologieChimieEconomieFilosofieFizicăGeografieInformatică și TICIstorieLogică și argumentareMatematicăPsihologieLimba și literatura română