{
"title":":in-range and :out-of-range CSS pseudo-classes",
"description":"If a temporal or number `` 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":"http://www.w3.org/TR/selectors4/#range-pseudos",
"status":"wd",
"links":[
{
"url":"https://developer.mozilla.org/en-US/docs/Web/CSS/:out-of-range",
"title":"MDN article"
},
{
"url":"https://html.spec.whatwg.org/multipage/scripting.html#selector-in-range",
"title":"WHATWG HTML specification for `:in-range` and `:out-of-range`"
}
],
"bugs":[
],
"categories":[
"CSS"
],
"stats":{
"ie":{
"5.5":"n",
"6":"n",
"7":"n",
"8":"n",
"9":"n",
"10":"n",
"11":"n"
},
"edge":{
"12":"n",
"13":"a #2",
"14":"a #2"
},
"firefox":{
"2":"n",
"3":"n",
"3.5":"n",
"3.6":"n",
"4":"n",
"5":"n",
"6":"n",
"7":"n",
"8":"n",
"9":"n",
"10":"n",
"11":"n",
"12":"n",
"13":"n",
"14":"n",
"15":"n",
"16":"n",
"17":"n",
"18":"n",
"19":"n",
"20":"n",
"21":"n",
"22":"n",
"23":"n",
"24":"n",
"25":"n",
"26":"n",
"27":"n",
"28":"n",
"29":"a #3",
"30":"a #3",
"31":"a #3",
"32":"a #3",
"33":"a #3",
"34":"a #3",
"35":"a #3",
"36":"a #3",
"37":"a #3",
"38":"a #3",
"39":"a #3",
"40":"a #3",
"41":"a #3",
"42":"a #3",
"43":"a #3",
"44":"a #3",
"45":"a #3",
"46":"a #3",
"47":"a #3",
"48":"a #3",
"49":"a #3",
"50":"y",
"51":"y",
"52":"y",
"53":"y"
},
"chrome":{
"4":"n",
"5":"u",
"6":"u",
"7":"u",
"8":"u",
"9":"u",
"10":"u",
"11":"u",
"12":"u",
"13":"u",
"14":"u",
"15":"a #2 #3",
"16":"a #2 #3",
"17":"a #2 #3",
"18":"a #2 #3",
"19":"a #2 #3",
"20":"a #2 #3",
"21":"a #2 #3",
"22":"a #2 #3",
"23":"a #2 #3",
"24":"a #2 #3",
"25":"a #2 #3",
"26":"a #2 #3",
"27":"a #2 #3",
"28":"a #2 #3",
"29":"a #2 #3",
"30":"a #2 #3",
"31":"a #2 #3",
"32":"a #2 #3",
"33":"a #2 #3",
"34":"a #2 #3",
"35":"a #2 #3",
"36":"a #2 #3",
"37":"a #2 #3",
"38":"a #2 #3",
"39":"a #2 #3",
"40":"a #2 #3",
"41":"a #2 #3",
"42":"a #2 #3",
"43":"a #2 #3",
"44":"a #2 #3",
"45":"a #2 #3",
"46":"a #2 #3",
"47":"a #2 #3",
"48":"a #2 #3",
"49":"a #2 #3",
"50":"a #2 #3",
"51":"a #2 #3",
"52":"a #2",
"53":"y",
"54":"y",
"55":"y",
"56":"y",
"57":"y"
},
"safari":{
"3.1":"n",
"3.2":"n",
"4":"n",
"5":"u",
"5.1":"a #2 #3",
"6":"a #2 #3",
"6.1":"a #2 #3",
"7":"a #2 #3",
"7.1":"a #2 #3",
"8":"a #2 #3",
"9":"a #2 #3",
"9.1":"a #2 #3",
"10":"a #2 #3",
"TP":"y"
},
"opera":{
"9":"u",
"9.5-9.6":"u",
"10.0-10.1":"a #2",
"10.5":"a #2",
"10.6":"a #2",
"11":"a #2",
"11.1":"a #2",
"11.5":"a #2",
"11.6":"a #2",
"12":"a #2",
"12.1":"a #2",
"15":"a #2 #3",
"16":"a #2 #3",
"17":"a #2 #3",
"18":"a #2 #3",
"19":"a #2 #3",
"20":"a #2 #3",
"21":"a #2 #3",
"22":"a #2 #3",
"23":"a #2 #3",
"24":"a #2 #3",
"25":"a #2 #3",
"26":"a #2 #3",
"27":"a #2 #3",
"28":"a #2 #3",
"29":"a #2 #3",
"30":"a #2 #3",
"31":"a #2 #3",
"32":"a #2 #3",
"33":"a #2 #3",
"34":"a #2 #3",
"35":"a #2 #3",
"36":"a #2 #3",
"37":"a #2 #3",
"38":"a #2 #3",
"39":"a #2",
"40":"y",
"41":"y",
"42":"y",
"43":"y"
},
"ios_saf":{
"3.2":"n",
"4.0-4.1":"n",
"4.2-4.3":"n",
"5.0-5.1":"a #2 #3",
"6.0-6.1":"a #2 #3",
"7.0-7.1":"a #2 #3",
"8":"a #2 #3",
"8.1-8.4":"a #2 #3",
"9.0-9.2":"a #2 #3",
"9.3":"a #2 #3",
"10-10.1":"a #2 #3"
},
"op_mini":{
"all":"a #1"
},
"android":{
"2.1":"n",
"2.2":"n",
"2.3":"n",
"3":"n",
"4":"a #2",
"4.1":"a #2",
"4.2-4.3":"a #2",
"4.4":"a #2",
"4.4.3-4.4.4":"a #2",
"53":"y"
},
"bb":{
"7":"n",
"10":"a #2"
},
"op_mob":{
"10":"a #2",
"11":"a #2",
"11.1":"a #2",
"11.5":"a #2",
"12":"a #2",
"12.1":"a #2",
"37":"a #2"
},
"and_chr":{
"54":"y"
},
"and_ff":{
"50":"y"
},
"ie_mob":{
"10":"n",
"11":"n"
},
"and_uc":{
"11":"a #2"
},
"samsung":{
"4":"a #2"
}
},
"notes":"Note that `` 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.",
"notes_by_num":{
"1":"Opera Mini correctly applies style on initial load, but does not correctly update when value is changed.",
"2":"`:in-range` also incorrectly matches temporal and `number` inputs which don't have `min` or `max` attributes. See [Edge bug](https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7200501/), [Chrome bug](https://bugs.chromium.org/p/chromium/issues/detail?id=603268), [WebKit bug](https://bugs.webkit.org/show_bug.cgi?id=156558).",
"3":"`:in-range` and `:out-of-range` incorrectly match inputs which are disabled or readonly. See [Edge bug](https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7190958/), [Mozilla bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1264157), [WebKit bug](https://bugs.webkit.org/show_bug.cgi?id=156530), [Chrome bug](https://bugs.chromium.org/p/chromium/issues/detail?id=602568)."
},
"usage_perc_y":50.09,
"usage_perc_a":42.18,
"ucprefix":false,
"parent":"",
"keywords":"in,out,of,range,:in-range,:out-of-range",
"ie_id":"cssrangepseudoclasses",
"chrome_id":"",
"firefox_id":"",
"webkit_id":"",
"shown":true
}