edubun
Italiano

Colori e unità

Un testo grigio chiaro #bbbbbb su bianco ha un rapporto di contrasto di 1.92 a 1. Le WCAG chiedono almeno 4.5 a 1 per il testo normale.

Modi di scrivere un colore

Il CSS accetta i colori in diverse notazioni, e alla fine sono tutte la stessa cosa: quantità di luce rossa, verde e blu sullo schermo. I colori con nome come red, navy o rebeccapurple sono facili da leggere ma limitati. La notazione esadecimale scrive rosso, verde e blu con due cifre esadecimali ciascuno, da 00 a ff (da 0 a 255): #1a5fb4 è 26 di rosso, 95 di verde e 180 di blu, un blu medio. rgb(26 95 180) dice la stessa cosa in decimale. hsl(210 80% 40%) descrive un colore con tonalità (un angolo sulla ruota dei colori, dove 0 è rosso, 120 verde e 240 blu), saturazione e luminosità, così è facile ottenere una sfumatura più chiara o più scura della stessa tonalità cambiando un solo numero.

color: navy;
color: #1a5fb4;              /* same as #1A5FB4 */
color: #36c;                 /* short form of #3366cc */
color: rgb(26 95 180);
color: rgb(26 95 180 / 50%); /* half transparent */
color: hsl(210 80% 40%);
background-color: transparent;
La vecchia sintassi con le virgole, rgb(26, 95, 180), funziona ancora ovunque.

Un quarto valore, dopo una barra, imposta il canale alfa: rgb(0 0 0 / 50%) è nero con opacità a metà, quindi ciò che sta dietro si vede in trasparenza. color imposta il colore del testo, background-color il riempimento dietro un elemento e border-color il suo bordo. La parola chiave currentColor indica il colore del testo dell'elemento, comoda per icone e bordi che devono essere intonati al testo.

Il contrasto non è facoltativo

Un testo troppo vicino per luminosità al suo sfondo è difficile da leggere per molte persone: chi ha una vista debole, i lettori anziani e chiunque legga il telefono al sole. Le WCAG 2.2, le linee guida del W3C sull'accessibilità, lo misurano come rapporto di contrasto, da 1 a 1 (nessuna differenza) a 21 a 1 (nero su bianco). Il criterio di successo 1.4.3 chiede almeno 4.5 a 1 per il testo normale e 3 a 1 per il testo grande, che le WCAG definiscono come almeno 18 punti, o 14 punti in grassetto. Il grigio scuro #767676 su bianco passa per un soffio con 4.54 a 1; #777777 non passa per un soffio con 4.48. Gli strumenti per sviluppatori del browser mostrano il rapporto quando ispezioni un elemento di testo, quindi non serve tirare a indovinare.

Il colore non deve mai essere l'unico modo per mostrare un'informazione. Un modulo che segnala gli errori solo colorando di rosso un bordo esclude chi non distingue bene il rosso: aggiungi anche un messaggio o un'icona.

Unità assolute e relative

Le lunghezze vogliono un'unità, tranne lo zero. px è il pixel CSS, un'unità fissa; sugli schermi ad alta densità un pixel CSS copre diversi pixel fisici, così all'occhio resta più o meno della stessa grandezza. Le unità relative si adattano a qualcos'altro. em è relativa alla dimensione del carattere dell'elemento stesso, quindi padding: 0.5em su un testo di 20 pixel vale 10 pixel. rem è relativa alla dimensione del carattere della radice (html), che nei browser è 16 pixel a meno che il lettore non l'abbia cambiata, quindi 1.25rem vale di solito 20 pixel. % è relativa al genitore, di solito alla sua larghezza. vw e vh sono centesimi della larghezza e dell'altezza del viewport, e ch è circa la larghezza della cifra zero nel carattere in uso.

Quale usare? Dimensionare il testo in rem rispetta chi legge: se qualcuno imposta il browser con un testo più grande, tutto ciò che è in rem cresce con lui, mentre un testo fissato in px potrebbe non farlo. Il padding in em cresce con il testo che circonda. I pixel vanno bene per le cose che non devono scalare, come un bordo di 1 pixel.

colore esadecimale#rrggbb, ogni coppia da 00 a ff
hsl()Angolo di tonalità, saturazione %, luminosità %
alfaOpacità, dopo una barra: rgb(0 0 0 / 50%)
rapporto di contrasto4.5:1 testo normale, 3:1 testo grande (WCAG 1.4.3)
pxPixel CSS, fisso
emRelativa alla dimensione del carattere dell'elemento
remRelativa alla dimensione del carattere della radice (16px di default)
vw / vh1% della larghezza / altezza del viewport
  1. Quanto rosso c'è in #ff8000, su una scala da 0 a 255?
  2. Quanto verde c'è in #ff8000?
  3. In hsl(), quale angolo di tonalità è il verde puro?
  4. Quale rapporto di contrasto minimo chiede WCAG 1.4.3 per il testo normale?
    • 4.5 to 1
    • 3 to 1
    • 7 to 1
  5. #777777 su bianco soddisfa il requisito di 4.5 a 1?
    • No, è 4.48 a 1
    • Sì, è 4.54 a 1
    • Sì, qualsiasi grigio passa
  6. La dimensione del carattere della radice è 16px. Quanti pixel sono 1.5rem?
  7. Un elemento ha font-size: 20px e padding: 0.5em. Quanti pixel di padding?
  8. Il viewport è largo 400px. Quanto è largo 50vw?
  9. Perché dimensionare il testo in rem invece che in px?
    • Segue l'impostazione della dimensione del testo nel browser di chi legge
    • È sempre più piccolo
    • Si carica più in fretta
  10. Un modulo segnala gli errori solo con un bordo rosso. Che cosa manca?
    • Un messaggio o un'icona, perché il colore da solo non basta
    • Un rosso più scuro
    • Niente
Punti chiave
  • Colori con nome, esadecimali, rgb() e hsl(); una barra aggiunge l'alfa.
  • WCAG 1.4.3: 4.5:1 per il testo normale, 3:1 per il testo grande; mai solo il colore.
  • px è fisso; em segue il carattere dell'elemento; rem segue la radice (16px di default).
Fonti di questo corso (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Consultato il: 2026-10-17