Lezione 1 di 100%
Prova tu svolti: 0/10
Inserisci classe e n. registro. Usa Salva/Ricarica per i tuoi esercizi. Genera il codice una sola volta a fine lavoro.

Impara HTML da Zero

Un percorso interattivo passo dopo passo per creare le tue prime pagine web

10 Lezioni · Editor in ogni lezione · Quiz Interattivi
📖 Lezione 1

Cos'è HTML?

HTML (HyperText Markup Language) è il linguaggio fondamentale del web. Ogni pagina web che visiti è costruita con HTML. Non è un linguaggio di programmazione, ma un linguaggio di markup: descrive la struttura e il contenuto di una pagina.

💡 Perché imparare HTML?
HTML è la base di tutto: senza HTML non esisterebbero siti web, applicazioni web, o contenuti online. È il primo passo per diventare sviluppatori web.

Come funziona il browser

Quando visiti un sito web, il browser (Chrome, Firefox, Safari...) riceve un file HTML e lo interpreta per mostrarti la pagina. Il browser legge i tag HTML e li trasforma in elementi visibili.

Il primo esempio

Ogni pagina HTML inizia con una struttura di base. Ecco il codice più semplice possibile:

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>La mia prima pagina</title>
</head>
<body>
    <h1>Ciao, Mondo!</h1>
    <p>Questa è la mia prima pagina web.</p>
</body>
</html>
Ciao, Mondo!

Questa è la mia prima pagina web.

🏆 Consiglio: Per creare una pagina HTML, crea un file con estensione .html (es. index.html) e aprilo nel browser.

✏️ Prova tu

Dentro il <body>, scrivi un titolo <h1> con il tuo nome e un paragrafo <p> di presentazione. Poi premi Esegui.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 1
Cosa sta per HTML?
AHome Tool Markup Language
BHyperText Markup Language
CHyper Transfer Markup Language
DHome Text Markup Language

📋 Riepilogo Lezione 1

  • HTML sta per HyperText Markup Language
  • È il linguaggio fondamentale per costruire pagine web
  • Non è un linguaggio di programmazione, ma di markup
  • Il browser legge il codice HTML e mostra la pagina
  • Ogni pagina inizia con <!DOCTYPE html>
📖 Lezione 2

Struttura Base di una Pagina HTML

Ogni pagina HTML ha una struttura precisa con area head (intestazione) e body (corpo). Vediamo nel dettaglio ogni elemento.

L'head: le informazioni nascoste

L'head contiene informazioni che il browser usa ma che non vengono mostrate direttamente nella pagina (metadati, titolo, collegamento a fogli di stile, ecc.).

HTML — Solo head
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Titolo della Pagina</title>
</head>

Tag importanti nell'head

Il body: il contenuto visibile

Tutto ciò che l'utente vede e con cui interagisce sta dentro il <body>.

Esempio completo

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Il mio Sito</title>
</head>
<body>
    <h1>Benvenuto!</h1>
    <p>Questa è la struttura base di una pagina HTML.</p>
</body>
</html>

✏️ Prova tu

Aggiungi nel body un titolo <h1> e un paragrafo <p> che descrivano la tua pagina. Non copiare l'esempio: inventa tu i testi.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 2
Dove va il contenuto visibile della pagina?
ANell'head
BNel body
CNel DOCTYPE
DNel meta

📋 Riepilogo Lezione 2

  • Ogni pagina ha un <head> e un <body>
  • L'head contiene metadati, titolo, charset
  • Il body contiene tutto il contenuto visibile
  • Il tag <!DOCTYPE html> va all'inizio del file
  • L'attributo lang="it" specifica la lingua
📖 Lezione 3

Testo e Formattazione

HTML offre molti tag per formattare il testo, dai titoli ai paragrafi, dal grassetto al corsivo.

Titoli (h1 - h6)

HTML ha 6 livelli di titoli, da <h1> (il più grande) a <h6> (il più piccolo).

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Titoli</title></head>
<body>
    <h1>Titolo Principale</h1>
    <h2>Sottotitolo</h2>
    <h3>Titolo di Terzo Livello</h3>
    <h4>Titolo di Quarto Livello</h4>
    <h5>Titolo di Quinto Livello</h5>
    <h6>Titolo di Sesto Livello</h6>
</body></html>
Titolo Principale
Sottotitolo
Titolo di Terzo Livello
Titolo di Quarto Livello
Titolo di Quinto Livello
Titolo di Sesto Livello

Paragrafi e interruzioni di riga

I paragrafi <p> creano blocchi separati di testo con spaziatura verticale automatica. Per andare a capo all'interno dello stesso paragrafo (ad esempio per una poesia o un recapito) si usa il tag auto-chiuso <br>.

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Paragrafi</title></head>
<body>
    <p>Questo è il primo paragrafo completo.</p>
    <p>Questo è un secondo paragrafo separato.</p>
    <p>Prima riga nello stesso paragrafo,<br>seconda riga dopo l'interruzione.</p>
</body></html>

Formattazione del testo

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Formattazione</title></head>
<body>
    <p><strong>Testo in grassetto</strong> e <em>testo in corsivo</em>.</p>
    <p><mark>Testo evidenziato</mark> e <del>testo cancellato</del>.</p>
    <p><code>codice inline</code> e <sub>testo basso</sub>, <sup>testo alto</sup>.</p>
</body></html>

Testo in grassetto e testo in corsivo.

Testo evidenziato e testo cancellato.

codice inline e testo basso, testo alto.

✏️ Prova tu

Scrivi un titolo <h1>, un sottotitolo <h2> e un paragrafo che usi almeno <strong> e <em>.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 3
Quale tag crea un titolo di primo livello?
A<title>
B<h1>
C<heading>
D<head>

📋 Riepilogo Lezione 3

  • I titoli vanno da <h1> a <h6>
  • I paragrafi si creano con <p>
  • <br> crea un'interruzione di riga
  • <strong> = grassetto, <em> = corsivo
  • Usa <mark> per evidenziare, <del> per cancellare
📖 Lezione 4

Link e Immagini

I link e le immagini sono due degli elementi più importanti del web. Senza link non ci sarebbe la navigazione, senza immagini il web sarebbe molto noioso!

I Link (Ancore)

Il tag <a> (anchor) crea collegamenti ad altre pagine o risorse.

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Link</title></head>
<body>
    <!-- Link esterno -->
    <a href="https://www.google.com">Vai a Google</a>

    <!-- Link interno -->
    <a href="contatti.html">Pagina Contatti</a>

    <!-- Apri in nuova scheda -->
    <a href="https://www.google.com" target="_blank">Google (nuova scheda)</a>

    <!-- Ancora interna -->
    <a href="#sezione2">Vai alla Sezione 2</a>
</body></html>

Le Immagini

Il tag <img> inserisce un'immagine. Nota: è un tag auto-chiuso (non ha tag di chiusura).

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Immagini</title></head>
<body>
    <!-- Immagine semplice -->
    <img src="foto.jpg" alt="Descrizione della foto">

    <!-- Con dimensioni -->
    <img src="logo.png" alt="Logo del sito" width="200" height="100">

    <!-- Con percorso assoluto -->
    <img src="https://example.com/foto.jpg" alt="Foto da web">
</body></html>
💡 L'attributo alt è importante!
Descrive l'immagine per chi usa lettori schermo (accessibilità) e viene mostrata se l'immagine non si carica.

✏️ Prova tu

Crea una pagina con un link esterno (http:// o https://) e un'immagine <img> con attributo alt (puoi usare un URL pubblico come sorgente).

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 4
Quale attributo specifica il percorso dell'immagine?
Ahref
Bsrc
Clink
Dpath

📋 Riepilogo Lezione 4

  • I link si creano con <a href="...">
  • target="_blank" apre il link in una nuova scheda
  • Le immagini usano <img src="..." alt="...">
  • L'attributo alt è fondamentale per l'accessibilità
  • <img> è un tag auto-chiuso (senza </img>)
📖 Lezione 5

Liste

HTML supporta due tipi di liste: ordinate (con numeri) e non ordinate (con pallini).

Lista non ordinata (ul)

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Lista non ordinata</title></head>
<body>
    <ul>
        <li>Mela</li>
        <li>Pera</li>
        <li>Banana</li>
    </ul>
</body></html>
  • Mela
  • Pera
  • Banana

Lista ordinata (ol)

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Lista ordinata</title></head>
<body>
    <ol>
        <li>Primo passo</li>
        <li>Secondo passo</li>
        <li>Terzo passo</li>
    </ol>
</body></html>
  1. Primo passo
  2. Secondo passo
  3. Terzo passo

Liste annidate e descrittive

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Liste Avanzate</title></head>
<body>
    <!-- Lista annidata -->
    <ul>
        <li>Frutta<ul>
            <li>Mela</li>
            <li>Pera</li>
        </ul></li>
        <li>Verdura</li>
    </ul>

    <!-- Lista descrittiva -->
    <dl>
        <dt>HTML</dt>
        <dd>Linguaggio di markup per pagine web</dd>
        <dt>CSS</dt>
        <dd>Linguaggio per lo stile delle pagine</dd>
    </dl>
</body></html>

✏️ Prova tu

Crea una lista non ordinata dei tuoi hobby e una lista ordinata di 3 cose da fare oggi.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 5
Quale tag crea una lista numerata?
A<ul>
B<ol>
C<li>
D<list>

📋 Riepilogo Lezione 5

  • <ul> = lista non ordinata (pallini)
  • <ol> = lista ordinata (numeri)
  • <li> = ogni elemento della lista
  • Le liste possono essere annidate
  • <dl> = lista descrittiva (termine + descrizione)
📖 Lezione 6

Tabelle

Le tabelle organizzano i dati in righe e colonne. Sono utili per presentare informazioni strutturate.

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Tabelle</title></head>
<body>
    <table>
        <thead>
            <tr>
                <th>Nome</th>
                <th>Cognome</th>
                <th>Età</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Mario</td>
                <td>Rossi</td>
                <td>25</td>
            </tr>
            <tr>
                <td>Luca</td>
                <td>Bianchi</td>
                <td>30</td>
            </tr>
        </tbody>
    </table>
</body></html>
NomeCognomeEtà
MarioRossi25
LucaBianchi30
💡 Struttura della tabella:
<table> → contenitore principale
<thead> → intestazione
<tbody> → corpo con i dati
<tr> → riga
<th> → cella di intestazione (grassetto automatico)
<td> → cella dati

✏️ Prova tu

Crea una tabella con <thead> e <tbody>, almeno 2 colonne e 2 righe di dati (es. materie e voti).

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 6
Quale tag crea una riga in una tabella?
A<td>
B<tr>
C<th>
D<row>

📋 Riepilogo Lezione 6

  • <table> è il contenitore della tabella
  • <tr> crea una riga
  • <th> è una cella di intestazione (grassetto)
  • <td> è una cella dati normale
  • Usa <thead> e <tbody> per organizzare
📖 Lezione 7

Formulari HTML

I formulari permettono agli utenti di inviare dati al server. Sono fondamentali per login, contatti, ricerca, ecc.

Struttura base di un form

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Form</title></head>
<body>
    <form action="/invia" method="POST">
        <label for="nome">Nome:</label>
        <input type="text" id="nome" name="nome" placeholder="Inserisci il tuo nome">

        <label for="email">Email:</label>
        <input type="email" id="email" name="email">

        <label for="messaggio">Messaggio:</label>
        <textarea id="messaggio" name="messaggio" rows="5"></textarea>

        <button type="submit">Invia</button>
    </form>
</body></html>

Tipi di input

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Input</title></head>
<body>
    <!-- Testo -->
    <input type="text" name="nome">

    <!-- Password -->
    <input type="password" name="pwd">

    <!-- Email -->
    <input type="email" name="email">

    <!-- Numero -->
    <input type="number" name="eta" min="0" max="120">

    <!-- Checkbox -->
    <input type="checkbox" name="accetto" id="accetto">
    <label for="accetto">Accetto i termini</label>

    <!-- Radio con etichette collegate -->
    <label><input type="radio" name="genere" value="M"> Maschio</label>
    <label><input type="radio" name="genere" value="F"> Femmina</label>

    <!-- Select (menu a tendina) -->
    <select name="citta">
        <option value="roma">Roma</option>
        <option value="milano">Milano</option>
    </select>

    <!-- Bottone -->
    <button type="submit">Invia</button>
</body></html>

✏️ Prova tu

Crea un piccolo form di contatto con almeno una <label>, un input nome (type="text"), un input email (type="email") e un bottone di invio.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 7
Quale attributo definisce dove vengono inviati i dati del form?
Amethod
Baction
Csend
Dsubmit

📋 Riepilogo Lezione 7

  • <form> contiene tutti i campi
  • action specifica dove inviare i dati
  • method specifica il metodo (GET/POST)
  • <input> crea campi di input (text, email, password...)
  • <textarea> crea un campo testo multi-linea
  • <label> etichetta associata al campo (accessibilità)
📖 Lezione 8

Semantic HTML

I tag semantici danno un significato al contenuto, non solo un aspetto visivo. Migliorano l'accessibilità, il SEO e la manutenibilità del codice.

Perché usare tag semantici?

Tag semantici principali

HTML — Glossario tag
<header>Intestazione della pagina o sezione</header>
<nav>Navigazione</nav>
<main>Contenuto principale (uno solo per pagina)</main>
<article>Contenuto autonomo (articolo, post, ecc.)</article>
<section>Sezione tematica</section>
<aside>Contenuto laterale (sidebar)</aside>
<footer>Piè di pagina</footer>

Esempio completo

HTML — Pagina Completa
<!DOCTYPE html>
<html lang="it">
<head><meta charset="UTF-8"><title>Sito Semantico</title></head>
<body>
    <header>
        <h1>Il Mio Blog</h1>
        <nav>
            <a href="#">Home</a> |
            <a href="#">Articoli</a> |
            <a href="#">Contatti</a>
        </nav>
    </header>

    <main>
        <article>
            <h2>Titolo Articolo</h2>
            <p>Contenuto dell'articolo...</p>
        </article>

        <aside>
            <h3>Articoli Correlati</h3>
            <ul>
                <li>Altro articolo 1</li>
                <li>Altro articolo 2</li>
            </ul>
        </aside>
    </main>

    <footer>
        <p>&copy; 2026 Il Mio Blog</p>
    </footer>
</body></html>

✏️ Prova tu

Costruisci la struttura di una pagina con <header>, <main> (con un <article> dentro) e <footer>. Aggiungi un po' di testo visibile.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 8
Quale tag semantico contiene il contenuto principale della pagina?
A<div>
B<main>
C<body>
D<content>

📋 Riepilogo Lezione 8

  • <header> = intestazione
  • <nav> = navigazione
  • <main> = contenuto principale
  • <article> = contenuto autonomo (articolo, post, ecc.)
  • <section> = sezione tematica
  • <aside> = contenuto laterale (sidebar)
  • <footer> = piè di pagina
📖 Lezione 9

CSS di Base

CSS (Cascading Style Sheets) è il linguaggio che dà stile alle pagine HTML. Con CSS puoi cambiare colori, font, layout e molto altro.

Come collegare CSS ad HTML

HTML — Metodi CSS
<!-- Metodo 1: File esterno (consigliato) -->
<link rel="stylesheet" href="style.css">

<!-- Metodo 2: Dentro il tag style -->
<style>
    body { background-color: #f0f0f0; }
</style>

<!-- Metodo 3: Inline (sconsigliato) -->
<p style="color: red;">Testo rosso</p>

Selettori e proprietà fondamentali

CSS
/* Selettore per elemento */
h1 {
    color: #2563eb;
    font-size: 2rem;
    text-align: center;
}

/* Selettore per classe */
.card {
    background: white;
    border-radius: 12px;
    padding: 20px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

/* Selettore per ID */
#header {
    background: linear-gradient(135deg, #2563eb, #7c3aed);
    color: white;
    padding: 20px;
}
HTML — Pagina Completa con CSS
<!DOCTYPE html>
<html lang="it">
<head>
    <meta charset="UTF-8">
    <title>CSS Esempio</title>
    <style>
        /* Selettore per elemento */
        h1 {
            color: #2563eb;
            font-size: 2rem;
            text-align: center;
        }
        /* Selettore per classe */
        .card {
            background: white;
            border-radius: 12px;
            padding: 20px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        /* Selettore per ID */
        #header {
            background: linear-gradient(135deg, #2563eb, #7c3aed);
            color: white;
            padding: 20px;
        }
    </style>
</head>
<body>
    <div class="card">
        <h1>Titolo con CSS!</h1>
        <p>Questo contenuto è stilizzato con CSS.</p>
    </div>
</body></html>

Box Model

Ogni elemento HTML è un "contenitore" con: contenuto, padding (spazio interno), border (bordo) e margin (spazio esterno).

MARGIN (spazio esterno)
BORDER (bordo)
PADDING (spazio interno)
CONTENT (Contenuto)

✏️ Prova tu

Nell'<head> aggiungi un blocco <style> e nel <body> un titolo e un paragrafo da stilizzare (colore, allineamento, padding).

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🧠 Quiz - Lezione 9
Quale metodo di collegamento CSS è il più consigliato?
AInline (attributo style)
BInterno (tag style)
CFile esterno (link)
DSono tutti uguali

📋 Riepilogo Lezione 9

  • CSS dà stile alle pagine HTML
  • Il metodo file esterno (<link>) è il più consigliato
  • I selettori targettizzano gli elementi da stilizzare
  • Ogni elemento ha il Box Model: content, padding, border, margin
  • Le classi (.) servono per riutilizzare stili
  • Gli ID (#) servono per elementi unici
📖 Lezione 10

Progetto Finale: Crea il Tuo Sito!

Congratulazioni! Hai completato tutte le lezioni. Ora è il momento di mettere in pratica tutto ciò che hai imparato creando un sito web completo.

🎯 Compito: Crea una pagina personale

Crea un file index.html che includa:

✏️ Prova tu

Usa la checklist qui sopra: costruisci da zero la pagina personale. Nell'editor trovi solo lo scheletro HTML (bianco): tutto il resto lo scrivi tu.

Struttura base (bianco) Il tuo codice in head e body (blu)Digita < · attributi · & · snippet · Ctrl+Space · chiusura tag automatica
🏆 Suggerimenti per il progetto:
• Usa i tag semantici visti nella Lezione 8
• Metti il CSS in un <style> dentro l'<head> (zona blu sopra </head>)
• Aggiungi un'immagine reale con <img> e alt
• Personalizza i colori e i font
• Rendi il sito responsive con viewport
• Prova a creare una seconda pagina e collegala con i link

🚀 Cosa fare dopo?

🧠 Quiz Finale
Nel creare un sito web completo e semantico, quale tag racchiude la barra o il blocco dei link di navigazione?
A<header>
B<nav>
C<aside>
D<section>

📋 Riepilogo Completo del Manuale

  • Lezione 1: Cos'è HTML e come funziona
  • Lezione 2: Struttura base (DOCTYPE, head, body)
  • Lezione 3: Testo, titoli e formattazione
  • Lezione 4: Link e immagini
  • Lezione 5: Liste ordinate e non ordinate
  • Lezione 6: Tabelle per dati strutturati
  • Lezione 7: Formulari per raccogliere dati
  • Lezione 8: Semantic HTML per accessibilità
  • Lezione 9: CSS per dare stile alle pagine
  • Lezione 10: Progetto finale - applica tutto!