CSS
When Should I Use the Adjacent Sibling Selector (+) in CSS?
In CSS, selectors allow you to target elements with precision. One powerful but often underused selector is the adjacent sibling combinator (+). It lets you apply styles to an element only if it directly follows another specified element.
So, when and why should you use it? Let’s explore.
✅ What Is the Adjacent Sibling Selector (+)?
The adjacent sibling selector selects an element that is the immediate next sibling of another element.
📌 Syntax:
A + B {
/* Styles */
}
This will target the first <B> element that comes immediately after an <A> element, and they must share the same parent.
🎯 When to Use the Adjacent Sibling Selector
Here are common and effective use cases:
🔹 1. Styling Based on Preceding Elements
If you want to style an element only when it follows a specific element, the + selector is ideal.
h2 + p {
margin-top: 0;
}
✅ Removes extra space from a paragraph only if it comes right after an <h2>.
🔹 2. Creating Step-by-Step Form Feedback
You can display validation messages right after inputs dynamically:
input:invalid + .error {
display: block;
color: red;
}
✅ Shows an .error message only when the <input> is invalid.
🔹 3. Styling Active or Hover-Based UI Elements
input[type="checkbox"]:checked + label {
font-weight: bold;
}
✅ Highlights the <label> only when the associated checkbox is checked.
🔹 4. Styling Revealed Content Without JavaScript
You can toggle sections using checkboxes or details/summary elements, styling only the element directly after.
details + div {
border-top: 1px solid #ccc;
}
✅ Adds a border to the content just after a <details> element.
❗ Important Notes
- The adjacent sibling must be immediately after the first element — no other elements in between.
- Both elements must share the same parent.
- It only targets one element, not all following siblings (for that, use
~).
🧾 Summary Table
| Use Case | Example Selector | Description |
|---|---|---|
| Remove spacing after headers | h2 + p | Styles the first paragraph after a heading |
| Show error messages | input:invalid + .error | Shows error if input is invalid |
| Style labels or descriptions | input:checked + label | Highlights label after checked input |
| Toggle nearby elements visually | details + div | Applies styles to content after a toggler |
🧠 Conclusion
Use the adjacent sibling selector (+) when you want to style an element that immediately follows another — whether for structure, validation, or interactive UI feedback.
It’s a clean, JavaScript-free way to create contextual and reactive designs based on the position of elements.
Pro Tip: Combine + with pseudo-classes like :hover, :checked, or :invalid for smart, dynamic UI interactions.
