Menu

Attributi HTML: sintassi, class, id, data-* e booleani

Gli attributi aggiungono informazioni a un elemento HTML: dove porta un link, cosa mostra un'immagine, quale classe CSS si applica. Impara la sintassi, gli attributi globali che ogni elemento accetta, class e id, gli attributi booleani e gli attributi data-*.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

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. CLASS e class sono lo stesso attributo. I valori invece sì: class="Box" e class="box" sono classi diverse.
  • Senza spazi le virgolette sono facoltative, ma mettile comunque. class=big box dà all'elemento la classe big e un secondo attributo, senza senso, chiamato box.
  • 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.

classid
Quanti elementi possono condividerloQuanti vuoiUno (unico)
Valori per elementoPiù di uno, separati da spaziUno
Selettore CSS.name#name
Uso tipicoDare stile a gruppi di elementiDestinazioni 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:

AttributoCosa fa
idNome unico dell'elemento
classElenco di nomi di classe separati da spazi
styleCSS in linea, come style="color: red"
titleTesto del tooltip mostrato al passaggio del mouse
langLingua del contenuto, come lang="fr"
dirDirezione del testo: ltr, rtl o auto
hiddenNasconde l'elemento (booleano)
tabindexRende un elemento raggiungibile con Tab, o ne imposta l'ordine
contenteditablePermette 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 class due volte. <div class="a" class="b"> tiene solo a. Metti entrambe in un solo attributo: class="a b".
  • Riusare un id. Due elementi con lo stesso id rompono i #links, le etichette e getElementById, che restituisce solo il primo. Usa una classe per tutto ciò che si ripete.
  • disabled="false" o checked="false". L'attributo è ancora presente, quindi è ancora attivo. Toglilo.
  • Valori con spazi senza virgolette. alt=My photo imposta alt a My. Metti tra virgolette ogni valore.
  • Inventare attributi senza data-. <div price="4"> è HTML non valido e potrebbe scontrarsi con un futuro attributo standard. Usa data-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.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA