In CSS, combinators define relationships between selectors. Instead of selecting elements individually, combinators allow you to target elements based on how they are positioned within the HTML structure.
Software developers are building the future. Become part of them.
There are four main CSS combinators:
space)>)+)~)Let’s break each down—definitions, diagrams, and examples.
– space)Selects any element nested inside another, at any depth.
A B = Select B only if it exists anywhere inside A.
<div class="container">
<p>First paragraph</p>
<div>
<p>Nested paragraph</p>
</div>
</div> .container p {
color: blue;
} All <p> elements inside .container—no matter how deeply nested—turn blue.
>)Selects direct children only, not deeper descendants.
A > B = Select B only if it is a direct child of A.
<ul class="menu">
<li>Home</li>
<li>
About
<ul>
<li>Team</li>
</ul>
</li>
</ul> .menu > li {
font-weight: bold;
} Only the top-level list items (Home and About) become bold, not the nested “Team” item.
+)Selects the immediately next sibling element.
A + B = Select B only if it comes right after A.
<h2>Title</h2>
<p>Subtitle paragraph</p>
<p>Another paragraph</p> h2 + p {
margin-top: 0;
} Only the first <p> after <h2> is affected.
~)Selects all siblings that come after a specified element—not just the first one.
A ~ B = Select every B that appears after A in the same parent.
<div>
<h3>Header</h3>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</div> h3 ~ p {
color: green;
} All <p> elements after <h3> turn green.
| Combinator | Symbol | Selects | Example | Meaning |
|---|---|---|---|---|
| Descendant | (space) | Any nested element | div p | All <p> inside <div> |
| Child | > | Direct children | ul > li | Only top-level <li> |
| Adjacent Sibling | + | Next element only | h1 + p | Only the first <p> after <h1> |
| General Sibling | ~ | All following siblings | h1 ~ p | All <p> after <h1> |
Use them sparingly in large apps for performance.
They prevent styles from leaking into unintended nested elements.
Example:
input.error + small {
color: red;
} Example:
.card > h2 + p {
opacity: 0.7;
} Meaning: Select the <p> that comes right after <h2> inside .card.
CSS combinators are essential for writing clean, predictable, and efficient styles. They allow you to target elements based on their structural relationship, making your CSS more modular and powerful.
Latest tech news and coding tips.
How to Build APIs That Are Easy to Use, Scale, and Maintain Learn on the…
Almost everyone starts learning JavaScript with the wrong expectations. Let's fix them. Download the Codeflare…
Phaser JS is a powerful, open-source HTML5 game development framework used for creating 2D games that…
JavaScript / Node.js Authentication Libraries 1. Passport.js One of the most popular authentication middleware libraries…
Every profession comes with its own set of tools. A carpenter has a toolbox, a…
Every application that stores and manages data relies on a set of basic operations known…