Let us assume, I have a 3 different images, each inside a <p> element and all the <p>’s are inside a <div> (the parent element) and I want to change the style of 2nd element only.
<!DOCTYPE html>
<html>
<head>
<style>
/* tranform (rotate) the 2nd element */
.container > p:nth-child(2) {
transform: rotate(20deg);
-ms-transform: rotate(20deg);
-webkit-transform: rotate(20deg);
display: inline-block;
}
img {
border: none;
width: 75px;
}
</style>
</head>
<body>
<div class='container'>
<p>
<img src='../../images/theme/googlemaps.png'>
</p>
<!-- want to select and change style of this element only. -->
<p>
<img src='../../images/theme/javascript.png'>
</p>
<p>
<img src='../../images/theme/sqlserver.png'>
</p>
</div>
</body>
</html>Here, I am rotating the 2nd <p> element inside the parent element.
.container > p:nth-child(2) { … }
You have to mention the parent container along with the :nth-child selector. I have used the class name of the container. However, you can also use the container’s id.
Now, here’s another scenario. Along with an image inside the 2nd <p> element, I have another element, let’s say, a <span>, with a text. If I use the above example, it will rotate (or style) the span and the image. However, I want to select only the image, not the text. Here’s how I’ll do it.
.container > p:nth-child(2) img {
transform: rotate(20deg);
-ms-transform: rotate(20deg);
-webkit-transform: rotate(20deg);
display: inline-block;
}I have added "img" after the :nth-child selector.
👉 You may like this How to animatedly rotate an Image using Pure CSS
Web designers often use in-line styles on various elements. The nth-child may not show you the desired result in such cases. You can over-ride the inline styles by using the !important property with the nth-child selector.
Let us assume, inside the <img> element you have defined border: none
<img src='../../images/theme/javascript.png' style='border: none;'>
and later you realized the image needs a border. Just do this…
.container > p:nth-child(2) img {
  border: solid 1px red!important;
}
CSS Pseudo-classes with example
1) :active - The pseudo class :active styles an element when it becomes active. For example, when a button is clicked, it becomes active.
2) :before - You can use the :before class to some content (like a text etc.) before an existing content. See this example
3) :after - You can use the :after pseudo class to add some content after an existing content. See this example
4) :first-child - The :first-child represents the first element among a group of elements. See this example
5) :first-of-type - The :first-of-type selector targets the first occurrence of its type inside a container or a group of elements. Learn more about it.
6) :first-letter - The :first-letter applies style to the first letter of a string or a sentence. See this example
7) :first-line - The :first-line applies style to the first line in a block level element.
8) :focus - The :focus pseudo class is used to style an element when focus is set on it. Here's an example.
9) :hover - The :hover pseudo-class applies style to an element when a user hovers the mouse over the element.
