<aside> ➡️ POST MOVED TO GOOGLE DOCS FOR COLLABORATION PURPOSES
</aside>
Today, it’s all about Pseudo-classes: the must-have, the unusual and even the brand new experimental ones!
Pseudo-classes allow us to target the state of an element. Pseudo-classes themselves are keywords that we add after our selector.
For example, :hover
is a pseudo-class! A user expects some kind of sign if an element is interactive.
Pseudo-classes let us apply styles to mouse/keyboard interactions (ex: :hover
, :active
, :focus
), fields based on their content (ex: :blank
, :valid
, :checked
) or their position in the DOM (ex: :first-child
, :nth-child()
, :root
).
<aside>
🗒️ That syntax might remind you of pseudo-elements like ::before
and ::selection
. Pseudo-classes and pseudo-elements are different things.
Pseudo-classes target states of an element like hover, disabled, or visited. Pseudo-elements affect elements that aren’t explicitly written to the DOM, like a before element, a backdrop, or the selection.
This post will focus on pseudo-classes only.
</aside>
Relative selectors are any pseudo-class used to select an element based on its position on the DOM.
You’ve probably used :first-child
or :nth-child
in the past; they are super useful whenever the position in the parent matters.
Another example of a relative selector that I use all the time for styling tables is the nth-child(even)
selector that selects even elements.
There is also the common trick of setting a margin-bottom
to some elements and making it 0px
on the :last-child
- however we have more up-to date ways of doing this nowadays.
<aside> 💡 For more information, read the MDN documentation for relative selectors, referred as Tree structural pseudo-classes.
</aside>
A user interaction selector is any selector responding to a user input like a mouse click, a hover, or an element being focused with the keyboard.
In CSS development, we use these a lot, so let’s dive into them!
First, let’s talk about the links. You might know that we can use the :visited
pseudo-class to target any link that was visited. That is the purple color we see on the Google results we’ve already visited:
Results from Google. The link we visited already appears in purple instead of blue, stylized using the visited
pseudo-class.
We can also target non-visited links by using the :link
pseudo-class.