Trinity College London è una Charity Educativa e un Ente Certificatore Internazionale che eroga esami di Lingua Inglese, Musica e Arti Performative, attivo dal 1877 e presente in oltre 80 paesi nel mondo.
<p>Testo paragrafo</p>
Paragrafo con strong
Il testo normale può contenere parole in grassetto per evidenziare concetti chiave all'interno del paragrafo.
<p>Testo con <strong>grassetto</strong> inline</p>
Il backend genera automaticamente il tag <picture> con sorgente WebP e fallback PNG, includendo srcset a 500w, 750w, 1000w. Nel template va fornito solo il tag <img> con questi attributi:
src — percorso originale dell'immagine (il backend genera le miniature)
alt — testo alternativo descrittivo (obbligatorio; vuoto alt="" solo per immagini decorative)
class — classi CSS necessarie (es. img-fluid)
width e height — dimensioni della miniatura di fallback usata come src
loading — lazy per immagini fuori dal viewport iniziale; ometti o usa eager per immagini above the fold
⚠ Non scrivere mai srcset, sizes o <picture> nel template: vengono sovrascritti dal backend.
Per ogni immagine caricata il backend genera automaticamente questi formati, sia in JPG che in WebP:
Nome
Larghezza
Altezza
Crop
Pattern filename (JPG)
small
500 px
auto
No
immagine-500.jpg
medium
750 px
auto
No
immagine-750.jpg
large
1000 px
auto
No
immagine-1000.jpg
hero
1920 px
auto
No
immagine-1920.jpg
Se l'immagine richiede un crop (altezza fissa), la miniatura include entrambe le dimensioni nel nome: immagine-500x350.jpg — il crop va applicato via CSS con object-fit: cover sul tag <img>.
Quale miniatura usare come src di fallback in base al layout
Il valore di src deve puntare alla miniatura più vicina alla larghezza reale del contenitore a schermo intero (max-width 1400px). Usa la tabella come riferimento rapido:
Layout
Classi Bootstrap
Larghezza max immagine
Miniatura consigliata
width / height da dichiarare
Full width
col-12
1400 px
large (1000w) o hero se sopra la piega
width="1000"
Metà colonna
col-12 col-md-6
~700 px
medium (750w)
width="750"
Un terzo
col-12 col-md-4 / subgrid-3
~440 px
small (500w)
width="500"
Un quarto
col-12 col-md-3 / subgrid-4
~320 px
small (500w)
width="500"
Sidebar
col-12 col-md-3 (aside)
~300 px
small (500w)
width="500"
Hero / banner
.trinity-hero
1400–1920 px
hero (1920w)
width="1920"
Swiper / carosello (slide visibile)
.trinity-story-card__img
~440 px
small (500w)
width="500"
Voice card (foto persona)
.trinity-voice-card
~300 px
small (500w)
width="500"
Esempi praticiImmagine full width (col-12), no crop
Questa sezione raccoglie le regole da seguire quando si inseriscono o modificano contenuti nel CMS. Rispettarle garantisce che il sito sia utilizzabile da tutti gli utenti, incluse le persone che usano tecnologie assistive come i lettori di schermo.
Il livello di conformità richiesto è WCAG 2.2 AA.
1. Testo alternativo delle immagini (alt)
Il testo alternativo viene letto ad alta voce dai lettori di schermo al posto dell'immagine. Deve descrivere il contenuto e la funzione dell'immagine, non il suo aspetto tecnico.
Quando scrivere l'alt
Scrivi sempre l'alt per immagini che comunicano un'informazione (foto, grafici, illustrazioni).
Descrivi cosa mostra l'immagine e perché è lì, non come appare.
Sii conciso: idealmente sotto i 120 caratteri.
Non iniziare con "Immagine di…" o "Foto di…": il lettore di schermo annuncia già che si tratta di un'immagine.
Immagini il cui contenuto è già descritto dal testo circostante: lascia alt="" per evitare ripetizioni.
Esempi
Situazione
❌ Sbagliato
✅ Corretto
Foto di una studentessa che sostiene un esame orale
alt="img_esame_01.jpg"
alt="Studentessa durante un esame orale Trinity GESE"
Logo Trinity College London
alt="logo"
alt="Trinity College London"
Grafico a barre con i risultati degli esami 2024
alt="grafico"
alt="Grafico: 85% di promossi agli esami ISE nel 2024"
Immagine decorativa di sfondo
alt="sfondo viola decorativo"
alt=""
2. Struttura dei titoli (H1, H2, H3)
I titoli creano la struttura della pagina. Gli utenti con lettore di schermo navigano spesso saltando di titolo in titolo per trovare la sezione che cercano — come si farebbe scorrendo visivamente una pagina.
Regole da seguire
Ogni pagina deve avere un solo H1, che corrisponde al titolo principale della pagina.
I titoli devono seguire una gerarchia senza salti: H1 → H2 → H3. Non si passa da H1 a H3 saltando H2.
Non usare i titoli per ottenere effetti grafici (es. testo grande). Usa le classi CSS apposite.
Ogni titolo deve descrivere il contenuto che introduce, non essere generico.
Esempi
Caso
❌ Sbagliato
✅ Corretto
Titolo principale
Due H1 nella stessa pagina
Un solo H1 per pagina
Gerarchia
H1 → H3 (salto di livello)
H1 → H2 → H3
Contenuto del titolo
<h2>Clicca qui</h2>
<h2>Come iscriversi all'esame ISE</h2>
Uso decorativo
H2 usato solo per ingrandire il testo
Classe .h2 su un <p> se è solo grafico
3. Link e testi cliccabili
Il testo di un link deve far capire dove porta o cosa fa, anche letto fuori contesto. Gli utenti con lettore di schermo ascoltano spesso la lista di tutti i link della pagina in sequenza.
Regole da seguire
Evita testi generici come "Clicca qui", "Leggi di più", "Vai", "Scopri": non dicono nulla fuori contesto.
Se il link apre un file (PDF, DOC), indicalo nel testo: "Scarica il programma d'esame (PDF)".
Se il link apre una nuova scheda, il testo deve avvisare l'utente.
Non usare lo stesso testo per link che portano a destinazioni diverse.
Non usare URL grezzi come testo del link (www.example.com/pagina-lunga).
Esempi
❌ Sbagliato
✅ Corretto
<a href="#">Clicca qui</a>
<a href="#">Scopri gli esami ISE</a>
<a href="#">Leggi di più</a>
<a href="#">Leggi di più sulla Carta del Docente</a>
<a href="programma.pdf">PDF</a>
<a href="programma.pdf">Scarica il programma d'esame (PDF)</a>
Due link "Scopri di più" che portano a pagine diverse
"Scopri di più sull'ISE" e "Scopri di più sul GESE"
4. Tabelle
Le tabelle devono essere usate solo per dati tabellari, mai per creare layout grafici. Ogni tabella deve avere intestazioni di colonna chiare.
Regole da seguire
Usa sempre una riga di intestazione (<thead>) con celle <th>.
Non usare tabelle per affiancare testi o immagini: usa le colonne Bootstrap.
Se la tabella è complessa, aggiungi una didascalia (<caption>) che la descriva.
Evita celle unite (merge) se possibile: complicano la lettura da parte dei lettori di schermo.
Ogni campo di un form deve avere una etichetta visibile e associata. Il placeholder da solo non è sufficiente: scompare non appena si inizia a digitare.
Regole da seguire
Ogni campo deve avere un <label> visibile collegato tramite l'attributo for.
I campi obbligatori devono essere indicati sia visivamente (asterisco) sia nel testo della label.
I messaggi di errore devono essere chiari e specifici: "Inserisci un indirizzo email valido", non solo "Errore".
Non usare il solo colore rosso per indicare un errore: aggiungi sempre un testo esplicativo.
Esempi
❌ Sbagliato
✅ Corretto
Campo con solo placeholder "Email"
Label "Indirizzo email" + placeholder come suggerimento aggiuntivo
Asterisco rosso senza spiegazione
Nota "I campi contrassegnati con * sono obbligatori" visibile prima del form
Messaggio di errore generico "Dati non validi"
"Il campo Email deve contenere un indirizzo valido (es. nome@esempio.it)"
6. Lingua dei contenuti
Quando inserisci parole o frasi in una lingua diversa dall'italiano, i lettori di schermo devono saperlo per pronunciarle correttamente. Sul sito Trinity questo riguarda spesso termini tecnici in inglese.
Regole da seguire
Avvolgi i termini inglesi nel tag <span lang="en">.
I nomi propri come Trinity College London e le sigle come ISE sono esenti: sono riconoscibili in italiano senza bisogno del tag.
Vali anche per frasi intere in un'altra lingua, non solo parole singole.
Esempi
Termine
❌ Sbagliato
✅ Corretto
speaking
speaking (senza tag)
<span lang="en">speaking</span>
Skill Up!
Skill Up! (senza tag)
<span lang="en">Skill Up!</span>
Trinity College London
—
Nessun tag necessario (nome proprio)
ISE
—
Nessun tag necessario (sigla riconoscibile)
7. Contrasto dei colori
Il contrasto tra testo e sfondo deve essere sufficiente perché il contenuto sia leggibile anche da chi ha difficoltà visive o usa lo schermo in condizioni di luce intensa.
Regole da seguire
Non modificare i colori del testo o degli sfondi al di fuori della palette definita nel design system.
Non sovrapporre testo scuro su sfondi scuri o testo chiaro su sfondi chiari.
Evita di inserire testo direttamente su fotografie senza un overlay scuro intermedio.
I contenuti video e audio devono essere accessibili anche a chi non può vederli o sentirli.
Regole da seguire
Sottotitoli: ogni video con parlato deve avere sottotitoli sincronizzati. Su YouTube e Vimeo possono essere aggiunti dal pannello di gestione del video.
Trascrizione: per contenuti audio o video importanti, fornisci una trascrizione testuale nella pagina.
Video in autoplay: i video che partono automaticamente devono essere silenziosi (muted) e offrire all'utente la possibilità di metterli in pausa.
Video decorativi: i video usati come sfondo (es. l'hero della homepage) devono avere aria-hidden="true" e non devono contenere informazioni rilevanti.
Flash e animazioni veloci: evita contenuti che lampeggiano più di 3 volte al secondo — possono causare crisi epilettiche.
Checklist prima di pubblicare un video
Il video ha i sottotitoli? Obbligatorio se c'è del parlato.
Se il video parte in automatico, è silenziato?
C'è un tasto per mettere in pausa o silenziare?
Se il video è decorativo, è marcato come tale (aria-hidden="true")?
Le informazioni nel video sono disponibili anche in forma testuale nella pagina?
9. Attributi ARIA
Gli attributi ARIA (Accessible Rich Internet Applications) aggiungono informazioni che i lettori di schermo usano per descrivere elementi interattivi o strutturali che l'HTML da solo non riesce a comunicare chiaramente. Come redattore ti capiterà di incontrarli nel codice HTML delle pagine: è importante non rimuoverli o modificarli senza sapere cosa fanno.
Regola generale: se non sei sicuro dell'effetto di un attributo ARIA, non toccarlo. Rimuovere un attributo ARIA può rendere una sezione invisibile ai lettori di schermo o privare un pulsante del suo nome accessibile.
Attributi che incontrerai nel CMS
aria-label
Fornisce un nome descrittivo a un elemento quando il testo visibile non è sufficiente o non esiste. Il lettore di schermo legge il valore di aria-label invece del contenuto visibile.
Quando lo trovi: su bottoni con solo un'icona, su link con testo generico, sulle sezioni principali della pagina.
❌ Sbagliato
✅ Corretto
Modificare aria-label="Apri menu di navigazione" in aria-label="Menu"
Mantenere il testo descrittivo originale che spiega la funzione
Rimuovere aria-label da un bottone che contiene solo un'icona
Lasciare sempre aria-label sui bottoni senza testo visibile
<!-- Bottone con solo icona: aria-label è l'unico nome accessibile --> <button aria-label="Slide precedente"> <img src="freccia.svg" alt="" aria-hidden="true"> </button> <!-- Sezione con titolo non visibile --> <section aria-label="Storie di successo Trinity">...</section>
aria-labelledby
Collega una sezione o un elemento al suo titolo visibile tramite l'id del titolo. Serve al lettore di schermo per annunciare "sei entrato nella sezione X" quando l'utente vi naviga.
Quando lo trovi: su ogni <section> della pagina. Il valore di aria-labelledby deve corrispondere all'id del titolo della sezione.
Cosa non fare: non cambiare l'id di un titolo senza aggiornare il corrispondente aria-labelledby, altrimenti il collegamento si rompe.
<section aria-labelledby="titolo-sezione"> <h2 id="titolo-sezione">Esami di lingua inglese</h2> <p>Contenuto...</p> </section>
aria-hidden
Nasconde un elemento ai lettori di schermo. L'elemento rimane visibile sullo schermo, ma viene completamente ignorato dalle tecnologie assistive.
Quando lo trovi: su icone decorative, frecce, immagini già descritte dal testo circostante, video di sfondo.
Cosa non fare: non aggiungere aria-hidden="true" a elementi che contengono testo informativo o link cliccabili — li renderebbe inaccessibili da tastiera.
Elemento
Usa aria-hidden?
Perché
Icona decorativa accanto a un testo
✅ Sì
Il testo accanto già comunica l'informazione
Video di sfondo senza contenuto informativo
✅ Sì
Il video è puramente decorativo
Overlay scuro sopra un'immagine
✅ Sì
È un elemento grafico senza significato autonomo
Paragrafo con informazioni importanti
❌ No
Nasconderebbe contenuto rilevante agli utenti AT
Link o bottone
❌ Mai
Renderebbe il controllo inaccessibile da tastiera
aria-current
Indica l'elemento attualmente attivo in un insieme — la pagina corrente nel breadcrumb, la voce attiva nel menu, la slide visibile nel carosello. Il lettore di schermo annuncia "corrente" o "pagina corrente" sull'elemento marcato.
Quando lo trovi: nel breadcrumb (aria-current="page") e negli indicatori del carosello.
<!-- Breadcrumb: ultima voce è la pagina corrente --> <li aria-current="page">ISE — Integrated Skills in English</li> <!-- Paginazione: pagina attiva --> <li class="page-item active"> <a class="page-link" href="#" aria-current="page">3</a> </li>
aria-expanded
Comunica al lettore di schermo se un elemento a scomparsa (accordion, menu, dropdown) è aperto o chiuso. Il valore cambia automaticamente via JavaScript quando l'utente interagisce — non va modificato a mano nel template statico.
Cosa non fare: non rimuoverlo dai bottoni dell'accordion o dal toggle del menu hamburger.
<!-- Accordion chiuso --> <button class="accordion-button collapsed" aria-expanded="false"> Come iscriversi all'esame? </button> <!-- Accordion aperto (gestito da Bootstrap via JS) --> <button class="accordion-button" aria-expanded="true"> Come iscriversi all'esame? </button>
aria-live
Dice al lettore di schermo di annunciare automaticamente quando il contenuto di un elemento cambia, senza che l'utente ci debba navigare sopra. Usato per notifiche, messaggi di stato, aggiornamenti del carosello.
Quando lo trovi: nei messaggi di feedback dei form, nelle notifiche "Slide X di Y" dei caroselli, negli avvisi di errore.
Cosa non fare: non aggiungere aria-live a elementi che si aggiornano di continuo (es. un timer al millisecondo) — produrrebbe un flusso di annunci che distrae l'utente.
Valore
Comportamento
Quando usarlo
aria-live="polite"
Annuncia l'aggiornamento al termine del discorso corrente
Messaggi di stato, contatore slide, risultati di ricerca
aria-live="assertive"
Interrompe il discorso corrente e annuncia subito
Solo per errori critici o avvisi urgenti
<!-- Messaggio di stato (es. invio form riuscito) --> <div role="status" aria-live="polite"> Modulo inviato correttamente. </div> <!-- Avviso di errore urgente --> <div role="alert" aria-live="assertive"> Errore: il campo Email è obbligatorio. </div>
role
Comunica ai lettori di schermo il tipo di elemento quando l'HTML nativo non è sufficiente. Ad esempio, un <div> non ha un ruolo semantico — aggiungendo role="region" lo si trasforma in una regione navigabile.
Cosa non fare: non aggiungere role a elementi HTML nativi che hanno già un ruolo implicito (<button>, <nav>, <main>) — è ridondante e può creare conflitti.
Valore
Significato
Dove lo trovi nel sito
role="region"
Regione significativa della pagina
Carosello Swiper
role="group"
Raggruppamento di elementi correlati
Singola slide del carosello
role="status"
Messaggio di stato non urgente
Feedback form, contatore slide
role="alert"
Avviso urgente
Messaggi di errore form
Riepilogo rapido — cosa fare e non fare
Attributo
❌ Non fare
✅ Fare
aria-label
Rimuoverlo o svuotarlo
Mantenerlo; aggiornare il testo se cambia la funzione del bottone
aria-labelledby
Cambiare l'id del titolo senza aggiornarlo
Tenere sempre allineati id del titolo e aria-labelledby della sezione
aria-hidden
Aggiungerlo su link, bottoni o testi informativi
Usarlo solo su icone decorative, overlay e media di sfondo
aria-current
Dimenticarlo sulla voce attiva del breadcrumb
Applicarlo sempre all'elemento corrente in liste di navigazione
aria-expanded
Rimuoverlo dai bottoni accordion e hamburger
Lasciarlo: Bootstrap lo aggiorna automaticamente
aria-live
Aggiungerlo su elementi che cambiano di continuo
Usarlo solo per messaggi di stato e notifiche puntuali
role
Aggiungerlo su tag HTML nativi già semantici
Lasciarlo dove già presente; non modificarlo
Restiamo in contatto
Ricevi gratuitamente aggiornamenti su formazione, risorse didattiche e idee per le tue lezioni!