CSS: Pseudo Classes

Henna Singh
3 min readMar 6, 2022

--

#BuildTogether, Day 28/100

Today was another good day, =D I am a fan of Food Markets and today afternoon I visited one and had noodles, momos, and a coffee ;) The evening got spent meeting a friend and chilling out...

I switched to CSS today as I am still not able to figure out the last missing puzzle piece in the BookLog App. Hopefully, some guidance from a Senior developer will help me figure it out.

I did CSS selectors on the 6th day, a little delay in doing pseudo-classes :P. Every Selector can have a pseudo-class attached to it.

Pseudo-classes on the selectors allow to work with the page in a dynamic mode, for example, respond to user’s actions. Pseudo-classes can respond to the dynamic state of the page elements, for example, element changing color when you hover over it or coloring a visited link differently.

There are two types of pseudo-classes: those that determine the state of elements, and those related to the document tree

Determining the state of the elements

Pseudo-classes respond to the current state of the selector. Pseudo-classes cannot exist separately and must be attached to the selector whose state they describe.

Syntax:

css-selector:pseudo-class {
property: value;
}

pseudo-class :active reflects activation of a page element. Activation is the time between the user pressing and releasing the mouse button. The link is considered active after it has been clicked on, for example:

a:active {
color: blue;
}

pseudo-class :focus works when an element gets a focus. It usually happens to the input element of the form when one clicks on the form:

input:focus {
color: grey;
}

pseudo-class :hover makes the element react when the mouse pointer is hovering over it:

a:hover {
color: red;
}

pseudo-class is :visited reacts when the element has been visited. Mostly used for hyper-links to show the historical state of elements.

a:visited {
color: purple;
}

Working with a DOM Tree

Pseudo-classes that allow working with the DOM tree target the hierarchy of an HTML document. They work with elements depending on their order in the HTML code structure.

For example:

<ul>
<li>One</li>
<li>Two</li>
<li>Three</li>
<li>Four</li>
<li>Five</li>
<li>Six</li>
<li>Seven</li>
<li>Eight</li>
<li>Nine</li>
<li>Ten</li>
</ul>

An unordered list with 10 elements and first-child and last-child are properties that will respectively output first and the tenth item.

li:first-child {
background: green;
}
li:last-child {
background: red;
}

The nth element can also be selected using:

li:nth-child(2) { 
background: yellow;
}

The even and odd selection can be done in the following way:

li:nth-child(odd) {
color: blue;
}

li:nth-child(even) {
color: orange;
}

If there is a need to point to every nth element, it is done in the following way:

li:nth-child(3n) {
border-style: solid;
}

Codepen: pseudo-classes

I created a code-pen to experiment with pseudo-classes

The full list of pseudo-classes can be found in MDN docs.

PS: If you are interested to read “My Journey of 100 Days”, please feel free to hop onto MongoDB Community Forums ❤

--

--

Henna Singh
Henna Singh

Written by Henna Singh

Technical Speaker and an aspiring writer with avid addiction to gadgets, meet-up groups, and paper crafts. Currently doing Full Stack Diploma at Code Institute

No responses yet