This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The :indeterminate CSS pseudo-class represents any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, radio buttons which are members of a group in which all radio buttons are unchecked, and <progress> elements with no value attribute.
/* Selects any <input> whose state is indeterminate */
input:indeterminate {
background: lime;
}
Elements targeted by this selector are:
<input type="checkbox"> elements with the indeterminate property set to true.<input type="radio"> elements with the same name value and none of them checked.<progress> elements with no value, placing them in an indeterminate state.:indeterminate {
/* ... */
}
This example applies special styles to the labels associated with indeterminate form fields.
<fieldset>
<legend>Checkbox</legend>
<div>
<input type="checkbox" id="checkbox" />
<label for="checkbox">This checkbox label starts out lime.</label>
</div>
</fieldset>
<fieldset>
<legend>Radio</legend>
<div>
<input type="radio" id="radio1" name="radioButton" value="val1" />
<label for="radio1">First radio label starts out lime.</label>
</div>
<div>
<input type="radio" id="radio2" name="radioButton" value="val2" />
<label for="radio2">Second radio label also starts out lime.</label>
</div>
</fieldset>
input:indeterminate + label {
background: lime;
}
const inputs = document.getElementsByTagName("input");
for (const input of inputs) {
input.indeterminate = true;
}
<progress></progress>
progress {
margin: 4px;
}
progress:indeterminate {
width: 80vw;
height: 20px;
}
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
:indeterminate |
1 | 12 | 2 | 9 | 3 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
checkbox |
1 | 12 | 3.6 | 10.6 | 3 | 18 | 4 | 11 | 1 | 1.0 | 4.4 | 1 |
progress |
6 | 12 | 6 | 15 | 5.1 | 18 | 6 | 14 | 5 | 1.0 | 37 | 5 |
radio |
39 | 79 | 51 | 26 | 10 | 39 | 51 | 26 | 10 | 4.0 | 39 | 10 |
<input type="checkbox"> element's indeterminate property<input> and the HTMLInputElement interface which implements it.:checked CSS selector lets you style checkboxes based on whether they're checked or not
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/:indeterminate