Cosa sono gli attributi HTML
Un attributo aggiunge informazioni a un elemento. Va dentro il tag di apertura, scritto come un nome, un segno di uguale e un valore tra virgolette: name="value". Un elemento può avere quanti attributi vuoi, separati da spazi.
href dice al link dove andare, src e alt descrivono l'immagine, type, placeholder e required configurano il campo. Ogni elemento ha il suo insieme di attributi, e alcuni (gli attributi globali più sotto) funzionano su tutti gli elementi.
Regole di sintassi
<input type="text" name="city" value="Paris" disabled>
- Nome, segno di uguale, valore tra virgolette. Le virgolette doppie sono la convenzione; funzionano anche quelle singole (
title='Say "hi"'è il modo per mettere una virgoletta doppia dentro un valore). - I nomi non distinguono maiuscole e minuscole.
CLASSeclasssono lo stesso attributo. I valori invece sì:class="Box"eclass="box"sono classi diverse. - Senza spazi le virgolette sono facoltative, ma mettile comunque.
class=big boxdà all'elemento la classebige un secondo attributo, senza senso, chiamatobox. - L'ordine non conta.
<img alt="" src="a.png">equivale a<img src="a.png" alt="">. - Ogni nome una sola volta per elemento. Se un attributo compare due volte, il browser tiene il primo e scarta il secondo senza avvisare.
Attributi booleani
Alcuni attributi sono acceso o spento. Per questi la presenza significa vero, e il valore viene ignorato. disabled, checked, required, readonly, hidden, multiple, autofocus e open funzionano tutti così.
Il terzo pulsante è disattivato anche se il valore dice false, perché il browser controlla solo se l'attributo c'è. Per spegnere un attributo booleano, toglilo. In JavaScript, button.disabled = false fa esattamente questo.
L'attributo class
class dà a un elemento uno o più nomi che CSS e JavaScript usano per trovarlo. Più elementi possono condividere una classe, e un elemento può avere più classi, separate da spazi:
Ogni classe in più aggiunge le sue regole sopra le altre. In CSS una classe si seleziona con un punto (.card); in JavaScript, element.classList.add('featured') e classList.remove le modificano. Le classi sono il modo normale di dare stile: la maggior parte del tuo CSS punterà a delle classi.
L'attributo id
id dà a un elemento un nome che deve essere unico nella pagina. Usalo quando ti serve esattamente un elemento: la destinazione di un link, un <label for> o document.getElementById.
Cliccando l'etichetta il cursore va nel campo, perché for="email" punta a id="email". Il link scorre fino a #pricing perché il frammento nell'href corrisponde all'id.
class | id | |
|---|---|---|
| Quanti elementi possono condividerlo | Quanti vuoi | Uno (unico) |
| Valori per elemento | Più di uno, separati da spazi | Uno |
| Selettore CSS | .name | #name |
| Uso tipico | Dare stile a gruppi di elementi | Destinazioni dei link, etichette, un elemento preciso in JavaScript |
Un id non può contenere spazi. Fallo iniziare con una lettera perché sia comodo da usare in CSS: #2col non è un selettore CSS valido senza escape.
Attributi globali
Questi attributi funzionano su qualsiasi elemento:
| Attributo | Cosa fa |
|---|---|
id | Nome unico dell'elemento |
class | Elenco di nomi di classe separati da spazi |
style | CSS in linea, come style="color: red" |
title | Testo del tooltip mostrato al passaggio del mouse |
lang | Lingua del contenuto, come lang="fr" |
dir | Direzione del testo: ltr, rtl o auto |
hidden | Nasconde l'elemento (booleano) |
tabindex | Rende un elemento raggiungibile con Tab, o ne imposta l'ordine |
contenteditable | Permette all'utente di modificare il testo dell'elemento |
data-* | Dati tuoi, letti con JavaScript |
L'attributo lang ha una pagina tutta sua perché influisce su lettori di schermo, traduzione e ricerca.
Attributi data-*
Quando ti serve salvare un valore tuo su un elemento, metti il prefisso data- al nome. Dopo il prefisso va bene qualsiasi nome, e JavaScript legge i valori tramite element.dataset, con i trattini trasformati in camelCase:
data-product-id diventa dataset.productId. I valori tornano sempre come stringhe, quindi convertili con Number() prima di fare calcoli. Anche il CSS può selezionarli: [data-price="4.50"].
Errori comuni
- Scrivere
classdue volte.<div class="a" class="b">tiene soloa. Metti entrambe in un solo attributo:class="a b". - Riusare un id. Due elementi con lo stesso id rompono i
#links, le etichette egetElementById, che restituisce solo il primo. Usa una classe per tutto ciò che si ripete. disabled="false"ochecked="false". L'attributo è ancora presente, quindi è ancora attivo. Toglilo.- Valori con spazi senza virgolette.
alt=My photoimpostaaltaMy. Metti tra virgolette ogni valore. - Inventare attributi senza
data-.<div price="4">è HTML non valido e potrebbe scontrarsi con un futuro attributo standard. Usadata-price.
Domande frequenti
Cos'è un attributo HTML?
Un attributo è un'informazione in più scritta dentro un tag di apertura nella forma name="value". Configura l'elemento: href indica dove porta un link, src e alt descrivono un'immagine, class e id permettono a CSS e JavaScript di trovare l'elemento.
Che differenza c'è tra class e id in HTML?
Un id deve essere unico nella pagina e identifica un solo elemento, per i link #fragment, <label for> e getElementById. Una class può essere condivisa da molti elementi, e un elemento può avere più classi separate da spazi. Usa le classi per lo stile.
Come aggiungo più classi a un elemento HTML?
Mettile in un solo attributo class separate da spazi: <div class="card featured dark">. Scrivere class due volte non funziona: il browser tiene solo il primo.
Gli attributi HTML vogliono le virgolette?
Le virgolette sono facoltative quando il valore non ha spazi né caratteri speciali, ma metterle sempre è l'abitudine sicura. class=big box dà all'elemento la classe big più un attributo separato chiamato box.
Perché il mio pulsante resta disattivato con disabled="false"?
disabled è un attributo booleano: la sua presenza significa vero, qualunque sia il valore. Per attivare l'elemento, togli l'attributo, oppure imposta button.disabled = false in JavaScript, che lo rimuove.
Posso inventare attributi HTML miei?
Usa il prefisso data-: data-price="12" o data-user-id="7" sono validi su qualsiasi elemento e si leggono in JavaScript con element.dataset. I nomi inventati senza il prefisso sono HTML non valido.