W3docs

Tag HTML <section>

Il tag <section> raggruppa contenuti tematici. Scopri quando usare section vs article vs div, la regola dei titoli e il landmark region.

L'elemento HTML <section> è uno degli elementi semantici HTML5. Raggruppa un insieme di contenuti correlati che forma una parte tematica della pagina — una parte che, idealmente, apparirebbe come voce nel profilo del documento (un blocco di notizie, un'area "Contattaci", un capitolo di un lungo articolo, ecc.).

Questa pagina spiega cosa significa <section>, come scegliere tra <section>, <article> e <div>, perché una sezione ha quasi sempre bisogno di un titolo e la regola sull'accessibilità che trasforma una sezione in un landmark navigabile.

Quando usare <section> vs <article> vs <div>

Questi tre elementi sembrano intercambiabili, ma hanno significati molto diversi. Scegli in base all'intento, non all'aspetto:

  • <section> — un raggruppamento tematico di contenuti che appartiene al profilo della pagina e ha il proprio titolo. Usalo quando il contenuto è "una parte distinta di questa pagina" ma non ha senso da solo se rimosso dalla pagina. Esempi: un blocco Introduzione, un blocco Prezzi, un blocco Recensioni su una pagina prodotto.
  • <article> — una composizione autonoma e distribuibile indipendentemente. Usalo quando il contenuto avrebbe senso anche se estratto e pubblicato altrove (un feed sindacato, una voce RSS, un risultato di ricerca). Esempi: un post di blog, una notizia, un singolo commento utente, una scheda prodotto.
  • <div> — nessun significato semantico; un contenitore generico che esiste solo come aggancio per stili o script. Usa <div> quando hai semplicemente bisogno di un wrapper per il layout (un contenitore flex/grid, una colonna) e non vi sono contenuti tematici da etichettare.

Un test rapido: se puoi dare al blocco un titolo significativo, probabilmente è un <section>. Se il blocco potrebbe stare da solo come pagina o voce di feed, è un <article>. Se lo stai aggiungendo solo per collegare CSS o una classe, è un <div>.

Pericolo

Non usare <section> come wrapper generico per il layout o lo stile. Se un blocco di markup non ha significato tematico e non ha un titolo, usa invece un <div>.

Il requisito del titolo

HTML si aspetta che ogni <section> sia identificata, e il modo normale per farlo è con un titolo (<h1><h6>). Una sezione senza titolo non ha un argomento chiaro e produce una voce confusa e "senza titolo" nei profili del documento della tecnologia assistiva.

Usa il livello di titolo adatto alla profondità di annidamento: un <h2> per una sezione di primo livello sotto l'<h1> della pagina, un <h3> per una sezione annidata un livello più in profondità, e così via. Mantieni la gerarchia logica senza saltare livelli — consulta HTML Headings per le regole.

<h1>Web technologies</h1>

<section>
  <h2>HTML</h2>
  <p>HTML is the standard markup language for creating web pages.</p>
</section>

<section>
  <h2>CSS</h2>
  <p>CSS describes how HTML elements should be presented.</p>
</section>

<section> e accessibilità: il landmark region

Una <section> non è automaticamente un landmark raggiungibile dagli utenti di screen reader. Diventa un landmark region navigabile solo quando ha un nome accessibile. È possibile assegnarlo in due modi:

  • aria-labelledby che punta all'id del suo titolo (preferito — il titolo visibile e il nome accessibile rimangono sincronizzati), oppure
  • aria-label con una stringa letterale (quando non è presente un testo di titolo visibile a cui fare riferimento).

Senza un nome, la sezione è solo un raggruppamento per il profilo; con un nome, compare nell'elenco dei landmark dello screen reader.

<section aria-labelledby="pricing-heading">
  <h2 id="pricing-heading">Pricing</h2>
  <p>Choose the plan that fits your team.</p>
</section>

<!-- No visible heading? Name it directly: -->
<section aria-label="Search results">
  <p>3 results found.</p>
</section>

Ecco perché <section> si distingue da elementi come <main>, <aside>, <header> e <footer>: questi espongono ruoli landmark autonomamente, mentre <section> richiede un nome per farlo.

Sintassi

Il tag <section> viene usato in coppia. Il contenuto è scritto tra i tag di apertura (<section>) e di chiusura (</section>).

Esempio del tag HTML <section>:

<!DOCTYPE html>
<html>
  <head>
    <title>Using the section tag</title>
  </head>
  <body>
    <section>
      <h2>Hypertext markup language HTML</h2>
      <p>HTML is the standard markup language for creating web pages and web applications. Browsers receive HTML documents from a web server or from local storage and render the documents into multimedia web pages. HTML describes the structure of a web page semantically and originally included cues for the appearance of the document.</p>
    </section>
    <section>
      <h2>CSS</h2>
      <p>Formal language, which is used as a description zone, formatting the appearance of a web page, written by the help of markup languages HTML and XHTML, but it can be applied to any XML-document, for example, to SVG or XUL.</p>
    </section>
  </body>
</html>

Risultato

esempio del tag section

Esempio di <section> annidato all'interno di un <article>:

Un contenuto lungo e autonomo è un <article>; i capitoli al suo interno sono elementi <section>. Ogni sezione ha il proprio titolo e il proprio contenuto distinto.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
  </head>
  <body>
    <article>
      <h1>A short guide to web technologies</h1>
      <p>Modern web pages are built from three core technologies that work together.</p>

      <section>
        <h2>HTML: structure</h2>
        <p>HTML is the standard markup language for web pages. It describes the structure of a document — headings, paragraphs, links and media — so browsers can render it as a page.</p>
      </section>

      <section>
        <h2>CSS: presentation</h2>
        <p>CSS controls how the structured content looks: colors, spacing, typography and responsive layout across different screen sizes.</p>
      </section>

      <section>
        <h2>JavaScript: behavior</h2>
        <p>JavaScript adds interactivity, letting the page respond to user actions, update content dynamically and communicate with servers.</p>
      </section>
    </article>
  </body>
</html>

Attributi

Il tag <section> supporta gli Attributi Globali e gli Attributi Evento.

Come applicare stili a un tag HTML <section>

section {
  background-color: #f9f9f9;
  padding: 20px;
  border: 1px solid #ddd;
}

Esercitazione

Pratica
Qual è lo scopo del tag section in HTML?
Qual è lo scopo del tag section in HTML?
Was this page helpful?