html515
Corso html 5, lezione 15.

Roberto Abutzu su uiciechi.it, 2014-01.

Quindicesima parte: "Sezionare i contenuti".

`**********`

Contenitore di sezionamento dei contenuti.

Nei vari manuali di questo linguaggio e per le specifiche del w3c, spesso si sente parlare di: 
"content model".

Questi sono dei gruppi di elementi che suddividono la nostra pagina o il nostro documento html.

Ne esistono di diversi tipi, come, ad esempio, i meta content, ossia gli elementi come le tag meta, 
che servono alla presentazione e al funzionamento del sito.

Soltanto un esempio, senza dilungarmi troppo nel dettaglio, allo scopo di introdurre i "sectioning 
content".

Cosa sono?

Sono un gruppo di elementi html, creati appositamente e ampliati in questa versione del linguaggio, 
per sezionare in modo più definito i contenuti di un documento.

Ciò agevola l'utente nella navigazione, i browser nella identificazione delle varie aree di una 
pagina, gli sviluppatori nel codice.

Più avanti nel corso analizzeremo meglio i vari gruppi content model spiegandone il funzionamento 
corretto.

Il "sectioning content" è un gruppo del quale ne fanno parte: "Aside, article, nav, section".

Ora riprendiamo alcune tag già citate in precedenza approfondendone la filosofia e spiegandone al 
meglio il loro utilizzo.

Dicevamo che, nella nuova versione di questo linguaggio, lo scopo principale degli sviluppatori è 
stato quello di dare la possibilità di creare una struttura delle pagine web dove i contenuti 
potessero essere ben suddivisi tra loro.

Per esser più chiari, il div id="navigazione", assegnato al menu di navigazione di una pagina, ora 
può essere sostituito dalla tag "nav".

Questo lavoro in passato veniva attribuito alla tag div, alla quale veniva assegnato un 
identificativo univoco. Questa tag è ancora valida per il W3c e viene utilizzata esattamente come 
prima.

Il problema era la presenza di div, dei contenitori di contenuti, che a centinaia riempivano le 
pagine web.

Ora molti di questi div possono essere sostituiti dalle nuove tag che hanno la stessa funzione ma 
che, avendo nomi propri, sono più identificabili, precisando però che non devono essere considerate 
alternative ai div.

E' sbagliato dire che le nuove tag sostituiscono i div, essi possono esistere entrambi, coesistere 
nella stessa area, ed è a discrezione del programmatore deciderne l'utilizzo.

Naturalmente la decisione dell'utilizzo dei Div è anche poi vincolata all'utilizzo dei file css che 
determinano la formattazione e il layout della pagina stessa.

Comunque, vedremo in seguito ulteriori contesti lasciando ad ognuno la libertà di queste scelte.

Ora iniziamo a conoscere queste nuove tag nel dettaglio e nel loro corretto impiego.

Vi ricordo che analizzeremo le tag appartenenti alla struttura della pagina web, i "sectioning 
content".

La tag ``header``.

Per definizione, questa tag è un contenitore di ausili introduttivi e per la navigazione.

Per prima cosa sappiamo che questa Tag conterrà altri elementi al suo interno e non deve essere 
assolutamente considerata come ciò che contiene esclusivamente l'intestazione del sito, di solito 
l'intestazione h1, h2, che riporta il nome e il contenuto del sito stesso.

Viene utilizzata anche in questa posizione in quanto il titolo e il sottotitolo di un sito, di 
solito le prime due intestazioni h1 e h2, vanno considerate come indicazione dei contenuti, quindi 
introduttivi. Consideriamo però che anche in altre aree della pagina potremmo avere contesti con 
intestazioni introduttive.

Un esempio può essere l'articolo di un blog dove all'inizio può essere inserito il titolo, un 
sottotitolo, argomento trattato, ecc...

In tal caso è possibile utilizzare la tag ``header`` per raccogliere intestazioni che introducano 
questi contenuti.

Con questo non si intende che ogni singola intestazione necessiti di questa tag, ma un insieme di 
intestazioni, qualora introducano contenuti possono essere racchiuse in questa tag ``header``.

Facciamo un esempio pratico, ipotizzando di voler inserire nella nostra home page una sezione 
dedicata agli ausili per i disabili visivi. La costruiremo un passo alla volta inserendo e 
spiegando man mano le tag aggiunte.

Vediamo subito la nuova tag: ``aside``.

Significa "di fianco" e serve per contenere dei contenuti complementari al sito. Può contenere 
articoli di un blog, contenuti aggiuntivi, pubblicità, form per la ricerca, ecc..., comunque dei 
contenuti che vogliono essere inseriti ma tenuti separati da quelli principali.

