Location pseudo-classes
These pseudo-classes relate to links, and to targeted elements within the current document.
:link
Matches links that have not yet been visited.
: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.
:hover
Matches when a user designates an item with a pointing device, for example holding the mouse pointer over it.
:active
Matches when an item is being activated by the user, for example clicked on.
:focus
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.
:enabled
Represents a user interface element that is in an enabled state.
:disabled
Represents a user interface element that is in a disabled state.
:checked
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.
:root
Represents an element that is the root of the document. In HTML this is usually the <html> element.
:empty
Represents an element with no children other than white-space characters.
:nth-child
Uses An+B notation to select elements from a list of sibling elements.
:nth-last-child
Uses An+B notation to select elements from a list of sibling elements, counting backwards from the end of the list.
:first-child
Matches an element that is the first of its siblings.
:last-child
Matches an element that is the last of its siblings.
:only-child
Matches an element that has no siblings. For example a list item with no other list items in that list.
:nth-of-type
Uses An+B notation to select elements from a list of sibling elements that match a certain type from a list of sibling elements.
:nth-last-of-type
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.
:first-of-type
Matches an element that is the first of its siblings, and also matches a certain type selector.
:last-of-type
Matches an element that is the last of its siblings, and also matches a certain type selector.
:only-of-type
Matches an element that has no siblings of the chosen type selector.
Source: https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes