The :nth-child() selector helps you pick specific elements based on their order inside a parent. It makes styling easier when you want to target items by their position.
Nth-child selector in CSS
Start learning this pattern below
Jump into concepts and practice - no test required
:nth-child(an+b) { /* styles */ }an+b is a formula where a and b are numbers. For example, 2n+1 means every odd child.
You can also use keywords like odd or even instead of the formula.
li:nth-child(3) { color: red; }
tr:nth-child(even) { background-color: #f0f0f0; }
p:nth-child(2n+1) { font-weight: bold; }
div:nth-child(-n+4) { border: 1px solid blue; }
This example shows a shopping list where every even item has a light blue background. The 3rd item is styled with red bold text to stand out. This uses :nth-child(even) and :nth-child(3) selectors.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Nth-child Selector Example</title> <style> ul { list-style: none; padding: 0; max-width: 200px; margin: 1rem auto; font-family: Arial, sans-serif; } li { padding: 0.5rem; border: 1px solid #ccc; margin-bottom: 0.25rem; text-align: center; } /* Color every even item light blue */ li:nth-child(even) { background-color: #d0e7ff; } /* Make the 3rd item text red and bold */ li:nth-child(3) { color: #b22222; font-weight: bold; } </style> </head> <body> <main> <h1>Shopping List</h1> <ul aria-label="Shopping list"> <li>Milk</li> <li>Bread</li> <li>Eggs</li> <li>Cheese</li> <li>Apples</li> <li>Bananas</li> </ul> </main> </body> </html>
The :nth-child() selector counts elements of the same parent, regardless of their class or type.
Remember it counts all child elements, so if you want to target only certain types, combine it with the element name, like li:nth-child(2).
Use browser DevTools to inspect and test :nth-child() styles live for better understanding.
:nth-child() lets you style elements based on their position inside a parent.
You can use formulas or keywords like odd and even to select multiple elements.
This selector helps create patterns like stripes or highlight specific items without extra HTML.
Practice
li:nth-child(3) select?Solution
Step 1: Understand
Thenth-childselectornth-child(n)selector targets the element that is the nth child of its parent, counting all types of children.Step 2: Apply to
This means it selects theli:nth-child(3)lielement only if it is the third child of its parent. It does not select the thirdliif other elements come before it.Final Answer:
The third child of any type inside the parent -> Option CQuick Check:
li:nth-child(3)= third child of any type [OK]
- Thinking it selects the nth element of that type globally
- Confusing nth-child with nth-of-type selector
- Assuming it selects every nth element regardless of type
div inside a container using :nth-child?Solution
Step 1: Recall
The keywordevenkeyword meaningevenin:nth-child(even)selects all even-numbered children (2nd, 4th, 6th, etc.).Step 2: Match syntax to select even
Usingdivelementsdiv:nth-child(even)selects everydivthat is an even child of its parent.Final Answer:
div:nth-child(even) -> Option BQuick Check:
even = every 2nd child [OK]
- Using odd instead of even
- Using formulas like 2n+1 which select odd children
- Confusing nth-child with nth-of-type
<ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> <li>Five</li> </ul>
And CSS:
li:nth-child(2n) { color: red; }Which list items will appear red in the browser?
Solution
Step 1: Understand
The formula2ninnth-child2nselects every even child: 2nd, 4th, 6th, etc.Step 2: Apply to the list items
Items 2 (Two) and 4 (Four) are even children, so they get the red color.Final Answer:
Two and Four -> Option DQuick Check:
2n = even children = Two, Four [OK]
- Thinking 2n selects odd children
- Confusing nth-child with nth-of-type
- Assuming all items get styled
p element blue?p:nth-child(3n+1) {
color: blue;
}Solution
Step 1: Analyze the formula
The formula3n+13n+1selects children at positions 1, 4, 7, 10, ...Step 2: Compare with the goal of every 3rd element
Every 3rd element means positions 3, 6, 9, ... which is3n, not3n+1.Final Answer:
It colors the 1st, 4th, 7th <p>, not every 3rd -> Option AQuick Check:
3n+1 = 1,4,7... not every 3rd [OK]
- Using 3n+1 instead of 3n for every 3rd child
- Confusing formula offsets
- Expecting 3n+1 to select 3rd, 6th, 9th
li elements inside a ul without styling the 6th or others. Which CSS selector achieves this?Solution
Step 1: Understand the goal
We want to style only the 2nd and 4thlielements, excluding the 6th or any others.Step 2: Evaluate each option
li:nth-child(2n):not(:nth-child(6)) selects every evenliexcept the 6th, but also includes 8th, 10th, etc. li:nth-child(2n) selects all evenlielements (2nd, 4th, 6th, ...). li:nth-child(2n+2) selects 2nd, 4th, 6th, ... as well. li:nth-child(2), li:nth-child(4) explicitly selects only the 2nd and 4thlielements.Final Answer:
li:nth-child(2), li:nth-child(4) -> Option AQuick Check:
Explicitly list 2nd and 4th for exact selection [OK]
- Using formulas that select more than needed
- Trying to exclude with :not() but missing others
- Assuming 2n+2 excludes 6th child
