# Proiect Terrarium Partea 1: Introducere în HTML

> Sketchnote de [Tomomi Imura](https://twitter.com/girlie_mac)
HTML, sau Limbajul de Marcare HyperText, este fundația fiecărui site web pe care l-ai vizitat vreodată. Gândește-te la HTML ca la scheletul care oferă structură paginilor web – definește unde se află conținutul, cum este organizat și ce reprezintă fiecare parte. În timp ce CSS va "îmbrăca" mai târziu HTML-ul cu culori și layout-uri, iar JavaScript îi va adăuga interactivitate, HTML oferă structura esențială care face totul posibil.
În această lecție, vei crea structura HTML pentru o interfață virtuală de terrarium. Acest proiect practic te va învăța conceptele fundamentale ale HTML în timp ce construiești ceva vizual atractiv. Vei învăța cum să organizezi conținutul folosind elemente semantice, să lucrezi cu imagini și să creezi fundația pentru o aplicație web interactivă.
La finalul acestei lecții, vei avea o pagină HTML funcțională care afișează imagini cu plante organizate în coloane, gata pentru a fi stilizată în lecția următoare. Nu te îngrijora dacă arată simplu la început – exact asta ar trebui să facă HTML înainte ca CSS să adauge finisajele vizuale.
## Test înainte de lecție
[Test înainte de lecție](https://ff-quizzes.netlify.app/web/quiz/15)
> 📺 **Urmărește și învață**: Vizionează acest videoclip util de prezentare
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
## Configurarea proiectului
Înainte de a începe să scrii cod HTML, să configurăm un spațiu de lucru adecvat pentru proiectul terrarium. Crearea unei structuri de fișiere organizate de la început este un obicei esențial care te va ajuta pe parcursul călătoriei tale în dezvoltarea web.
### Sarcină: Creează structura proiectului
Vei crea un folder dedicat pentru proiectul terrarium și vei adăuga primul fișier HTML. Iată două abordări pe care le poți folosi:
**Opțiunea 1: Folosind Visual Studio Code**
1. Deschide Visual Studio Code
2. Click pe "File" → "Open Folder" sau folosește `Ctrl+K, Ctrl+O` (Windows/Linux) sau `Cmd+K, Cmd+O` (Mac)
3. Creează un folder nou numit `terrarium` și selectează-l
4. În panoul Explorer, click pe pictograma "New File"
5. Denumește fișierul `index.html`

**Opțiunea 2: Folosind comenzi în terminal**
```bash
mkdir terrarium
cd terrarium
touch index.html
code index.html
```
**Ce realizează aceste comenzi:**
- **Creează** un director nou numit `terrarium` pentru proiectul tău
- **Navighează** în directorul terrarium
- **Creează** un fișier gol `index.html`
- **Deschide** fișierul în Visual Studio Code pentru editare
> 💡 **Sfat Pro**: Numele fișierului `index.html` este special în dezvoltarea web. Când cineva vizitează un site web, browserele caută automat `index.html` ca pagină implicită de afișat. Asta înseamnă că un URL precum `https://mysite.com/projects/` va afișa automat fișierul `index.html` din folderul `projects` fără a fi nevoie să specifici numele fișierului în URL.
## Înțelegerea structurii documentului HTML
Fiecare document HTML urmează o structură specifică pe care browserele trebuie să o înțeleagă și să o afișeze corect. Gândește-te la această structură ca la o scrisoare formală – are elemente necesare într-o anumită ordine care ajută destinatarul (în acest caz, browserul) să proceseze conținutul corect.
Să începem prin a adăuga fundația esențială de care are nevoie fiecare document HTML.
### Declarația DOCTYPE și elementul rădăcină
Primele două linii ale oricărui fișier HTML servesc drept "introducere" a documentului către browser:
```html
```
**Ce face acest cod:**
- **Declară** tipul documentului ca HTML5 folosind ``
- **Creează** elementul rădăcină `` care va conține tot conținutul paginii
- **Stabilește** standardele moderne web pentru o redare corectă în browser
- **Asigură** afișarea consistentă pe diferite browsere și dispozitive
> 💡 **Sfat VS Code**: Treci cu mouse-ul peste orice etichetă HTML în VS Code pentru a vedea informații utile din MDN Web Docs, inclusiv exemple de utilizare și detalii despre compatibilitatea cu browserele.
> 📚 **Află mai multe**: Declarația DOCTYPE previne ca browserele să intre în "modul de erori", care era folosit pentru a susține site-uri web foarte vechi. Dezvoltarea web modernă folosește declarația simplă `` pentru a asigura [redarea conform standardelor](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode).
## Adăugarea metadatelor esențiale ale documentului
Secțiunea `
` a unui document HTML conține informații esențiale de care browserele și motoarele de căutare au nevoie, dar pe care vizitatorii nu le văd direct pe pagină. Gândește-te la aceasta ca la informațiile "din culise" care ajută pagina ta web să funcționeze corect și să apară corect pe diferite dispozitive și platforme.
Aceste metadate spun browserelor cum să afișeze pagina, ce codificare a caracterelor să folosească și cum să gestioneze diferite dimensiuni ale ecranului – toate esențiale pentru crearea unor pagini web profesionale și accesibile.
### Sarcină: Adaugă secțiunea Head a documentului
Inserează această secțiune `` între etichetele `` de deschidere și închidere:
```html
Welcome to my Virtual Terrarium
```
**Ce realizează fiecare element:**
- **Setează** titlul paginii care apare în filele browserului și în rezultatele căutării
- **Specifică** codificarea caracterelor UTF-8 pentru afișarea corectă a textului la nivel global
- **Asigură** compatibilitatea cu versiunile moderne ale Internet Explorer
- **Configurează** designul responsiv prin setarea viewport-ului să se potrivească cu lățimea dispozitivului
- **Controlează** nivelul inițial de zoom pentru a afișa conținutul la dimensiunea naturală
> 🤔 **Gândește-te la asta**: Ce s-ar întâmpla dacă ai seta o etichetă meta viewport astfel: ``? Aceasta ar forța pagina să fie mereu lată de 600 de pixeli, stricând designul responsiv! Află mai multe despre [configurarea corectă a viewport-ului](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
## Construirea corpului documentului
Elementul `` conține tot conținutul vizibil al paginii tale web – tot ceea ce utilizatorii vor vedea și cu care vor interacționa. În timp ce secțiunea `` oferă instrucțiuni browserului, secțiunea `` conține conținutul propriu-zis: text, imagini, butoane și alte elemente care creează interfața utilizatorului.
Să adăugăm structura corpului și să înțelegem cum funcționează etichetele HTML împreună pentru a crea conținut semnificativ.
### Înțelegerea structurii etichetelor HTML
HTML folosește etichete pereche pentru a defini elementele. Majoritatea etichetelor au o etichetă de deschidere, cum ar fi `
`, și o etichetă de închidere, cum ar fi `
`, cu conținut între ele: `
Bună, lume!
`. Acest lucru creează un element de paragraf care conține textul "Bună, lume!".
### Sarcină: Adaugă elementul Body
Actualizează fișierul HTML pentru a include elementul ``:
```html
Welcome to my Virtual Terrarium
```
**Ce oferă această structură completă:**
- **Stabilește** cadrul de bază al documentului HTML5
- **Include** metadate esențiale pentru redarea corectă în browser
- **Creează** un corp gol pregătit pentru conținutul vizibil
- **Urmează** cele mai bune practici în dezvoltarea web modernă
Acum ești pregătit să adaugi elementele vizibile ale terrarium-ului. Vom folosi elemente `
` ca containere pentru a organiza diferite secțiuni de conținut și elemente `` pentru a afișa imaginile plantelor.
### Lucrul cu imagini și containere de layout
Imaginile sunt speciale în HTML deoarece folosesc etichete "auto-închise". Spre deosebire de elementele precum `` care înconjoară conținutul, eticheta `` conține toate informațiile necesare în interiorul său, folosind atribute precum `src` pentru calea fișierului imaginii și `alt` pentru accesibilitate.
Înainte de a adăuga imagini în HTML, va trebui să organizezi fișierele proiectului corect, creând un folder de imagini și adăugând graficele plantelor.
**Mai întâi, configurează imaginile:**
1. Creează un folder numit `images` în interiorul folderului proiectului terrarium
2. Descarcă imaginile plantelor din [folderul soluție](../../../../3-terrarium/solution/images) (14 imagini cu plante în total)
3. Copiază toate imaginile plantelor în noul folder `images`
### Sarcină: Creează layout-ul de afișare a plantelor
Acum adaugă imaginile plantelor organizate în două coloane între etichetele ``:
```html
```
**Pas cu pas, iată ce se întâmplă în acest cod:**
- **Creează** un container principal al paginii cu `id="page"` pentru a conține tot conținutul
- **Stabilește** două containere de coloane: `left-container` și `right-container`
- **Organizează** 7 plante în coloana stângă și 7 plante în coloana dreaptă
- **Încadrează** fiecare imagine a plantei într-un div `plant-holder` pentru poziționare individuală
- **Aplică** nume de clase consistente pentru stilizare CSS în lecția următoare
- **Atribuie** ID-uri unice fiecărei imagini a plantei pentru interacțiune JavaScript ulterior
- **Include** căi corecte către folderul de imagini
> 🤔 **Reflectează**: Observă că toate imaginile au același text alt "plant". Acest lucru nu este ideal pentru accesibilitate. Utilizatorii de cititoare de ecran ar auzi "plant" repetat de 14 ori fără să știe ce plantă specifică arată fiecare imagine. Poți gândi texte alt mai descriptive pentru fiecare imagine?
> 📝 **Tipuri de elemente HTML**: Elementele `
` sunt "nivel bloc" și ocupă întreaga lățime, în timp ce elementele `` sunt "inline" și ocupă doar lățimea necesară. Ce crezi că s-ar întâmpla dacă ai schimba toate aceste etichete `
` în etichete ``?
Cu acest marcaj adăugat, plantele vor apărea pe ecran, deși nu vor arăta finisate încă – pentru asta este CSS în lecția următoare! Deocamdată, ai o fundație HTML solidă care organizează corect conținutul și urmează cele mai bune practici de accesibilitate.
## Utilizarea HTML semantic pentru accesibilitate
HTML semantic înseamnă alegerea elementelor HTML pe baza semnificației și scopului lor, nu doar pe baza aspectului. Când folosești marcaj semantic, comunici structura și semnificația conținutului tău către browsere, motoare de căutare și tehnologii asistive precum cititoarele de ecran.
Această abordare face ca site-urile tale să fie mai accesibile utilizatorilor cu dizabilități și ajută motoarele de căutare să înțeleagă mai bine conținutul tău. Este un principiu fundamental al dezvoltării web moderne care creează experiențe mai bune pentru toată lumea.
### Adăugarea unui titlu semantic al paginii
Să adăugăm un titlu adecvat paginii terrarium. Inserează această linie imediat după eticheta de deschidere ``:
```html
My Terrarium
```
**De ce contează marcajul semantic:**
- **Ajută** cititoarele de ecran să navigheze și să înțeleagă structura paginii
- **Îmbunătățește** optimizarea pentru motoarele de căutare (SEO) prin clarificarea ierarhiei conținutului
- **Sporește** accesibilitatea pentru utilizatorii cu deficiențe de vedere sau diferențe cognitive
- **Creează** experiențe mai bune pentru utilizatori pe toate dispozitivele și platformele
- **Urmează** standardele web și cele mai bune practici pentru dezvoltarea profesională
**Exemple de alegeri semantice vs. non-semantice:**
| Scop | ✅ Alegere semantică | ❌ Alegere non-semantică |
|------|---------------------|-------------------------|
| Titlu principal | `
` |
> 🎥 **Vezi în acțiune**: Urmărește [cum interacționează cititoarele de ecran cu paginile web](https://www.youtube.com/watch?v=OUDV1gqs9GA) pentru a înțelege de ce marcajul semantic este crucial pentru accesibilitate. Observă cum structura corectă HTML ajută utilizatorii să navigheze eficient.
## Crearea containerului Terrarium
Acum să adăugăm structura HTML pentru terrarium-ul propriu-zis – recipientul de sticlă în care vor fi plasate plantele. Această secțiune demonstrează un concept important: HTML oferă structură, dar fără stilizare CSS, aceste elemente nu vor fi vizibile încă.
Marcajul terrarium-ului folosește nume de clase descriptive care vor face stilizarea CSS intuitivă și ușor de întreținut în lecția următoare.
### Sarcină: Adaugă structura Terrarium-ului
Inserează acest marcaj deasupra ultimei etichete `
` (înainte de eticheta de închidere a containerului paginii):
```html
```
**Înțelegerea acestei structuri de terrarium:**
- **Creează** un container principal pentru terrarium cu un ID unic pentru stilizare
- **Definește** elemente separate pentru fiecare componentă vizuală (partea de sus, pereți, pământ, fund)
- **Include** elemente imbricate pentru efecte de reflexie a sticlei (elemente lucioase)
- **Folosește** nume de clase descriptive care indică clar scopul fiecărui element
- **Pregătește** structura pentru stilizarea CSS care va crea aspectul de terrarium din sticlă
> 🤔 **Observă ceva?**: Chiar dacă ai adăugat acest marcaj, nu vezi nimic nou pe pagină! Acest lucru ilustrează perfect cum HTML oferă structură, în timp ce CSS oferă aspect. Aceste etichete `
` există, dar nu au încă stilizare vizuală – asta urmează în lecția următoare!
---
## Provocarea Agentului GitHub Copilot
Folosește modul Agent pentru a finaliza următoarea provocare:
**Descriere:** Creează o structură HTML semantică pentru o secțiune de ghid de îngrijire a plantelor care ar putea fi adăugată la proiectul terrarium.
**Prompt:** Creează o secțiune HTML semantică care să includă un titlu principal "Ghid de Îngrijire a Plantelor", trei subsecțiuni cu titluri "Udare", "Cerințe de Lumină" și "Îngrijirea Solului", fiecare conținând un paragraf cu informații despre îngrijirea plantelor. Folosește taguri HTML semantice adecvate precum ``, `
`, `
` și `
` pentru a structura conținutul corespunzător.
Află mai multe despre [modul agent](https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode) aici.
## Provocarea Istoriei HTML
**Învățând despre evoluția web-ului**
HTML a evoluat semnificativ de când Tim Berners-Lee a creat primul browser web la CERN în 1990. Unele taguri mai vechi, precum `