css selectors Form pseudo-classes

CSS Selectors: Form Pseudo-classes

Think about filling out a form online. The best forms guide you smoothly through the process, highlighting what needs attention and giving feedback instantly. In web design, form pseudo-classes in CSS help you achieve this by allowing you to style form elements based on their state, making the user experience seamless and intuitive.

Pluralsight Logo
Accelerate your tech career
with hands-on learning.
Whether you're a tech newbie or a total pro,
get the skills and confidence to land your next move.
Start 10-Day Free Trial

What are Form Pseudo-classes?

Form pseudo-classes are CSS selectors that apply styles to form elements based on their state. They help you create interactive and user-friendly forms by changing the appearance of elements when they are focused, enabled, disabled, checked, or even when they contain valid or invalid data.

Here’s how they look:

selector:pseudo-class {
  property: value;
}

Why Use Form Pseudo-classes?

  • Enhanced User Experience: Form pseudo-classes improve the user experience by providing visual feedback, guiding users through the form-filling process efficiently.
  • Interactive Design: They enable you to create responsive forms that react to user actions, making the forms more interactive and engaging.
  • Simplified Code: Using form pseudo-classes reduces the need for JavaScript for certain interactive styles, keeping your code clean and maintainable.

Practical Examples

Let’s dive into some practical examples to see how different form pseudo-classes can be used effectively.

Example 1: :focus

The :focus pseudo-class applies styles to an element when it has focus, such as when it is clicked or tabbed to.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Focus Effect</title>
	
    <style>
	
        input:focus {
            border-color: green;
            outline: none;
        }
		
    </style>
</head>
<body>

    <input type="text" placeholder="Click to focus">
	
</body>
</html>

In this example, the input:focus selector changes the border color of the input field to green and removes the outline when the input field is focused, providing immediate feedback to the user.

Example 2: :enabled and :disabled

The :enabled and :disabled pseudo-classes apply styles to enabled or disabled form elements.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Enabled and Disabled States</title>
	
    <style>
	
        input:enabled {
            background-color: white;
        }

        input:disabled {
            background-color: lightgray;
        }
		
    </style>
</head>
<body>

    <input type="text" placeholder="I am enabled">
    <input type="text" placeholder="I am disabled" disabled>
	
</body>
</html>

Here, the input:enabled selector styles enabled input fields with a white background, while the input:disabled selector styles disabled input fields with a light gray background, visually distinguishing their states.

Example 3: :checked

The :checked pseudo-class applies styles to elements that are checked, such as checkboxes or radio buttons.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Checked State</title>
	
    <style>
	
        input[type="checkbox"]:checked + label {
            color: blue;
            font-weight: bold;
        }
		
    </style>
</head>
<body>

    <input type="checkbox" id="check">
    <label for="check">Check me!</label>
	
</body>
</html>

In this example, the input[type="checkbox"]:checked + label selector changes the color and font weight of the label when the associated checkbox is checked, providing clear feedback to the user.

Example 4: :valid and :invalid

The :valid and :invalid pseudo-classes apply styles to form elements based on whether their value is valid according to the input type and constraints.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Valid and Invalid States</title>
    <style>
	
        input:valid {
            border-color: green;
        }

        input:invalid {
            border-color: red;
        }
		
    </style>
</head>
<body>
    <form>
	
        <input type="email" placeholder="Enter your email" required>
        <input type="submit" value="Submit">
		
    </form>
</body>
</html>

Here, the input:valid selector styles input fields with a green border when the value is valid, while the input:invalid selector styles input fields with a red border when the value is invalid, providing instant validation feedback to the user.

Example 5: :required and :optional

The :required and :optional pseudo-classes apply styles to form elements based on whether they are required or optional.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Required and Optional Fields</title>
	
    <style>
	
        input:required {
            border-left: 10px solid red;
        }

        input:optional {
            border-left: 10px solid green;
        }
		
    </style>
</head>
<body>

    <form>
	
        <input type="text" placeholder="Required field" required>
        <input type="text" placeholder="Optional field">
        <input type="submit" value="Submit">
		
    </form>
	
</body>
</html>

In this example, the input:required selector styles required input fields with a red left border, while the input:optional selector styles optional input fields with a green left border, helping users quickly identify required and optional fields.

Conclusion

Form pseudo-classes are essential tools in CSS that enable you to create interactive and user-friendly forms. By using pseudo-classes like :focus, :enabled, :disabled, :checked, :valid, :invalid, :required, and :optional, you can enhance the user experience, create engaging forms, and keep your code clean and maintainable. So, the next time you design a form, remember to use form pseudo-classes — your key to creating intuitive and effective web forms.

Scroll to Top