The :in-range
CSS pseudo-class represents an <input>
element whose current value is within the range limits specified by the min
and max
attributes.
/* Selects any <input>, but only when it has a range
specified, and its value is inside that range */
input:in-range {
background-color: rgba(0, 255, 0, 0.25);
}
This pseudo-class is useful for giving the user a visual indication that a field's current value is within the permitted limits.
Note: This pseudo-class only applies to elements that have (and can take) a range limitation. In the absence of such a limitation, the element can neither be "in-range" nor "out-of-range."
Syntax
:in-range
Examples
HTML
<form action="" id="form1">
<ul>Values between 1 and 10 are valid.
<li>
<input id="value1" name="value1" type="number" placeholder="1 to 10" min="1" max="10" value="12" required>
<label for="value1">Your value is </label>
</li>
</ul>
</form>
CSS
li { list-style: none; margin-bottom: 1em; } input { border: 1px solid black; } input:in-range { background-color: rgba(0, 255, 0, 0.25); } input:out-of-range { background-color: rgba(255, 0, 0, 0.25); border: 2px solid red; } input:in-range + label::after { content: 'okay.'; } input:out-of-range + label::after { content: 'out of range!'; }
Result
Note: An empty <input>
does not count as out of range, and will not be selected using the :out-of-range
pseudo-class selector. The :blank
pseudo-class exists to select blank inputs, although at the time of writing this is experimental and not well-supported. You could also use the required
attribute and the :invalid
pseudo-class to provide more general logic and styling for making inputs mandatory (:invalid
will style blank and out-of-range inputs).
Specifications
Specification | Status | Comment |
---|---|---|
HTML Living StandardThe definition of ':in-range' in that specification. | Living Standard | Defines when :in-range matches elements in HTML.
|
Selectors Level 4The definition of ':in-range' in that specification. | Working Draft | Initial specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
:in-range
|
Chrome Full support 10 Full support 10 Notes' Before Chrome 52, |
Edge
Full support 13 |
Firefox Full support 29 Full support 29 Notes' Before Firefox 50, |
IE
No support No |
Opera Full support 11 Full support 11 Notes' Before Opera 39, |
Safari Full support 5.1 Full support 5.1 Notes' In Safari, |
WebView Android Full support 2.3 Full support 2.3 Notes' Before version 52, |
Chrome Android Full support 18 Full support 18 Notes' Before Chrome 52, |
Firefox Android
Full support 16 |
Opera Android Full support 11 Full support 11 Notes' Before Opera 39, |
Safari iOS Full support 5 Full support 5 Notes' In Safari, |
Samsung Internet Android Full support 1.0 Full support 1.0 Notes' Before version 6.0, |
Legend
- Full support
- Full support
- No support
- No support
- See implementation notes.'
- See implementation notes.
See also
:in-range by Mozilla Contributors is licensed under CC-BY-SA 2.5.