CSS :disabled Pseudo Classe
Usa la pseudo-classe CSS :disabled per selezionare e stilare gli elementi disabilitati. Leggi la sintassi e pratica con esempi.
La pseudo-classe :disabled seleziona e stilizza ogni elemento attualmente disabilitato — ovvero un elemento con cui l'utente non può interagire. Un controllo diventa disabilitato quando porta l'attributo HTML disabled, quindi :disabled ti permette di dare a quei controlli un aspetto distinto "non puoi usare questo" senza aggiungere una classe extra.

Questa pagina tratta cosa conta come elemento disabilitato, la sintassi del selettore, come :disabled si relaziona al suo opposto :enabled, la differenza tra disabled e readonly, e una serie di esempi di stile eseguibili.
Quali elementi possono essere disabilitati
Solo gli elementi che possono essere disabilitati sono abbinati da :disabled. Questi sono i controlli di form interattivi:
<button><input>(tutti i tipi)<select>e i suoi<option>/<optgroup><textarea><fieldset>— disabilitare un<fieldset>disabilita ogni controllo al suo interno
Un controllo disabilitato si comporta diversamente da uno normale:
- Non accetta clic, input di testo o focus da tastiera.
- Il suo valore non viene inviato con il form.
- Non viene validato dal browser, quindi
:valid/:invalidnon si applicano ad esso.
Gli elementi di testo semplice come <p> o <div> non possono essere disabilitati, quindi non corrispondono mai a :disabled.
:disabled vs. :enabled
:disabled e :enabled sono immagini speculari. Qualsiasi controllo che può essere disabilitato è abbinato esattamente a uno di essi alla volta: :enabled quando è interattivo, :disabled quando l'attributo disabled è presente. Stilizzare entrambi offre all'utente un chiaro contrasto visivo tra controlli utilizzabili e non utilizzabili.
disabled vs. readonly
Questi due attributi sembrano simili ma non sono la stessa cosa:
disabled | readonly | |
|---|---|---|
| L'utente può metterlo a fuoco | No | Sì |
| L'utente può modificare il valore | No | No |
| Valore inviato con il form | No | Sì |
| Abbinato da | :disabled | :read-only |
Usa disabled per disattivare completamente un controllo; usa readonly (vedi :read-only) quando il valore deve rimanere visibile ed essere inviato ma non modificato.
Sintassi
Usato da solo, :disabled si applica a qualsiasi controllo disabilitato. Combinalo con un tipo o un selettore di attributo per essere più specifico:
/* every disabled control */
:disabled {
/* css declarations */
}
/* only disabled text inputs */
input[type="text"]:disabled {
background: #ccc;
cursor: not-allowed;
}Esempio di impostazione di un colore di sfondo per un elemento <input> disabilitato:
CSS :disabled code example
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input {
padding: 2px 5px;
margin-bottom: 10px;
border: 1px solid #ccc;
}
input[type=text]:enabled {
background: #eee;
}
input[type=text]:disabled {
background: #ccc;
}
</style>
</head>
<body>
<h2>:disabled selector example for input</h2>
<form action="">
<label for="name">First name:</label>
<input type="text" value="John" id="name" />
<br />
<label for="lastname">Last name:</label>
<input type="text" value="Smith" id="lastname" />
<br />
<label for="country">Country:</label>
<input type="text" disabled="disabled" value="10 High Street" id="country" />
</form>
</body>
</html>Esempio di impostazione di un colore di sfondo per elementi <option> disabilitati:
CSS :disabled another code example
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
option:disabled {
background: #8ebf42;
}
</style>
</head>
<body>
<h2>:disabled selector example for option</h2>
<select>
<option value="paris">Paris</option>
<option value="london" disabled>London</option>
<option value="moscow">Moscow</option>
<option value="rome" disabled>Rome</option>
<option value="berlin">Berlin</option>
</select>
</body>
</html>Nota: La pseudo-classe
:disabledha la precedenza su:valide:invalid. Gli elementi di form disabilitati non vengono validati dal browser.
Esempio di un elemento <input> disabilitato:
Example of disabled input element
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input {
width: 60%;
margin: 0;
border: none;
outline: 1px solid lightgrey;
outline-offset: 2px;
}
input:disabled {
background: #cccccc;
cursor: not-allowed;
}
form {
background: #67a6ec;
padding: 1.5em;
max-width: 400px;
width: 100%;
outline: 10px solid rgba(17, 58, 103, 0.6);
}
hr {
visibility: hidden;
}
label {
margin-right: 3%;
text-align: left;
display: inline-block;
width: 35%;
}
</style>
</head>
<body>
<h2>:disabled selector example with styling</h2>
<form action="#">
<label for="name">Enabled Input:</label>
<input type="text" autofocus />
<hr />
<label for="name">Disabled Input:</label>
<input type="text" disabled />
</form>
</body>
</html>Nota sull'accessibilità
Poiché un controllo disabilitato non può ricevere il focus, gli utenti da tastiera e con screen reader lo saltano direttamente senza alcuna spiegazione del perché non sia disponibile. Non fare affidamento solo sull'effetto grigio — quando il motivo è importante, aggiungi un testo di aiuto nelle vicinanze, oppure mantieni il controllo abilitato e valida all'invio. Assicurati anche che il contrasto del testo disabilitato sia sufficiente affinché rimanga leggibile.
Pseudo-classi correlate
:enabled— lo stato opposto: controlli con cui l'utente può interagire.:read-onlye:read-write— per gli inputreadonly.:required— controlli che devono essere compilati.:valide:invalid— stati di validazione del form.:checked— checkbox, radio e opzioni selezionate.:focus— l'elemento che attualmente ha il focus da tastiera.