CSS Pseudo-classes
CSS Pseudo-classes
A CSS pseudo-class is a keyword that can be added to a selector, to define a style for a special state of an element.
Some common use for pseudo-classes:
- Style an element when a user moves the mouse over it
- Style visited and unvisited links differently
- Style an element when it gets focus
- Style valid/invalid/required/optional form elements
- Style an element that is the first child of its parent
Syntax
Pseudo-classes are always denoted by a single colon (:) followed by the pseudo-class name:
CSS properties
}
Here we use the :hover  pseudo-class and the 
:focus  pseudo-class:
Mouse Over Me
Pseudo-classes Used on Links
For HTML links, it is common to use the following pseudo-classes:
- :link- Styles unvisited links
- :visited- Styles visited links
- :hover- Styles an link on mouse over
- :active- Styles an activated link
Example
Display links in different colors depending on state:
a:link {
color: #FF0000;
}
/* visited link */
a:visited {
color: #00FF00;
}
/* mouse over link */
a:hover {
color: #FF00FF;
}
/* selected link */
a:active {
color: #0000FF;
}
Note: a:hover MUST come after a:link and 
a:visited in the CSS definition in order to be effective! a:active MUST come after 
a:hover in the CSS definition in order to be effective!
Pseudo-class names are not case-sensitive.
:hover on <div>
Here is an example of using the 
:hover  pseudo-class on a <div> element:
:focus on <input>
Here is an example of using the 
:focus  pseudo-class to style an input field when it gets focus:
Pseudo-classes and HTML Classes
Pseudo-classes can easily be combined with HTML classes:
Example
Add a :hover pseudo-class to the <a> element with class "highlight":
color: #ff0000;
}
Simple Tooltip Hover
Hover over a <div> element to show a <p> element (like a tooltip):
Tada! Here I am!
Example
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}
The CSS :first-child Pseudo-class
The :first-child  pseudo-class matches a specific element that is the first child of another element.
Style all first child <p> elements
In the following example, the selector matches all <p> elements that is the first child of any element:
Style the first <em> element in all <p> elements
In the following example, the selector matches the first <em> element in all <p> elements:
Style all <em> elements in all first child <p> elements
In the following example, the selector matches all <em> elements in <p> elements that are the first child of another element:
The CSS :lang() Pseudo-class
The :lang()  pseudo-class 
is used to select elements with a lang attribute with the specified value.
Example
Define the quotation marks for <q> elements with lang="no":
<head>
<style>
q:lang(no) {
quotes: "~" "~";
}
</style>
</head>
<body>
<p>Some text <q lang="no">A quote in a paragraph</q> Some text.</p>
</body>
</html>
CSS Pseudo-classes Reference
For a complete list of all CSS Pseudo-classes, visit our CSS Pseudo-classes Reference.