Che cosa significa HTML semantico
Una pagina Web non è composta soltanto da testo, immagini e collegamenti. I contenuti sono normalmente organizzati in aree con funzioni differenti.
Una pagina Web non è composta soltanto da testo, immagini e collegamenti. I contenuti sono normalmente organizzati in aree con funzioni differenti.
Una pagina può avere, per esempio:
- un’intestazione;
- un menu di navigazione;
- un contenuto principale;
- diverse sezioni;
- contenuti secondari;
- un piè di pagina.
HTML mette a disposizione elementi che permettono di descrivere direttamente il significato di queste parti.
Questo approccio prende il nome di HTML semantico.
In informatica, la semantica riguarda il significato. Un elemento HTML semantico comunica quindi quale funzione svolge il contenuto che racchiude.
Struttura e significato
Consideriamo una pagina organizzata esclusivamente mediante contenitori generici:
Consideriamo una pagina organizzata esclusivamente mediante contenitori generici:
<div>
Titolo del sito
</div>
<div>
Menu di navigazione
</div>
<div>
Contenuto principale
</div>
<div>
Informazioni finali
</div>
Il browser può visualizzare questi elementi, ma osservando il codice non è immediatamente evidente quale funzione abbia ogni contenitore.
Con gli elementi semantici possiamo invece scrivere:
<header>
Titolo del sito
</header>
<nav>
Menu di navigazione
</nav>
<main>
Contenuto principale
</main>
<footer>
Informazioni finali
</footer>
La seconda struttura comunica direttamente il ruolo delle diverse parti della pagina. Il codice risulta più descrittivo e più semplice da comprendere e mantenere.
Le principali aree di una pagina
Una possibile struttura logica di una pagina Web può essere rappresentata nel seguente modo:
Una possibile struttura logica di una pagina Web può essere rappresentata nel seguente modo:
+------------------------------------------+
| HEADER |
| intestazione della pagina |
+------------------------------------------+
| NAV |
| menu di navigazione |
+------------------------------------------+
| |
| MAIN |
| |
| +-------------------------------+ |
| | SECTION | |
| | | |
| | +---------------------+ | |
| | | ARTICLE | | |
| | +---------------------+ | |
| | | |
| +-------------------------------+ |
| |
| +-------------------------------+ |
| | ASIDE | |
| | contenuto secondario | |
| +-------------------------------+ |
| |
+------------------------------------------+
| FOOTER |
| informazioni finali |
+------------------------------------------+
Lo schema rappresenta un possibile modo di organizzare una pagina. Non tutte le pagine devono necessariamente contenere tutti questi elementi e la loro disposizione dipende dalla struttura reale dei contenuti.
L’elemento header
L’elemento <header> rappresenta un’area introduttiva o di intestazione.
L’elemento <header> rappresenta un’area introduttiva o di intestazione.
Può contenere, per esempio:
- il titolo del sito;
- un logo;
- un sottotitolo;
- informazioni introduttive.
Esempio:
<header>
<h1>Portale di Informatica</h1>
<p>Materiali e approfondimenti sulle tecnologie Web</p>
</header>
<head> contiene informazioni sul documento, come titolo e metadati, e non viene utilizzato per rappresentare l’intestazione visibile della pagina.
<header> appartiene invece al contenuto della pagina e rappresenta un’intestazione.
L’elemento nav
L’elemento <nav> identifica una sezione della pagina dedicata principalmente alla navigazione.
L’elemento <nav> identifica una sezione della pagina dedicata principalmente alla navigazione.
Normalmente contiene collegamenti verso altre pagine oppure verso sezioni importanti del sito.
<nav>
<a href="index.html">Home</a>
<a href="corsi.html">Corsi</a>
<a href="contatti.html">Contatti</a>
</nav>
Il tag <nav> non crea automaticamente un menu grafico. Descrive il significato dell’area.
Utilizzare <nav> non significa ottenere automaticamente pulsanti, colori o menu orizzontali. La presentazione grafica verrà definita attraverso CSS.
L’elemento main
L’elemento <main> rappresenta il contenuto principale del documento.
L’elemento <main> rappresenta il contenuto principale del documento.
Al suo interno viene inserito il contenuto centrale e specifico della pagina.
<main>
<h2>Introduzione ad HTML</h2>
<p>
HTML è il linguaggio utilizzato per descrivere
la struttura dei contenuti di una pagina Web.
</p>
</main>
In una normale pagina HTML deve essere chiaramente identificabile il contenuto principale. Per questo motivo si utilizza generalmente un solo elemento <main> visibile per documento.
L’elemento section
L’elemento <section> rappresenta una sezione tematica del documento.
L’elemento <section> rappresenta una sezione tematica del documento.
È utile quando una parte della pagina raccoglie contenuti relativi allo stesso argomento.
<section>
<h2>HTML</h2>
<p>
HTML definisce la struttura di una pagina Web.
</p>
</section>
Una pagina può contenere più sezioni:
<main>
<section>
<h2>HTML</h2>
<p>HTML descrive la struttura dei contenuti.</p>
</section>
<section>
<h2>CSS</h2>
<p>CSS definisce la presentazione dei contenuti.</p>
</section>
</main>
Se una parte della pagina rappresenta un gruppo di contenuti dedicati a uno specifico argomento e può essere identificata con un titolo, <section> può essere una scelta appropriata.
L’elemento article
L’elemento <article> rappresenta un contenuto che possiede un significato autonomo e che potrebbe essere comprensibile anche separatamente dal resto della pagina.
L’elemento <article> rappresenta un contenuto che possiede un significato autonomo e che potrebbe essere comprensibile anche separatamente dal resto della pagina.
Esempi tipici possono essere:
- un articolo di un blog;
- una notizia;
- una recensione;
- un post;
- una scheda informativa autonoma.
Esempio:
<article>
<h2>Che cos’è HTML?</h2>
<p>
HTML è un linguaggio di markup utilizzato
per strutturare i contenuti delle pagine Web.
</p>
</article>
Una domanda utile è: questo contenuto avrebbe senso anche se fosse presentato separatamente dal resto della pagina? Se la risposta è sì, <article> potrebbe essere appropriato.
Section e article: qual è la differenza?
<section> e <article> possono sembrare simili, ma esprimono concetti differenti.
<section> e <article> possono sembrare simili, ma esprimono concetti differenti.
| Elemento | Funzione principale | Esempio |
|---|---|---|
<section> |
Raggruppa contenuti appartenenti allo stesso tema. | Sezione dedicata a HTML. |
<article> |
Rappresenta un contenuto autonomo. | Una singola notizia o un articolo. |
I due elementi possono anche essere utilizzati insieme.
<section>
<h2>Ultime notizie</h2>
<article>
<h3>Nuova versione di un software</h3>
<p>Contenuto della prima notizia...</p>
</article>
<article>
<h3>Nuove tecnologie Web</h3>
<p>Contenuto della seconda notizia...</p>
</article>
</section>
La <section> raggruppa le notizie perché appartengono allo stesso tema. Ogni <article> rappresenta invece una singola notizia autonoma.
L’elemento aside
L’elemento <aside> rappresenta un contenuto collegato al contenuto principale, ma non essenziale per comprenderlo.
L’elemento <aside> rappresenta un contenuto collegato al contenuto principale, ma non essenziale per comprenderlo.
Può essere utilizzato, per esempio, per:
- approfondimenti;
- informazioni aggiuntive;
- contenuti correlati;
- note laterali.
<aside>
<h2>Approfondimento</h2>
<p>
HTML è stato sviluppato nei primi anni del World Wide Web.
</p>
</aside>
Il significato di <aside> riguarda il ruolo del contenuto, non la sua posizione grafica. Un aside può essere visualizzato lateralmente, ma è il CSS a determinarne la posizione.
L’elemento footer
L’elemento <footer> rappresenta il piè di pagina di un documento o di una sua parte.
L’elemento <footer> rappresenta il piè di pagina di un documento o di una sua parte.
Può contenere informazioni come:
- autore;
- copyright;
- contatti;
- informazioni sul documento;
- collegamenti secondari.
Esempio:
<footer>
<p>Sito didattico di Informatica</p>
<p>Contatti: info@example.com</p>
</footer>
Riepilogo degli elementi semantici
| Elemento | Significato | Possibile contenuto |
|---|---|---|
<header> |
Area introduttiva o intestazione. | Titolo, logo, introduzione. |
<nav> |
Area di navigazione. | Collegamenti principali. |
<main> |
Contenuto principale. | Contenuto specifico della pagina. |
<section> |
Sezione tematica. | Contenuti relativi allo stesso argomento. |
<article> |
Contenuto autonomo. | Articolo, notizia, recensione. |
<aside> |
Contenuto secondario o correlato. | Approfondimenti, note, contenuti correlati. |
<footer> |
Informazioni conclusive. | Autore, copyright, contatti. |
Elementi semantici e div
L’elemento <div> è un contenitore generico e non comunica uno specifico significato sul contenuto che racchiude.
L’elemento <div> è un contenitore generico e non comunica uno specifico significato sul contenuto che racchiude.
<div>
<h2>HTML</h2>
<p>HTML è un linguaggio di markup.</p>
</div>
Se il contenuto rappresenta chiaramente una sezione tematica, possiamo utilizzare:
<section>
<h2>HTML</h2>
<p>HTML è un linguaggio di markup.</p>
</section>
<div> rimane un elemento HTML importante. Deve essere utilizzato quando serve un contenitore generico e non esiste un elemento semantico più appropriato.
Semantica e aspetto grafico
Gli elementi semantici descrivono la funzione del contenuto, non il suo aspetto grafico.
Gli elementi semantici descrivono la funzione del contenuto, non il suo aspetto grafico.
Per esempio:
<header>
<h1>Il mio sito</h1>
</header>
indica che il contenuto rappresenta un’intestazione.
Non stabilisce automaticamente:
- il colore dello sfondo;
- la dimensione dell’area;
- la posizione;
- il colore del testo;
- la presenza di bordi.
HTML descrive la struttura e il significato dei contenuti. CSS viene utilizzato per controllarne la presentazione grafica.
Perché utilizzare HTML semantico
Utilizzare elementi semantici offre diversi vantaggi.
Utilizzare elementi semantici offre diversi vantaggi.
| Vantaggio | Descrizione |
|---|---|
| Leggibilità | Il codice comunica chiaramente la funzione delle diverse parti della pagina. |
| Manutenzione | La struttura risulta più semplice da comprendere e modificare. |
| Accessibilità | Le tecnologie assistive possono interpretare meglio la struttura del documento. |
| Interpretazione | Browser e altri software dispongono di maggiori informazioni sul significato dei contenuti. |
| Organizzazione | Favorisce una struttura logica e coerente del documento. |
Una pagina HTML semantica completa
Osserviamo una semplice pagina dedicata alle tecnologie Web:
Osserviamo una semplice pagina dedicata alle tecnologie Web:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Tecnologie Web</title>
</head>
<body>
<header>
<h1>Tecnologie Web</h1>
<p>Introduzione allo sviluppo Web</p>
</header>
<nav>
<a href="index.html">Home</a>
<a href="html.html">HTML</a>
<a href="css.html">CSS</a>
</nav>
<main>
<section>
<h2>Linguaggi per il Web</h2>
<article>
<h3>HTML</h3>
<p>
HTML descrive la struttura dei contenuti
di una pagina Web.
</p>
</article>
<article>
<h3>CSS</h3>
<p>
CSS definisce la presentazione grafica
dei contenuti.
</p>
</article>
</section>
<aside>
<h2>Approfondimento</h2>
<p>
HTML e CSS svolgono funzioni differenti
ma vengono utilizzati insieme.
</p>
</aside>
</main>
<footer>
<p>Materiale didattico di Informatica</p>
</footer>
</body>
</html>
Analizziamo la struttura
La struttura del documento precedente può essere rappresentata come un albero:
La struttura del documento precedente può essere rappresentata come un albero:
body
|
+-- header
|
+-- nav
|
+-- main
| |
| +-- section
| | |
| | +-- article
| | |
| | +-- article
| |
| +-- aside
|
+-- footer
Questa rappresentazione mostra che gli elementi HTML possono essere annidati.
Per esempio, gli elementi <article> sono contenuti nella <section>, mentre section e aside sono contenuti in <main>.
La scelta degli elementi e il loro annidamento permettono di rappresentare la struttura logica del documento, non soltanto il suo aspetto visivo.
LABORATORIO
Costruire una pagina semantica
L’obiettivo è realizzare la struttura di una pagina dedicata a un portale di informatica utilizzando gli elementi semantici.
L’obiettivo è realizzare la struttura di una pagina dedicata a un portale di informatica utilizzando gli elementi semantici.
Passo 1 - Creare il documento
Creare un file denominato:
informatica.html
Passo 2 - Inserire la struttura HTML
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Portale Informatica</title>
</head>
<body>
</body>
</html>
Passo 3 - Creare l’intestazione
All’interno di body inserire:
<header>
<h1>Portale Informatica</h1>
<p>
Risorse dedicate alle tecnologie informatiche.
</p>
</header>
Passo 4 - Creare la navigazione
<nav>
<a href="index.html">Home</a>
<a href="html.html">HTML</a>
<a href="css.html">CSS</a>
</nav>
Passo 5 - Creare il contenuto principale
<main>
<h2>Sviluppo Web</h2>
<p>
Lo sviluppo Web utilizza diverse tecnologie
per realizzare siti e applicazioni.
</p>
</main>
Passo 6 - Organizzare il contenuto in una section
Modificare il contenuto di main:
<main>
<section>
<h2>Tecnologie principali</h2>
<p>
HTML e CSS sono due tecnologie fondamentali
per la realizzazione delle pagine Web.
</p>
</section>
</main>
Passo 7 - Inserire due article
All’interno della section inserire:
<article>
<h3>HTML</h3>
<p>
HTML permette di definire la struttura
dei contenuti di una pagina.
</p>
</article>
<article>
<h3>CSS</h3>
<p>
CSS permette di definire la presentazione
grafica della pagina.
</p>
</article>
Passo 8 - Inserire un contenuto secondario
Dopo la section, ma sempre all’interno di main, inserire:
<aside>
<h2>Approfondimento</h2>
<p>
JavaScript permette di aggiungere comportamento
e interattività alle pagine Web.
</p>
</aside>
Passo 9 - Inserire il footer
Dopo la chiusura di main:
<footer>
<p>
Portale didattico di Informatica
</p>
</footer>
La pagina possiede ora una struttura logica composta da intestazione, navigazione, contenuto principale, sezione tematica, articoli, contenuto secondario e piè di pagina.
Codice completo del laboratorio
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<title>Portale Informatica</title>
</head>
<body>
<header>
<h1>Portale Informatica</h1>
<p>
Risorse dedicate alle tecnologie informatiche.
</p>
</header>
<nav>
<a href="index.html">Home</a>
<a href="html.html">HTML</a>
<a href="css.html">CSS</a>
</nav>
<main>
<section>
<h2>Tecnologie principali</h2>
<p>
HTML e CSS sono due tecnologie fondamentali
per la realizzazione delle pagine Web.
</p>
<article>
<h3>HTML</h3>
<p>
HTML permette di definire la struttura
dei contenuti di una pagina.
</p>
</article>
<article>
<h3>CSS</h3>
<p>
CSS permette di definire la presentazione
grafica della pagina.
</p>
</article>
</section>
<aside>
<h2>Approfondimento</h2>
<p>
JavaScript permette di aggiungere comportamento
e interattività alle pagine Web.
</p>
</aside>
</main>
<footer>
<p>
Portale didattico di Informatica
</p>
</footer>
</body>
</html>
Errori comuni
Errore 1 - Confondere head e header
Errato concettualmente:
<head>
<h1>Il mio sito</h1>
</head>
Il titolo visibile della pagina deve essere inserito nel body, eventualmente all’interno di header:
<body>
<header>
<h1>Il mio sito</h1>
</header>
</body>
Errore 2 - Utilizzare nav per qualsiasi gruppo di link
<nav> è destinato principalmente ai blocchi di navigazione significativi della pagina. Non è necessario racchiudere ogni singolo collegamento in un elemento nav.
Errore 3 - Utilizzare section come semplice contenitore grafico
Una section dovrebbe rappresentare una parte tematica del documento, non essere utilizzata soltanto perché si desidera creare un riquadro o applicare uno stile.
Errore 4 - Pensare che aside significhi destra
Il tag aside indica un contenuto secondario o correlato. Non indica una posizione grafica.
Errore 5 - Utilizzare sempre div
Questo codice:
<div>
<h1>Il mio sito</h1>
</div>
<div>
<a href="index.html">Home</a>
<a href="contatti.html">Contatti</a>
</div>
può essere reso semanticamente più significativo:
<header>
<h1>Il mio sito</h1>
</header>
<nav>
<a href="index.html">Home</a>
<a href="contatti.html">Contatti</a>
</nav>
La scelta di un elemento semantico deve dipendere dal significato del contenuto. Colori, dimensioni, posizione e disposizione degli elementi verranno gestiti attraverso CSS.
Esercizio autonomo
Realizzare una pagina denominata tecnologie.html dedicata alle tecnologie informatiche.
Realizzare una pagina denominata tecnologie.html dedicata alle tecnologie informatiche.
La pagina deve contenere:
- un header con titolo h1 e breve descrizione;
- un nav con almeno tre collegamenti;
- un main;
- almeno due section dedicate ad argomenti differenti;
- almeno due article;
- un aside contenente un approfondimento;
- un footer con informazioni conclusive.
Utilizzare inoltre alcuni degli elementi HTML già studiati:
- titoli;
- paragrafi;
- liste;
- collegamenti;
- almeno un’immagine.
- Gli elementi devono essere scelti in base al significato del contenuto.
- Il contenuto principale deve essere inserito in main.
- Le sezioni devono rappresentare gruppi tematici.
- Gli article devono rappresentare contenuti sufficientemente autonomi.
- L’aside deve contenere informazioni secondarie o correlate.
- I tag devono essere correttamente aperti e chiusi.
- Gli elementi devono essere correttamente annidati.
- Il codice deve essere indentato in modo coerente.
Verifica rapida
- Che cosa significa HTML semantico?
- Qual è la differenza tra head e header?
- A cosa serve l’elemento nav?
- Quale contenuto deve essere inserito in main?
- Che cosa rappresenta una section?
- Che cosa rappresenta un article?
- Qual è la principale differenza tra section e article?
- A cosa serve aside?
- A cosa serve footer?
- Qual è la differenza tra div e un elemento semantico?
- Un aside deve essere necessariamente visualizzato a destra?
- Gli elementi semantici definiscono automaticamente colori e disposizione grafica?
Scegli il tag corretto
Indicare quale elemento semantico utilizzeresti nelle seguenti situazioni:
Indicare quale elemento semantico utilizzeresti nelle seguenti situazioni:
| Contenuto | Elemento da scegliere |
|---|---|
| Titolo e descrizione iniziale del sito | ? |
| Menu principale | ? |
| Contenuto centrale della pagina | ? |
| Gruppo di contenuti dedicato a HTML | ? |
| Una singola notizia | ? |
| Un approfondimento correlato | ? |
| Informazioni finali e copyright | ? |
Prima di scegliere il tag, chiediti: qual è la funzione di questo contenuto nella pagina? La risposta aiuta a individuare l’elemento semantico più appropriato.