Difference Between :last-of-type And :last-child

CSS

08/07/2021


Starting off with the simpler :last-of-type pseudo-class, imagine this example.

HTML
<style>
li:last-of-type {
color: red;
}
</style>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li> <!-- Red -->
</ul>

In plain English, this rule simply means: select and color red the last element of type li inside a parent element. You can mix the group with as many other tags as you'd like and still get the same result.

HTML
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<p>Bus</p>
<li>4</li> <!-- Red -->
<p>Car</p>
</ul>

Gotcha

:last-child is not as straightforward and can cause quite some confusion if not understood properly.

HTML
<style>
li:last-child {
color: red;
}
</style>

In plain English, this rule goes a bit differently: select and color red the last element of a parent if it's of type li. As opposed to :last-of-type, this pseudo-class actually contains a condition.

HTML
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<p>Bus</p>
<li>4</li> <!-- Not red -->
<p>Car</p>
</ul>

If you were to apply it to our last example, 4 would not be colored red. The reason is that the last element of our ul parent is not of type li, but of type p.


WRITTEN BY

Code and stuff