A CSS selector can contain more than one simple selector. Between the simple selectors, we can include a combinator.
There are four different combinators in CSS:
descendant selector (space)
child selector (>)
adjacent sibling selector (+)
general sibling selector (~)
Descendant Selector
The descendant selector matches all elements that are descendants of a specified element.
The following example selects all <p> elements inside <div> elements:
// Some code<!DOCTYPEhtml><html><head><style>divp {background-color:yellow;}</style></head><body><h2>Descendant Selector</h2><p>The descendant selector matches all elements that are descendants of a specified element.</p><div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p> <section><p>Paragraph 3 in the div.</p></section></div><p>Paragraph 4. Not in a div.</p><p>Paragraph 5. Not in a div.</p></body></html>
Child Selector (>)
The child selector selects all elements that are the children of a specified element.
The following example selects all <p> elements that are children of a <div> element:
// Some code<!DOCTYPEhtml><html><head><style>div>p {background-color:yellow;}</style></head><body><h2>Child Selector</h2><p>The child selector (>) selects all elements that are the children of a specified element.</p><div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p> <section><!-- not Child but Descendant --> <p>Paragraph 3 in the div (inside a section element).</p> </section> <p>Paragraph 4 in the div.</p></div><p>Paragraph 5. Not in a div.</p><p>Paragraph 6. Not in a div.</p></body></html>
Adjacent Sibling Selector (+)
The adjacent sibling selector is used to select an element that is directly after another specific element.
Sibling elements must have the same parent element, and "adjacent" means "immediately following".
The following example selects the first <p> element that are placed immediately after <div> elements:
<!DOCTYPEhtml><html><head><style>div+p {background-color:yellow;}</style></head><body><h2>Adjacent Sibling Selector</h2><p>The + selector is used to select an element that is directly after another specific element.</p><p>The following example selects the first p element that are placed immediately after div elements:</p><div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p></div><p>Paragraph 3. After a div.</p><p>Paragraph 4. After a div.</p><div> <p>Paragraph 5 in the div.</p> <p>Paragraph 6 in the div.</p></div><p>Paragraph 7. After a div.</p><p>Paragraph 8. After a div.</p></body></html>
General Sibling Selector (~)
The general sibling selector selects all elements that are next siblings of a specified element.
The following example selects all <p> elements that are next siblings of <div> elements:
// Some code<!DOCTYPEhtml><html><head><style>div~p {background-color:yellow;}</style></head><body><h2>General Sibling Selector</h2><p>The general sibling selector (~) selects all elements that are next siblings of a specified element.</p><p>Paragraph 1.</p><div> <p>Paragraph 2.</p></div><p>Paragraph 3.</p><code>Some code.</code><p>Paragraph 4.</p></body></html>