# Progetto Terrario Parte 1: Introduzione a HTML ```mermaid journey title Your HTML Learning Journey section Foundation Create HTML file: 3: Student Add DOCTYPE: 4: Student Structure document: 5: Student section Content Add metadata: 4: Student Include images: 5: Student Organize layout: 5: Student section Semantics Use proper tags: 4: Student Enhance accessibility: 5: Student Build terrarium: 5: Student ``` ![Introduzione a HTML](../../../../translated_images/webdev101-html.4389c2067af68e98280c1bde52b6c6269f399eaae3659b7c846018d8a7b0bbd9.it.png) > Sketchnote di [Tomomi Imura](https://twitter.com/girlie_mac) HTML, o HyperText Markup Language, è la base di ogni sito web che tu abbia mai visitato. Pensa a HTML come allo scheletro che dà struttura alle pagine web – definisce dove va il contenuto, come è organizzato e cosa rappresenta ogni elemento. Mentre CSS "vestirà" il tuo HTML con colori e layout, e JavaScript lo animerà con interattività, HTML fornisce la struttura essenziale che rende tutto il resto possibile. In questa lezione, creerai la struttura HTML per un'interfaccia di terrario virtuale. Questo progetto pratico ti insegnerà i concetti fondamentali di HTML mentre costruisci qualcosa di visivamente accattivante. Imparerai come organizzare il contenuto utilizzando elementi semantici, lavorare con immagini e creare la base per un'applicazione web interattiva. Alla fine di questa lezione, avrai una pagina HTML funzionante che mostra immagini di piante organizzate in colonne, pronta per essere stilizzata nella prossima lezione. Non preoccuparti se all'inizio sembra semplice – è esattamente ciò che HTML dovrebbe fare prima che CSS aggiunga il tocco visivo. ```mermaid mindmap root((HTML Fundamentals)) Structure DOCTYPE Declaration HTML Element Head Section Body Content Elements Tags & Attributes Self-closing Tags Nested Elements Block vs Inline Content Text Elements Images Containers (div) Lists Semantics Meaningful Tags Accessibility Screen Readers SEO Benefits Best Practices Proper Nesting Valid Markup Descriptive Alt Text Organized Structure ``` ## Quiz Pre-Lezione [Quiz pre-lezione](https://ff-quizzes.netlify.app/web/quiz/15) > 📺 **Guarda e Impara**: Dai un'occhiata a questo utile video introduttivo > > [![Video Fondamenti di HTML](https://img.youtube.com/vi/1TvxJKBzhyQ/0.jpg)](https://www.youtube.com/watch?v=1TvxJKBzhyQ) ## Configurare il Progetto Prima di immergerci nel codice HTML, configuriamo uno spazio di lavoro adeguato per il tuo progetto terrario. Creare una struttura di file organizzata fin dall'inizio è un'abitudine cruciale che ti servirà durante il tuo percorso di sviluppo web. ### Compito: Crea la Struttura del Progetto Creerai una cartella dedicata per il tuo progetto terrario e aggiungerai il tuo primo file HTML. Ecco due approcci che puoi utilizzare: **Opzione 1: Usare Visual Studio Code** 1. Apri Visual Studio Code 2. Clicca su "File" → "Apri Cartella" o usa `Ctrl+K, Ctrl+O` (Windows/Linux) o `Cmd+K, Cmd+O` (Mac) 3. Crea una nuova cartella chiamata `terrarium` e selezionala 4. Nel pannello Esplora, clicca sull'icona "Nuovo File" 5. Nomina il file `index.html` ![Esplora di VS Code che mostra la creazione di un nuovo file](../../../../translated_images/vs-code-index.e2986cf919471eb984a0afef231380c8b132b000635105f2397bd2754d1b689c.it.png) **Opzione 2: Usare Comandi del Terminale** ```bash mkdir terrarium cd terrarium touch index.html code index.html ``` **Ecco cosa fanno questi comandi:** - **Creano** una nuova directory chiamata `terrarium` per il tuo progetto - **Navigano** nella directory del terrario - **Creano** un file vuoto `index.html` - **Aprono** il file in Visual Studio Code per la modifica > 💡 **Suggerimento Pro**: Il nome del file `index.html` è speciale nello sviluppo web. Quando qualcuno visita un sito web, i browser cercano automaticamente `index.html` come pagina predefinita da visualizzare. Questo significa che un URL come `https://mysite.com/projects/` servirà automaticamente il file `index.html` dalla cartella `projects` senza bisogno di specificare il nome del file nell'URL. ## Comprendere la Struttura del Documento HTML Ogni documento HTML segue una struttura specifica che i browser devono comprendere e visualizzare correttamente. Pensa a questa struttura come a una lettera formale – ha elementi richiesti in un ordine particolare che aiutano il destinatario (in questo caso, il browser) a elaborare correttamente il contenuto. ```mermaid flowchart TD A[""] --> B[""] B --> C[""] C --> D[""] C --> E["<meta charset>"] C --> F["<meta viewport>"] B --> G["<body>"] G --> H["<h1> Heading"] G --> I["<div> Containers"] G --> J["<img> Images"] style A fill:#e1f5fe style B fill:#f3e5f5 style C fill:#fff3e0 style G fill:#e8f5e8 ``` Iniziamo aggiungendo la base essenziale che ogni documento HTML necessita. ### La Dichiarazione DOCTYPE e l'Elemento Radice Le prime due righe di qualsiasi file HTML servono come "introduzione" del documento al browser: ```html <!DOCTYPE html> <html></html> ``` **Comprendere cosa fa questo codice:** - **Dichiara** il tipo di documento come HTML5 usando `<!DOCTYPE html>` - **Crea** l'elemento radice `<html>` che conterrà tutto il contenuto della pagina - **Stabilisce** standard web moderni per un rendering corretto del browser - **Garantisce** una visualizzazione coerente su diversi browser e dispositivi > 💡 **Suggerimento VS Code**: Passa il mouse su qualsiasi tag HTML in VS Code per vedere informazioni utili dai MDN Web Docs, inclusi esempi di utilizzo e dettagli sulla compatibilità dei browser. > 📚 **Per Saperne di Più**: La dichiarazione DOCTYPE impedisce ai browser di entrare in "quirks mode", che veniva utilizzata per supportare siti web molto vecchi. Lo sviluppo web moderno utilizza la semplice dichiarazione `<!DOCTYPE html>` per garantire un [rendering conforme agli standard](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). ### 🔄 **Verifica Pedagogica** **Pausa e Riflettici**: Prima di continuare, assicurati di comprendere: - ✅ Perché ogni documento HTML necessita di una dichiarazione DOCTYPE - ✅ Cosa contiene l'elemento radice `<html>` - ✅ Come questa struttura aiuta i browser a rendere correttamente le pagine **Test Rapido**: Riesci a spiegare con parole tue cosa significa "rendering conforme agli standard"? ## Aggiungere Metadati Essenziali al Documento La sezione `<head>` di un documento HTML contiene informazioni cruciali che i browser e i motori di ricerca necessitano, ma che i visitatori non vedono direttamente sulla pagina. Pensa a questa sezione come alle "informazioni dietro le quinte" che aiutano la tua pagina web a funzionare correttamente e ad apparire correttamente su diversi dispositivi e piattaforme. Questi metadati dicono ai browser come visualizzare la tua pagina, quale codifica dei caratteri utilizzare e come gestire diverse dimensioni dello schermo – tutto essenziale per creare pagine web professionali e accessibili. ### Compito: Aggiungi la Sezione Head del Documento Inserisci questa sezione `<head>` tra i tag di apertura e chiusura `<html>`: ```html <head> <title>Welcome to my Virtual Terrarium ``` **Analisi di ciò che ogni elemento realizza:** - **Imposta** il titolo della pagina che appare nelle schede del browser e nei risultati di ricerca - **Specifica** la codifica dei caratteri UTF-8 per una corretta visualizzazione del testo in tutto il mondo - **Garantisce** la compatibilità con le versioni moderne di Internet Explorer - **Configura** il design responsivo impostando il viewport per adattarsi alla larghezza del dispositivo - **Controlla** il livello di zoom iniziale per visualizzare il contenuto a dimensioni naturali > 🤔 **Riflettici**: Cosa accadrebbe se impostassi un tag meta viewport come questo: ``? Questo forzerebbe la pagina a essere sempre larga 600 pixel, compromettendo il design responsivo! Scopri di più sulla [configurazione corretta del viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag). ## Costruire il Corpo del Documento L'elemento `` contiene tutto il contenuto visibile della tua pagina web – tutto ciò che gli utenti vedranno e con cui interagiranno. Mentre la sezione `` forniva istruzioni al browser, la sezione `` contiene il contenuto effettivo: testo, immagini, pulsanti e altri elementi che creano la tua interfaccia utente. Aggiungiamo la struttura del corpo e comprendiamo come i tag HTML lavorano insieme per creare contenuti significativi. ### Comprendere la Struttura dei Tag HTML HTML utilizza tag accoppiati per definire gli elementi. La maggior parte dei tag ha un tag di apertura come `

