{"id":164033,"date":"2024-09-01T09:00:00","date_gmt":"2024-09-01T07:00:00","guid":{"rendered":"https:\/\/gtechgroup.it\/blog\/tabelle-html-creare-stilizzare\/"},"modified":"2024-09-01T09:00:00","modified_gmt":"2024-09-01T07:00:00","slug":"tabelle-html-creare-stilizzare","status":"publish","type":"post","link":"https:\/\/gtechgroup.it\/blog\/tabelle-html-creare-stilizzare\/","title":{"rendered":"Tabelle HTML: Come Creare e Stilizzare Tabelle per il Web"},"content":{"rendered":"<p style=\"text-align: justify;\">Le <strong>tabelle HTML<\/strong> sono uno strumento essenziale per presentare <strong>dati tabulari<\/strong> in modo organizzato e leggibile. Dalle tabelle di confronto prodotti alle classifiche, dai listini prezzi ai calendari, le tabelle permettono di visualizzare informazioni strutturate in righe e colonne. In questo articolo vedremo come creare tabelle semanticamente corrette, accessibili e responsive.<\/p>\n<h2>Struttura Base di una Tabella HTML<\/h2>\n<p style=\"text-align: justify;\">Una tabella HTML si costruisce con una serie di tag annidati che definiscono la struttura a righe e colonne. L&#8217;elemento contenitore \u00e8 <code>&lt;table&gt;<\/code>, che racchiude l&#8217;intera tabella. All&#8217;interno, le <strong>righe<\/strong> sono definite dal tag <code>&lt;tr&gt;<\/code> (table row), e le <strong>celle<\/strong> possono essere di due tipi: <code>&lt;td&gt;<\/code> (table data) per le celle di dati e <code>&lt;th&gt;<\/code> (table header) per le celle di intestazione.<\/p>\n<p style=\"text-align: justify;\">Ecco la struttura base di una tabella semplice:<\/p>\n<pre><code>&lt;table&gt;\n  &lt;tr&gt;\n    &lt;th&gt;Nome&lt;\/th&gt;\n    &lt;th&gt;Et\u00e0&lt;\/th&gt;\n    &lt;th&gt;Citt\u00e0&lt;\/th&gt;\n  &lt;\/tr&gt;\n  &lt;tr&gt;\n    &lt;td&gt;Mario Rossi&lt;\/td&gt;\n    &lt;td&gt;35&lt;\/td&gt;\n    &lt;td&gt;Roma&lt;\/td&gt;\n  &lt;\/tr&gt;\n  &lt;tr&gt;\n    &lt;td&gt;Anna Bianchi&lt;\/td&gt;\n    &lt;td&gt;28&lt;\/td&gt;\n    &lt;td&gt;Milano&lt;\/td&gt;\n  &lt;\/tr&gt;\n&lt;\/table&gt;<\/code><\/pre>\n<p style=\"text-align: justify;\">Il tag <code>&lt;th&gt;<\/code> non solo visualizza il testo in grassetto e centrato per impostazione predefinita, ma ha anche un <strong>significato semantico<\/strong>: indica che la cella \u00e8 un&#8217;intestazione, fornendo contesto alle celle di dati associate. Questa distinzione \u00e8 fondamentale per l&#8217;accessibilit\u00e0, come vedremo pi\u00f9 avanti.<\/p>\n<h2>Sezioni della Tabella: thead, tbody e tfoot<\/h2>\n<p style=\"text-align: justify;\">Per tabelle ben strutturate, HTML offre tre tag che permettono di suddividere la tabella in <strong>sezioni logiche<\/strong>: <code>&lt;thead&gt;<\/code>, <code>&lt;tbody&gt;<\/code> e <code>&lt;tfoot&gt;<\/code>.<\/p>\n<p style=\"text-align: justify;\">Il tag <code>&lt;thead&gt;<\/code> (table head) racchiude le righe di <strong>intestazione<\/strong> della tabella, tipicamente contenenti le celle <code>&lt;th&gt;<\/code> con i nomi delle colonne. Il tag <code>&lt;tbody&gt;<\/code> (table body) contiene le righe con i <strong>dati<\/strong> effettivi. Il tag <code>&lt;tfoot&gt;<\/code> (table footer) \u00e8 dedicato alle righe di <strong>pi\u00e8 di pagina<\/strong>, come totali, medie o note riassuntive.<\/p>\n<p style=\"text-align: justify;\">Questa suddivisione non \u00e8 solo semantica ma ha anche vantaggi pratici. I browser possono utilizzare queste sezioni per implementare lo scorrimento del corpo della tabella mantenendo intestazione e pi\u00e8 di pagina fissi. Inoltre, quando una tabella viene stampata su pi\u00f9 pagine, <code>&lt;thead&gt;<\/code> e <code>&lt;tfoot&gt;<\/code> vengono ripetuti su ogni pagina, migliorando la leggibilit\u00e0 del documento stampato.<\/p>\n<p style=\"text-align: justify;\">Nel codice HTML, l&#8217;ordine consigliato \u00e8 <code>&lt;thead&gt;<\/code>, <code>&lt;tbody&gt;<\/code>, <code>&lt;tfoot&gt;<\/code>, anche se il browser renderizzer\u00e0 correttamente il footer in fondo indipendentemente dalla posizione nel markup.<\/p>\n<h2>Caption, Colspan e Rowspan<\/h2>\n<p style=\"text-align: justify;\">Il tag <code>&lt;caption&gt;<\/code> aggiunge un <strong>titolo descrittivo<\/strong> alla tabella. Deve essere il primo elemento figlio del tag <code>&lt;table&gt;<\/code> e fornisce contesto sia visivo che semantico. Gli screen reader annunciano il caption prima di leggere il contenuto della tabella, aiutando l&#8217;utente a comprendere il tipo di dati presentati.<\/p>\n<p style=\"text-align: justify;\">Gli attributi <code>colspan<\/code> e <code>rowspan<\/code> permettono a una cella di <strong>estendersi<\/strong> rispettivamente su pi\u00f9 colonne o pi\u00f9 righe. Ad esempio, <code>&lt;td colspan=\"3\"&gt;<\/code> crea una cella che occupa lo spazio di tre colonne, utile per intestazioni che raggruppano pi\u00f9 colonne di dati. <code>&lt;td rowspan=\"2\"&gt;<\/code> crea una cella che si estende su due righe, utilizzata spesso quando un valore \u00e8 condiviso tra pi\u00f9 righe adiacenti.<\/p>\n<p style=\"text-align: justify;\">L&#8217;uso di colspan e rowspan richiede attenzione nel conteggio delle celle per ogni riga. Se una cella si estende su 3 colonne, le altre righe nella stessa posizione devono avere 3 celle separate per mantenere l&#8217;allineamento. Errori nel conteggio possono causare tabelle distorte e difficili da correggere.<\/p>\n<h2>Stilizzare le Tabelle con CSS<\/h2>\n<p style=\"text-align: justify;\">Le tabelle HTML senza stilizzazione CSS appaiono piuttosto austere. Fortunatamente, il CSS offre numerose propriet\u00e0 per rendere le tabelle <strong>visivamente accattivanti<\/strong> e facili da leggere.<\/p>\n<p style=\"text-align: justify;\">La propriet\u00e0 <code>border-collapse<\/code> \u00e8 fondamentale: con il valore <code>collapse<\/code> i bordi delle celle adiacenti vengono fusi in un unico bordo, creando un aspetto pulito e professionale. Senza questa propriet\u00e0, ogni cella ha i propri bordi separati con uno spazio visibile tra di essi.<\/p>\n<p style=\"text-align: justify;\">Per migliorare la leggibilit\u00e0, \u00e8 comune applicare <strong>colori di sfondo alternati<\/strong> alle righe (zebrastriping) usando il selettore <code>tr:nth-child(even)<\/code> o <code>tr:nth-child(odd)<\/code>. L&#8217;effetto hover sulle righe (<code>tr:hover<\/code>) aiuta l&#8217;utente a seguire visivamente i dati attraverso le colonne. Il padding nelle celle <code>td<\/code> e <code>th<\/code> crea lo spazio necessario tra il contenuto e i bordi della cella.<\/p>\n<p style=\"text-align: justify;\">Per l&#8217;intestazione, \u00e8 buona pratica differenziarla con un colore di sfondo pi\u00f9 scuro e testo bianco o chiaro. Questo crea una separazione visiva chiara tra le etichette e i dati.<\/p>\n<h2>Tabelle Responsive<\/h2>\n<p style=\"text-align: justify;\">Le tabelle rappresentano una sfida particolare per il <strong>design responsive<\/strong>. Una tabella con molte colonne pu\u00f2 diventare illeggibile su schermi piccoli come quelli degli smartphone. Esistono diverse strategie per gestire questo problema.<\/p>\n<p style=\"text-align: justify;\">L&#8217;approccio pi\u00f9 semplice \u00e8 avvolgere la tabella in un <strong>contenitore scrollabile<\/strong>: <code>&lt;div style=\"overflow-x: auto;\"&gt;&lt;table&gt;...&lt;\/table&gt;&lt;\/div&gt;<\/code>. Questo permette all&#8217;utente di scorrere orizzontalmente la tabella senza che il layout della pagina si rompa.<\/p>\n<p style=\"text-align: justify;\">Un approccio pi\u00f9 sofisticato prevede la <strong>trasformazione della tabella<\/strong> su schermi piccoli tramite media query CSS. Ogni riga pu\u00f2 essere convertita in un &#8220;card&#8221; indipendente, con le etichette delle colonne mostrate inline accanto ai dati tramite il pseudo-elemento <code>::before<\/code> e l&#8217;attributo <code>data-label<\/code>.<\/p>\n<p style=\"text-align: justify;\">Un&#8217;altra opzione \u00e8 <strong>nascondere le colonne<\/strong> meno importanti su mobile, mantenendo solo le informazioni essenziali e offrendo un link per visualizzare la tabella completa. La scelta della strategia dipende dal tipo di dati e dalle esigenze specifiche del progetto.<\/p>\n<h2>Accessibilit\u00e0 delle Tabelle e Quando Non Usarle<\/h2>\n<p style=\"text-align: justify;\">Per rendere le tabelle accessibili, \u00e8 essenziale utilizzare correttamente l&#8217;attributo <code>scope<\/code> nelle celle <code>&lt;th&gt;<\/code>. Il valore <code>scope=\"col\"<\/code> indica che l&#8217;intestazione si riferisce a un&#8217;intera colonna, mentre <code>scope=\"row\"<\/code> indica che si riferisce a un&#8217;intera riga. Per tabelle complesse con intestazioni multiple, l&#8217;attributo <code>headers<\/code> nelle celle <code>&lt;td&gt;<\/code> permette di specificare esplicitamente quali intestazioni <code>&lt;th&gt;<\/code> si applicano a ogni cella, usando gli id delle intestazioni.<\/p>\n<p style=\"text-align: justify;\">Un punto cruciale: le tabelle HTML devono essere usate <strong>esclusivamente per dati tabulari<\/strong>. Negli anni &#8217;90 e primi 2000, le tabelle venivano ampiamente utilizzate per il layout delle pagine web, una pratica oggi fortemente sconsigliata. Il layout deve essere gestito con CSS (Flexbox e Grid). Usare tabelle per il layout crea problemi di accessibilit\u00e0, rende il codice pi\u00f9 complesso e ostacola il design responsive.<\/p>\n<p style=\"text-align: justify;\">Per scegliere quando usare una tabella, chiediti: &#8220;Questi dati hanno una relazione riga-colonna significativa?&#8221; Se la risposta \u00e8 s\u00ec, la tabella \u00e8 appropriata. Se stai solo cercando di allineare elementi nella pagina, usa CSS Grid o Flexbox.<\/p>\n<p style=\"text-align: justify;\">Per una panoramica completa degli elementi HTML e di come strutturare correttamente le pagine web, ti consigliamo di leggere il nostro articolo sui <a href=\"https:\/\/gtechgroup.it\/blog\/tag-html-essenziali-sviluppatore\/\">tag HTML essenziali<\/a>.<\/p>\n<p style=\"text-align: justify;\">Hai bisogno di aiuto con la <strong>creazione di tabelle<\/strong> per il tuo sito web? <strong>G Tech Group<\/strong> offre servizi di sviluppo web professionale e consulenza tecnica. Contattaci a <strong>support@gtechgroup.it<\/strong> o via WhatsApp al <strong>0465 84 62 45<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le tabelle HTML sono uno strumento essenziale per presentare dati tabulari in modo organizzato e leggibile. Dalle tabelle di confronto prodotti alle classifiche, dai listini&hellip;<\/p>\n","protected":false},"author":2,"featured_media":164213,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"1246","_seopress_titles_title":"Tabelle HTML: Come Creare e Stilizzare Tabelle %%sep%% %%sitename%%","_seopress_titles_desc":"Guida completa alle tabelle HTML: tag table, thead, tbody, tr, td, th. Scopri come creare tabelle accessibili e responsive per il web.","_seopress_robots_index":"","footnotes":""},"categories":[1246],"tags":[787,1108],"class_list":["post-164033","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html","tag-sviluppo-web","tag-web-design"],"_links":{"self":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts\/164033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/comments?post=164033"}],"version-history":[{"count":0,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/posts\/164033\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/media\/164213"}],"wp:attachment":[{"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/media?parent=164033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/categories?post=164033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gtechgroup.it\/blog\/wp-json\/wp\/v2\/tags?post=164033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}