A number of pseudo-classes are used to work with form elements:
- :enabled : selects the element if it is selectable (i.e. it doesn’t have the disabled attribute set)
- :disabled : selects the element if it is not selectable (i.e. it has the disabled attribute set)
- :checked : selects an element if it has the checked attribute set (for checkboxes and radio buttons)
- :default : selects elements by default
- :valid : selects an element if its value passes HTML5 validation
- :invalid : selects an element if its value does not pass validation
- :in-range : selects an element if its value is in a certain range (for slider type elements)
- :out-of-range : selects an element if its value is not in a certain range
- :required : selects an element if it has the required attribute set
- :optional : selects an element if it doesn’t have the required attribute set
Pseudo-classes enabled and disabled
The enabled and disabled pseudo-classes select form elements depending on whether they have the disabled attribute set:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selectors in CSS3</title> </head> <body> <p><input type="text" value="Enabled" /></p> <p><input type="text" disabled value="Disabled" /></p> </body> </html>
Pseudo-class checked
The checked pseudo- class styles form elements that have the attribute set checked:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selectors in CSS3</title> </head> <body> <h2>Select Technology</h2> <p> <input type="checkbox" checked name="html5" /><span>HTML5</span> </p> <p> <input type="checkbox" name="dotnet" /><span>.NET</span> </p> <p> <input type="checkbox" name="java" /><span>Java</span> </p> <h2>Specify gender</h2> <p> <input type="radio" value="Male" checked name="gender" /><span>Male</span> </p> <p> <input type="radio" value="Female" name="gender" /><span>Female</span> </p> </body> </html>
The selector:checked + span allows you to select an element adjacent to the selected form element.
Pseudo-class default
The :default pseudo- class selects a standard form element. As a rule, the submit button acts as such an element:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selectors in CSS3</title> </head> <body> <form> <input name="login" /> <input type="submit" value="Submit" /> </form> </body> </html>
Pseudo-classes valid and invalid
The :valid and :invalid pseudo- classes style form elements depending on whether they pass validation or not.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selectors in CSS3</title> </head> <body> <form> <p><input type="text" name="login" placeholder="User Name" required /></p> <p><input type="password" name="password" placeholder="Password" required /></p> <input type="submit" value="Save" /> </form> </body> </html>
Pseudo-classes in-range and out-of-range
The :in-range and :out-of-range pseudo -classes style form elements depending on whether their value falls within a certain range. This primarily applies to the element <input type=”number” />
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selectors in CSS3</title> </head> <body> <form> <p> <label for="age">Your Age:</label> <input type="number" min="1" max="50" value="10" id="age" name="age" /> </p> <input type="submit" value="Submit" /> </form> </body> </html>
Here, the and attributes max set the range in which the value entered in the field should fall:
Pseudo-classes required and optional
The :required and :optional pseudo -classes style an element depending on whether it has the required:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Selectors in CSS3</title> </head> <body> <form> <p> <label for="login">Login:</label> <input type="text" id="login" name="login" required /> </p> <p> <label for="password">Password:</label> <input type="password" id="password" name="password" required /> </p> <p> <label for="name">Name:</label> <input type="text" id="name" name="name" /> </p> <input type="submit" value="Sign up" /> </form> </body> </html>