` e un tag di chiusura come `

`, con il contenuto nel mezzo: `

Ciao, mondo!

`. Questo crea un elemento paragrafo contenente il testo "Ciao, mondo!". ### Compito: Aggiungi l'Elemento Body Aggiorna il tuo file HTML per includere l'elemento ``: ```html Welcome to my Virtual Terrarium ``` **Ecco cosa fornisce questa struttura completa:** - **Stabilisce** il framework di base del documento HTML5 - **Include** metadati essenziali per un rendering corretto del browser - **Crea** un corpo vuoto pronto per il tuo contenuto visibile - **Segue** le migliori pratiche dello sviluppo web moderno Ora sei pronto per aggiungere gli elementi visibili del tuo terrario. Utilizzeremo elementi `
` come contenitori per organizzare diverse sezioni di contenuto e `` per visualizzare le immagini delle piante. ### Lavorare con Immagini e Contenitori di Layout Le immagini sono speciali in HTML perché utilizzano tag "auto-chiudenti". A differenza di elementi come `

` che avvolgono il contenuto, il tag `` contiene tutte le informazioni necessarie all'interno del tag stesso utilizzando attributi come `src` per il percorso del file immagine e `alt` per l'accessibilità. Prima di aggiungere immagini al tuo HTML, dovrai organizzare correttamente i file del progetto creando una cartella immagini e aggiungendo le grafiche delle piante. **Prima, configura le tue immagini:** 1. Crea una cartella chiamata `images` all'interno della cartella del progetto terrario 2. Scarica le immagini delle piante dalla [cartella delle soluzioni](../../../../3-terrarium/solution/images) (14 immagini di piante in totale) 3. Copia tutte le immagini delle piante nella tua nuova cartella `images` ### Compito: Crea il Layout di Visualizzazione delle Piante Ora aggiungi le immagini delle piante organizzate in due colonne tra i tuoi tag ``: ```html
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
plant
``` **Passo dopo passo, ecco cosa accade in questo codice:** - **Crea** un contenitore principale della pagina con `id="page"` per contenere tutto il contenuto - **Stabilisce** due contenitori di colonne: `left-container` e `right-container` - **Organizza** 7 piante nella colonna sinistra e 7 piante nella colonna destra - **Avvolge** ogni immagine di pianta in un div `plant-holder` per il posizionamento individuale - **Applica** nomi di classi coerenti per la stilizzazione CSS nella prossima lezione - **Assegna** ID univoci a ogni immagine di pianta per l'interazione con JavaScript in seguito - **Include** percorsi di file corretti che puntano alla cartella immagini > 🤔 **Considera Questo**: Nota che tutte le immagini attualmente hanno lo stesso testo alternativo "pianta". Questo non è ideale per l'accessibilità. Gli utenti di lettori di schermo sentirebbero "pianta" ripetuto 14 volte senza sapere quale specifica pianta mostra ogni immagine. Riesci a pensare a testi alternativi migliori e più descrittivi per ogni immagine? > 📝 **Tipi di Elementi HTML**: Gli elementi `
` sono "a livello di blocco" e occupano tutta la larghezza, mentre gli elementi `` sono "in linea" e occupano solo la larghezza necessaria. Cosa pensi accadrebbe se cambiassi tutti questi tag `
` in tag ``? ### 🔄 **Verifica Pedagogica** **Comprensione della Struttura**: Prenditi un momento per rivedere la tua struttura HTML: - ✅ Riesci a identificare i contenitori principali nel tuo layout? - ✅ Capisci perché ogni immagine ha un ID univoco? - ✅ Come descriveresti lo scopo dei div `plant-holder`? **Ispezione Visiva**: Apri il tuo file HTML in un browser. Dovresti vedere: - Un elenco di immagini di piante - Immagini organizzate in due colonne - Layout semplice e non stilizzato **Ricorda**: Questo aspetto semplice è esattamente ciò che HTML dovrebbe avere prima della stilizzazione CSS! Con questo markup aggiunto, le piante appariranno sullo schermo, anche se non sembreranno ancora rifinite – per questo ci sarà il CSS nella prossima lezione! Per ora, hai una solida base HTML che organizza correttamente il tuo contenuto e segue le migliori pratiche di accessibilità. ## Usare HTML Semantico per l'Accessibilità HTML semantico significa scegliere gli elementi HTML in base al loro significato e scopo, non solo al loro aspetto. Quando utilizzi un markup semantico, stai comunicando la struttura e il significato del tuo contenuto ai browser, ai motori di ricerca e alle tecnologie assistive come i lettori di schermo. ```mermaid flowchart TD A[Need to add content?] --> B{What type?} B -->|Main heading| C["

"] B -->|Subheading| D["

,

, etc."] B -->|Paragraph| E["

"] B -->|List| F["

    ,
      "] B -->|Navigation| G["