Web/CSS/ invalid

From Get docs


The :invalid CSS pseudo-class represents any <input> or other <form> element whose contents fail to validate.

/* Selects any invalid <input> */
input:invalid {
  background-color: pink;
}

This pseudo-class is useful for highlighting field errors for the user.

Syntax

:invalid

Examples

A form that colors elements green when they validate and red when they don't.

HTML

<form>
  <div class="field">
    <label for="url_input">Enter a URL:</label>
    <input type="url" id="url_input">
  </div>

  <div class="field">
    <label for="email_input">Enter an email address:</label>
    <input type="email" id="email_input" required>
  </div>
</form>

CSS

label {
  display: block;
  margin: 1px;  
  padding: 1px;
}

.field {
  margin: 1px;
  padding: 1px;
}

input:invalid {
  background-color: #ffdddd;
}

form:invalid {
  border: 5px solid #ffdddd;
}

input:valid {
  background-color: #ddffdd;
}

form:valid {
  border: 5px solid #ddffdd;
}
  
input:required {
  border-color: #800000;
  border-width: 3px;
}

input:required:invalid {
  border-color: #c00000;
}

Result

Accessibility concerns

The color red is commonly used to indicate invalid input. People who have certain types of color blindness will be unable to determine the input's state unless it is accompanied by an additional indicator that does not rely on color to convey meaning. Typically, descriptive text and/or an icon are used.

Notes

Radio buttons

If any one of the radio buttons in a group is required, the :invalid pseudo-class is applied to all of them if none of the buttons in the group is selected. (Grouped radio buttons share the same value for their name attribute.)

Gecko defaults

By default, Gecko does not apply a style to the :invalid pseudo-class. However, it does apply a style (a red "glow" using the box-shadow property) to the :-moz-ui-invalid pseudo-class, which applies in a subset of cases for :invalid.

Specifications

Specification Status Comment
HTML Living StandardThe definition of ':invalid' in that specification. Living Standard No change.
HTML5The definition of ':invalid' in that specification. Recommendation Defines the semantics of HTML and constraint validation.
Selectors Level 4The definition of ':invalid' in that specification. Working Draft Initial definition.

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
:invalid Chrome

Full support 10

Edge

Full support 12

Firefox

Full support 4

IE

Full support 10

Opera

Full support 10

Safari

Full support 5

WebView Android

Full support 37

Chrome Android

Full support 18

Firefox Android

Full support 4

Opera Android

Full support 10.1

Safari iOS

Full support 5

Samsung Internet Android

Full support 1.0

Applies to <form> elements Chrome

Full support 40

Edge

Full support 79

Firefox

Full support 13

IE

No support No

Opera

Full support 27

Safari

Full support 9

WebView Android

Full support 40

Chrome Android

Full support 40

Firefox Android

Full support 14

Opera Android

Full support 27

Safari iOS

Full support 9

Samsung Internet Android

Full support 4.0

Legend

Full support  
Full support
No support  
No support


See also