Scriviamo questo codice:

``aside``

``header``

``h1Ausili tiflotecnici/h1``

``h2Strumenti software ed hardware per i disabili visivi/h2``

``h3Specifici per l'utilizzo di un personal computer/h3``

``/header``

``ul``

``liScreen reader/li``

``liSintesi vocale/li``

``liDisplay braille/li``

``liStampante braille/li``

``liSoftware videoingrandente/li``

``/ul``

``/aside``

Abbiamo creato un elenco non ordinato con delle intestazioni iniziali, introduttive all'elenco, con 
degli elementi che indicano poi gli ausili. Il tutto è contenuto in una sezione delimitata dalla 
tag: ``aside``.

Decidiamo di creare dei file, uno per ogni elemento della nostra lista. Non li creeremo realmente 
ma ipotizzando di doverlo fare, faremo diventare dei link gli elementi all'interno della nostra 
lista. Aggiungeremo poi una intestazione e un paragrafo come contenuti.

Ecco il codice:

``aside``

``header``

``h1Ausili tiflotecnici/h1``

``h2Strumenti software ed hardware per i disabili visivi/h2``

``h3Specifici per l'utilizzo di un personal computer/h3``

``/header``

``ul``

``lia href="Screen.html"screen reader/a/li``

``lia href="sintesi.html"sintesi vocali/a/li``

``lia href="display.html"display braille/a/li``

``lia href="stampante.html"stampanti braille/a/li``

``lia href="videoingrandente.html"software videoingrandenti/a/li``

``/ul``

``h2Ausili/h2``

``pIn queste pagine potrete recuperare informazioni dettagliate sugli ausili tiflotecnici per 
disabili visivi.br /Queste informazioni vengono curate e seguite da Nunziante Esposito e Roberto 
Abutzu./p``

``footer``

``dl``

``dtCreated by: /dt``

``ddNunziante/dd``

``dtweb master/dt``

``ddRoberto Abutzu/dd``

``/dl``

``/footer``

``/aside``

La cosa che più si nota in questo codice appena scritto è che è comparsa la tag footer. Questo 
perché questa tag non è esclusiva del piè di pagina del sito ma può essere utilizzata anche in 
altri contesti, purché racchiuda contenuti inerenti all'autore di quelli precedenti, del copyright, 
accordi di licenza, ecc. In questo caso ho voluto riportare i dati di chi genera le pagine sugli 
ausili e li ho inseriti in un piè di pagina, appartenente alla sezione "aside".

Un altro contesto in cui è possibile utilizzare il footer è negli articoli di un blog, magari 
volendo inserire l'autore e la data di un determinato articolo, alla fine dell'articolo stesso.

Ora procediamo con la costruzione di questa area Aside inserendo delle altre tag.

Scriviamo questo codice:

``aside``

``header``

``h1Ausili tiflotecnici/h1``

``h2Strumenti software ed hardware per i disabili visivi/h2``

``h3Specifici per l'utilizzo di un personal computer/h3``

``nav``

``h2menu di navigazione complementare/h2``

``ul``

``lia href="Screen.html"screen reader/a/li``

``lia href="sintesi.html"sintesi vocali/a/li``

``lia href="display.html"display braille/a/li``

``lia href="Stampante.html"stampanti braille/a/li``

``lia href="videoingrandente.html"software videoingrandenti/a/li``

``/ul``

``/nav``

``/header``

``section``

``h2Ausili/h2``

``pIn queste pagine potrete recuperare informazioni dettagliate sugli ausili tiflotecnici per 
disabili visivi.br /Queste informazioni vengono curate e seguite da Nunziante Esposito./p``

``/section``

``footer``

``dl``

``dtCreated by: /dt``

``ddNunziante Esposito/dd``

``dtWebmaster/dt``

``ddRoberto Abutzu/dd``

``/dl``

``/footer``

``/aside``

Verifichiamo il codice e notiamo che ho inserito una tag ``nav`` con la sua intestazione. Anche 
questa tag, che per definizione indica un menu di navigazione, non è da ritenersi esclusiva del 
menu di navigazione del sito. Infatti, la nav indica un menu di collegamenti, una serie di link che 
insieme permettono di navigare in determinati contenuti.

Quindi, in questo contesto, la "nav" permette di poter navigare all'interno della sezione contenuta 
nella "Aside" che riporta contenuti e pagine diverse sugli ausili.

Da notare che, avendo aggiunto la tag "nav", ho spostato la chiusura della tag "header". Questo 
perché, come riportato sopra, questa tag contiene elementi di introduzione e navigazione. La "nav" 
è un elemento di navigazione e quindi può essere contenuta al suo interno.

