Come sottolineare un testo in HTML
Ci sono due modi: il tag <u> oppure la proprietà CSS text-decoration: underline. Entrambi tracciano la stessa linea:
Il problema di qualsiasi sottolineatura è la terza riga: chi legge si aspetta che un testo sottolineato sia un link, e ci clicca sopra. Sottolinea il testo normale solo quando c'è un motivo chiaro.
Cosa significa il tag u
<u> non è un pulsante generico per "sottolineare". Nell'HTML attuale indica un testo con un'annotazione non esplicitata: un segno che dice "qui c'è qualcosa di particolare" senza dire cosa. Gli usi reali più comuni:
- segnare un errore di ortografia (come fa un programma di videoscrittura, spesso con una linea rossa ondulata),
- segnare i nomi propri nei testi cinesi, dove è una convenzione tipografica.
Per dare enfasi usa <em> o <strong> (vedi grassetto), e per i titoli dei libri usa <cite>. Se ti interessa solo l'aspetto, usa il CSS.
Barrato: s e del
HTML ha due tag che tracciano una linea sul testo, e hanno significati diversi:
| Tag | Significato | Uso tipico |
|---|---|---|
<s> | Non più corretto o rilevante, conservato come contesto | Prezzo vecchio, tipo di biglietto esaurito |
<del> | Rimosso dal documento | Modifiche, changelog, attività completate in una lista di cose da fare |
Segnare le modifiche con ins e del
<ins> è il compagno di <del>: segna un testo che è stato aggiunto. I browser lo sottolineano di default. Entrambi accettano datetime (quando è avvenuta la modifica) e cite (un URL che la spiega):
Questo stile rosso e verde è l'aspetto familiare di un diff. text-decoration: none su ins toglie la sottolineatura predefinita, così non sembra un link.
Sottolineato e barrato con il CSS
text-decoration si occupa della parte visiva su qualsiasi elemento: accetta un colore e uno stile, e text-decoration-thickness imposta lo spessore. Per le linee puramente decorative è lo strumento giusto:
Come togliere la sottolineatura dai link, la distanza della sottolineatura e gli altri dettagli di text-decoration si trovano nella pagina sulla sottolineatura in CSS.
Accessibilità
Il supporto degli screen reader per <s>, <del> e <ins> è incostante: alcuni li annunciano come eliminati o inseriti, molti li leggono come testo normale, quindi chi ascolta può sentire "Prezzo 49 dollari 29 dollari" senza alcun indizio su quale sia quello attuale. Quando la differenza conta, dillo anche a parole, per esempio con un testo nascosto alla vista ma letto ad alta voce, o semplicemente "Prima 49 ".
Errori comuni
- Sottolineare un testo che non è un link. Chi legge proverà a cliccarci. Per evidenziare usa il grassetto, un colore o uno sfondo.
- Usare
<u>per dare enfasi. Usa<em>o<strong>. - Usare
<strike>. È obsoleto. Usa<s>,<del>otext-decoration: line-through. - Usare
<s>per contenuti eliminati nella cronologia di un documento. Quello è<del>, che può anche registrare quando è successo. - Affidare il significato solo alla linea. Molti screen reader non la annunciano.
Domande frequenti
Come sottolineo un testo in HTML?
Racchiudilo in <u>, oppure applica text-decoration: underline nel CSS. Usa <u> solo per il suo significato specifico (per esempio segnare una parola scritta male); per una sottolineatura puramente visiva usa il CSS su uno <span> o sull'elemento stesso.
Come barro un testo in HTML?
Usa <s> per un testo che non è più corretto, come un prezzo vecchio, e <del> per un testo rimosso durante una modifica. Entrambi tracciano una linea sul testo. In CSS, text-decoration: line-through fa lo stesso a livello visivo.
Il tag <u> è deprecato?
No. <u> era deprecato in HTML 4 ma è tornato in HTML5 con un nuovo significato: testo con un'annotazione non testuale, come un errore di ortografia o un nome proprio in un testo cinese. È valido, solo che raramente è la scelta giusta.
Che fine ha fatto il tag <strike>?
<strike> è obsoleto. I browser lo mostrano ancora barrato, ma non è HTML valido. Usa <s> o <del> a seconda del significato, oppure text-decoration: line-through.
Che differenza c'è tra <s> e <del>?
<s> segna un testo non più rilevante o corretto ma conservato come contesto, come un prezzo barrato. <del> segna un testo eliminato dal documento, spesso accanto a un <ins> che mostra cosa lo ha sostituito, e può avere gli attributi datetime e cite.