:in-range and :out-of-range CSS pseudo-classes
If a temporal or number <input>
has max
and/or min
attributes, then :in-range
matches when the value is within the specified range and :out-of-range
matches when the value is outside the specified range. If there are no range constraints, then neither pseudo-class matches.
Spec | https://www.w3.org/TR/selectors4/#range-pseudos |
---|---|
Status | W3C Working Draft |
IE | Edge | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|---|
98 | |||||
95 | 97 | ||||
94 | 96 | TP | |||
11 | 95 | 93 | 95 | 15 | 80 |
10 | 94 | 92 | 94 | 14.1 | 79 |
9 | 93 | 91 | 93 | 14 | 78 |
8 | 92 | 90 | 92 | 13.1 | 77 |
Show all | |||||
7 | 91 | 89 | 91 | 13 | 76 |
6 | 90 | 88 | 90 | 12.1 | 75 |
5.5 | 89 | 87 | 89 | 12 | 74 |
88 | 86 | 88 | 11.1 | 73 | |
87 | 85 | 87 | 11 | 72 | |
86 | 84 | 86 | 10.1 | 71 | |
85 | 83 | 85 | 10 (2,3) | 70 | |
84 | 82 | 84 | 9.1 (2,3) | 69 | |
83 | 81 | 83 | 9 (2,3) | 68 | |
81 | 80 | 81 | 8 (2,3) | 67 | |
80 | 79 | 80 | 7.1 (2,3) | 66 | |
79 | 78 | 79 | 7 (2,3) | 65 | |
18 (2) | 77 | 78 | 6.1 (2,3) | 64 | |
17 (2) | 76 | 77 | 6 (2,3) | 63 | |
16 (2) | 75 | 76 | 5.1 (2,3) | 62 | |
15 (2) | 74 | 75 | 5 | 60 | |
14 (2) | 73 | 74 | 4 | 58 | |
13 (2) | 72 | 73 | 3.2 | 57 | |
12 | 71 | 72 | 3.1 | 56 | |
70 | 71 | 55 | |||
69 | 70 | 54 | |||
68 | 69 | 53 | |||
67 | 68 | 52 | |||
66 | 67 | 51 | |||
65 | 66 | 50 | |||
64 | 65 | 49 | |||
63 | 64 | 48 | |||
62 | 63 | 47 | |||
61 | 62 | 46 | |||
60 | 61 | 45 | |||
59 | 60 | 44 | |||
58 | 59 | 43 | |||
57 | 58 | 42 | |||
56 | 57 | 41 | |||
55 | 56 | 40 | |||
54 | 55 | 39 (2) | |||
53 | 54 | 38 (2,3) | |||
52 | 53 | 37 (2,3) | |||
51 | 52 (2) | 36 (2,3) | |||
50 | 51 (2,3) | 35 (2,3) | |||
49 (3) | 50 (2,3) | 34 (2,3) | |||
48 (3) | 49 (2,3) | 33 (2,3) | |||
47 (3) | 48 (2,3) | 32 (2,3) | |||
46 (3) | 47 (2,3) | 31 (2,3) | |||
45 (3) | 46 (2,3) | 30 (2,3) | |||
44 (3) | 45 (2,3) | 29 (2,3) | |||
43 (3) | 44 (2,3) | 28 (2,3) | |||
42 (3) | 43 (2,3) | 27 (2,3) | |||
41 (3) | 42 (2,3) | 26 (2,3) | |||
40 (3) | 41 (2,3) | 25 (2,3) | |||
39 (3) | 40 (2,3) | 24 (2,3) | |||
38 (3) | 39 (2,3) | 23 (2,3) | |||
37 (3) | 38 (2,3) | 22 (2,3) | |||
36 (3) | 37 (2,3) | 21 (2,3) | |||
35 (3) | 36 (2,3) | 20 (2,3) | |||
34 (3) | 35 (2,3) | 19 (2,3) | |||
33 (3) | 34 (2,3) | 18 (2,3) | |||
32 (3) | 33 (2,3) | 17 (2,3) | |||
31 (3) | 32 (2,3) | 16 (2,3) | |||
30 (3) | 31 (2,3) | 15 (2,3) | |||
29 (3) | 30 (2,3) | 12.1 (2) | |||
28 | 29 (2,3) | 12 (2) | |||
27 | 28 (2,3) | 11.6 (2) | |||
26 | 27 (2,3) | 11.5 (2) | |||
25 | 26 (2,3) | 11.1 (2) | |||
24 | 25 (2,3) | 11 (2) | |||
23 | 24 (2,3) | 10.6 (2) | |||
22 | 23 (2,3) | 10.5 (2) | |||
21 | 22 (2,3) | 10.0-10.1 (2) | |||
20 | 21 (2,3) | 9.5-9.6 | |||
19 | 20 (2,3) | 9 | |||
18 | 19 (2,3) | ||||
17 | 18 (2,3) | ||||
16 | 17 (2,3) | ||||
15 | 16 (2,3) | ||||
14 | 15 (2,3) | ||||
13 | 14 | ||||
12 | 13 | ||||
11 | 12 | ||||
10 | 11 | ||||
9 | 10 | ||||
8 | 9 | ||||
7 | 8 | ||||
6 | 7 | ||||
5 | 6 | ||||
4 | 5 | ||||
3.6 | 4 | ||||
3.5 | |||||
3 | |||||
2 |
Safari on iOS | Opera Mini | Android Browser | Blackberry Browser | Opera Mobile | Android Chrome | Android Firefox | IE Mobile | Android UC Browser | Samsung Internet | QQ Browser | Baidu Browser | KaiOS Browser |
---|---|---|---|---|---|---|---|---|---|---|---|---|
15 | all (1) | 94 | 10 (2) | 64 | 94 | 92 | 11 | 12.12 | 15.0 | 10.4 | 7.12 | 2.5 (3) |
14.5-14.8 | 4.4.3-4.4.4 (2) | 7 | 12.1 (2) | 10 | 14.0 | |||||||
14.0-14.4 | 4.4 (2) | 12 (2) | 13.0 | |||||||||
13.4-13.7 | 4.2-4.3 (2) | 11.5 (2) | 12.0 | |||||||||
Show all | ||||||||||||
13.3 | 4.1 (2) | 11.1 (2) | 11.1-11.2 | |||||||||
13.2 | 4 (2) | 11 (2) | 10.1 | |||||||||
13.0-13.1 | 3 | 10 (2) | 9.2 | |||||||||
12.2-12.5 | 2.3 | 8.2 | ||||||||||
12.0-12.1 | 2.2 | 7.2-7.4 | ||||||||||
11.3-11.4 | 2.1 | 6.2-6.4 | ||||||||||
11.0-11.2 | 5.0-5.4 | |||||||||||
10.3 | 4 (2) | |||||||||||
10.0-10.2 (2,3) | ||||||||||||
9.3 (2,3) | ||||||||||||
9.0-9.2 (2,3) | ||||||||||||
8.1-8.4 (2,3) | ||||||||||||
8 (2,3) | ||||||||||||
7.0-7.1 (2,3) | ||||||||||||
6.0-6.1 (2,3) | ||||||||||||
5.0-5.1 (2,3) | ||||||||||||
4.2-4.3 | ||||||||||||
4.0-4.1 | ||||||||||||
3.2 |
Notes
Note that <input type="range">
can never match :out-of-range
because the user cannot input such a value, and if the initial value is outside the range, the browser immediately clamps it to the minimum or maximum (as appropriate) bound of the range.
Opera Mini correctly applies style on initial load, but does not correctly update when value is changed.
:in-range
also incorrectly matches temporal andnumber
inputs which don't havemin
ormax
attributes. See Edge bug, Chrome bug, WebKit bug.:in-range
and:out-of-range
incorrectly match inputs which are disabled or readonly. See Edge bug, Mozilla bug, WebKit bug, Chrome bug.
Resources
Data by caniuse.com
Licensed under the Creative Commons Attribution License v4.0.
https://caniuse.com/css-in-out-of-range