Location pseudo-classes
These pseudo-classes relate to links, and to targeted elements within the current document.
Matches links that have not yet been visited.
Matches links that have been visited.
User action pseudo-classes
These pseudo-classes require some interaction by the user in order for them to apply, such as holding a mouse pointer over an element.
Matches when a user designates an item with a pointing device, for example holding the mouse pointer over it.
Matches when an item is being activated by the user, for example clicked on.
Matches when an element has focus.
The input pseudo-classes
These pseudo-classes relate to form elements, and enable selecting elements based on HTML attributes and the state that the field is in before and after interaction.
Represents a user interface element that is in an enabled state.
Represents a user interface element that is in a disabled state.
Matches when elements such as checkboxes and radiobuttons are toggled on.
Tree-structural pseudo-classes
These pseudo-classes relate to the location of an element within the document tree.
Represents an element that is the root of the document. In HTML this is usually the <html>
element.
Represents an element with no children other than white-space characters.
Uses An+B notation to select elements from a list of sibling elements.
Uses An+B notation to select elements from a list of sibling elements, counting backwards from the end of the list.
Matches an element that is the first of its siblings.
Matches an element that is the last of its siblings.
Matches an element that has no siblings. For example a list item with no other list items in that list.
Uses An+B notation to select elements from a list of sibling elements that match a certain type from a list of sibling elements.
Uses An+B notation to select elements from a list of sibling elements that match a certain type from a list of sibling elements counting backwards from the end of the list.
Matches an element that is the first of its siblings, and also matches a certain type selector.
Matches an element that is the last of its siblings, and also matches a certain type selector.
Matches an element that has no siblings of the chosen type selector.
Source: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes