The :indeterminate
CSS pseudo-class represents any form element whose state is indeterminate, such as checkboxes which have their HTML indeterminate
attribute set to true
, radio buttons which are members of a group in which all radio buttons are unchecked, and indeterminate <progress>
elements.
input:indeterminate {
background: lime;
}
Elements targeted by this selector are:
This example applies special styles to the labels associated with indeterminate form fields.
HTML
<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>
CSS
input:indeterminate + label {
background: lime;
}
JavaScript
const inputs = document.getElementsByTagName("input");
for (let i = 0; i < inputs.length; i++) {
inputs[i].indeterminate = true;
}
Result
Progress bar
HTML
CSS
progress {
margin: 4px;
}
progress:indeterminate {
width: 80vw;
height: 20px;
}
Result
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
:indeterminate |
1 |
12 |
2 |
10 |
9 |
3 |
≤37 |
18 |
4 |
10.1 |
1 |
1.0 |
checkbox |
1 |
12 |
3.6 |
10 |
10.6 |
3 |
≤37 |
18 |
4 |
11 |
1 |
1.0 |
progress |
6 |
12 |
6 |
10 |
15 |
5.1 |
37 |
18 |
6 |
14 |
5 |
1.0 |
radio |
39 |
79 |
51 |
No |
26 |
10 |
39 |
39 |
51 |
26 |
10 |
4.0 |