Se vi ricordate o andate a vedere, nelle lezioni precedenti avevamo inserito la tag "nav" come il 
contenitore dei collegamenti principali del sito.

Anche questo non è obbligatorio, o meglio, non è obbligatorio inserire la "nav" subito dopo le 
intestazioni principali del sito, h1, h2, ma, a seconda del layout, il menu di navigazione può 
essere posizionato anche in altre aree del documento.

Inoltre c'è da dire che, qualora non servisse, non è obbligatorio inserire la tag "nav" all'interno 
di una "header".

Vi sarete sicuramente accorti che ho inserito anche una nuova tag: ``section``. Questo è un 
contenitore a se stante e identifica un'area precisa di una pagina. Da tenere presente che questa 
tag deve avere obbligatoriamente un titolo ed una intestazione.

La gerarchia delle intestazioni contenute nella "section" non viene influenzata dalle gerarchie del 
documento. Significa che i vari livelli di intestazioni contenuti all'interno della "section", 
appartengono solo all'area delimitata dalla stessa.

Ecco un esempio di codice:

``section``

``h2titolo della sezione/h2``

``ptesto contenuto/p``

``/section``

``section``

``h2titolo 2/h2``

``paltri contenuti/p``

``/section``

``section``

``h2terzo titolo/h2``

``pulteriori contenuti/p``

``/section``

Grazie a questa suddivisione con le sezioni, ora è più semplice assegnare le intestazioni che 
vogliamo a dei contenuti specifici. Riassumendo, ogni intestazione all'interno di una sezione fa 
fede solo alla sezione e non all'intero documento. Volendo, è possibile inserire queste sezioni 
all'interno di una ulteriore sezione ricordandosi di inserire l'intestazione.

Il codice sarà scritto in questo modo:

``section``

``h1contenuti/h1``

``section``

``h2primo titolo/h2``

``pprimo contenuto/p``

``/section``

``section``

``h2secondo titolo/h2``

``psecondo contenuto/p``

``/section``

``/section``

Ogni volta che uno screen reader incontra una sezione, la identifica come regione.

Ora introduciamo la tag: "article" che viene utilizzata spesso nei blog o comunque per riportare 
articoli, ricette e altri contenuti simili. Ma attenzione a non pensare che serva solo ad articoli 
veri e propri.

Anche questa tag può essere considerata una Section ma è più specifica. Anche in questa occasione è 
a discrezione del programmatore deciderne l'utilizzo.

Ecco alcuni esempi:

``section``

``section``

``h1Articoli sul gran premio di Monza di f1/h1``

``article``

``h2ordine di arrivo/h2``

``ptesto/p``

``/article``

``article``

``h2classifica finale/h2``

``ptesto/p``

``/article``

``/section``

``section``

``h1commenti/h1``

``article``

``pcommento/p``

``/article/p``

``article``

``psecondo commento/p``

``/article``

``/section``

``/section``

Oltre ad aver inserito gli articoli nelle loro tag, ho suddiviso i commenti dai contenuti in due 
sezioni separate, tutte contenute a loro volta in una unica sezione dato che trattavano gli stessi 
contenuti. Volendo era anche possibile inserire una nuova "section", dove inserire il form per 
scrivere un nuovo commento.

Le tag article possono essere annidate tra loro, una dentro l'altra, purché trattino gli stessi 
contenuti. In questo caso si parla di tag figli e di elemento padre e, in caso si voglia inserire 
un "footer", questo va inserito una volta sola nell'elemento padre, il primo article.

Provate a creare nella vostra index o nelle vostre sottopagine queste condizioni, provando anche a 
cambiare il layout delle pagine stesse. Rivedremo in futuro queste tag quando affronteremo i form, 
quegli elementi html dove è possibile scrivere, selezionare da una tendina, premere un pulsante.

In questa parte ho voluto riprendere situazioni già analizzate ma ritengo importante spesso 
rivedere alcuni concetti nello specifico proprio per poter, in futuro, mettervi in condizione di 
scrivere delle pagine belle e corrette.

Ognuno è libero di decidere il proprio template, la forma che avrà la pagina, ne può creare di 
diversi, ma per farlo correttamente è necessario conoscere tutte le possibilità e le condizioni 
alternative degli elementi html 5.

Vi rimando alla prossima lezione per approfondire questo discorso ed imparare nuove tag.

`***********`

Per ulteriori spiegazioni, scrivere a: `Roberto Abutzu roberto@evyweb.it`_

Torna all'indice