A CSS pseudo-class is a keyword added to a selector that specifies a special state of the selected element(s). For example, :hover
can be used to apply a style when the user hovers over a button.
Pseudo-classes let you apply a style to an element not only in relation to the content of the document tree, but also in relation to external factors like the history of the navigator (:visited
, for example), the status of its content (like :checked
on certain form elements), or the position of the mouse (like :hover
, which lets you know if the mouse is over an element or not).
In contrast to pseudo-classes, pseudo-elements
can be used to style a specific part of an element.
Syntax
selector:pseudo-class { property: value; }
Like regular classes, you can chain together as many pseudo-classes as you want in a selector.
Index of standard pseudo-classes
:active
:any
:checked
:default
:dir()
:disabled
:empty
:enabled
:first
:first-child
:first-of-type
:fullscreen
:focus
:hover
:indeterminate
:in-range
:invalid
:lang()
:last-child
:last-of-type
:left
:link
:not()
:nth-child()
:nth-last-child()
:nth-last-of-type()
:nth-of-type()
:only-child
:only-of-type
:optional
:out-of-range
:read-only
:read-write
:required
:right
:root
:scope
:target
:valid
:visited
Specifications
Specification | Status | Comment |
---|---|---|
Fullscreen API | Living Standard | Defined :fullscreen . |
WHATWG HTML Living Standard | Living Standard | No change from HTML5. |
Selectors Level 4 | Working Draft | Defined :any-link , :local-link , :scope , :active-drop-target , :valid-drop-target , :invalid-drop-target , :current , :past , :future , :placeholder-shown , :user-error , :blank , :nth-match() , :nth-last-match() , :nth-column() , :nth-last-column() , and :matches() .No significant change for pseudo-classes defined in Selectors Level 3 and HTML5 (though semantic meaning not taken over). |
HTML5 | Recommendation | Defined the semantic meaning, in the HTML context, of :link , :visited , :active , :enabled , :disabled , :checked , and :indeterminate .Defined :default , :valid , :invalid , :in-range , :out-of-range , :required , :optional , :read-only , :read-write , and :dir() . |
CSS Basic User Interface Module Level 3 | Candidate Recommendation | Defined :default , :valid , :invalid , :in-range , :out-of-range , :required , :optional , :read-only , and :read-write , but without the associated semantic meaning. |
Selectors Level 3 | Recommendation | Defined :target , :root , :nth-child() , :nth-last-of-child() , :nth-of-type() , :nth-last-of-type() , :last-child , :first-of-type , :last-of-type , :only-child , :only-of-type , :empty , and :not() .Defined the syntax of :enabled , :disabled , :checked , and :indeterminate , but without the associated semantic meaning.No significant change for pseudo-classes defined in CSS Level 2 (Revision 1). |
CSS Level 2 (Revision 1) | Recommendation | Defined :lang() , :first-child , :hover , and :focus .No significant change for pseudo-classes defined in CSS Level 1. |
CSS Level 1 | Recommendation | Defined :link , :visited , and :active , but without the associated semantic meaning. |