State pseudo-classes are used to style elements based on their current state or user interaction.
These selectors make websites more interactive and user-friendly.
State pseudo-classes are commonly used in:
| Selector | Purpose |
|---|---|
| :hover | Mouse hover state |
| :focus | Focused element |
| :active | Active clicked state |
| :visited | Visited links |
| :checked | Checked input state |
| :disabled | Disabled form fields |
| :enabled | Enabled form fields |
| :required | Required form fields |
| :valid | Valid form inputs |
| :invalid | Invalid form inputs |
| :placeholder-shown | Placeholder visible state |
Applies styles when the mouse hovers over an element.
[code theme="dark"] button:hover{ background:blue; } [/code]Styles elements when focused using keyboard or mouse.
[code theme="dark"] input:focus{ border-color:blue; } [/code]Applies styles while an element is being clicked.
[code theme="dark"] button:active{ transform:scale(.95); } [/code]Styles links that the user already visited.
[code theme="dark"] a:visited{ color:purple; } [/code]Targets checked radio buttons or checkboxes.
[code theme="dark"] input:checked{ accent-color:blue; } [/code]Styles disabled form elements.
[code theme="dark"] input:disabled{ opacity:.5; } [/code]Targets enabled form fields.
[code theme="dark"] input:enabled{ background:white; } [/code]Targets required form fields.
[code theme="dark"] input:required{ border-left:4px solid red; } [/code]Styles valid form fields.
[code theme="dark"] input:valid{ border-color:green; } [/code]Styles invalid form fields.
[code theme="dark"] input:invalid{ border-color:red; } [/code]Targets inputs displaying placeholder text.
[code theme="dark"] input:placeholder-shown{ background:#f3f4f6; } [/code]| Selector | Trigger |
|---|---|
| :hover | Mouse hover |
| :focus | Input focus |
| :checked | Checkbox/radio selected |
| :valid | Valid form value |
State pseudo-classes are fully supported across all modern browsers.