Grow your CSS skills. Land your dream job.

Descendant

Last updated on:

A descendant selector in CSS is any selector with white space between two selectors without a combinator. Here's some examples:

ul li {  }
header h2  {  }
footer a  {  }
.module div {  }
#info-toggle span  {  }
div dl dt a  {  }

Take ul li { } for example. It means "any list item that is a descendant of an unordered list."

Descendant means anywhere nested within it in the DOM tree. Could be a direct child, could be five levels deep, it is still a descendant. This is different than a child combinator (>) which requires the element to be the next nested level down.

To illustrate, div span { } will match:

<div>
  <span>I will match</span>
  <ul>
    <li>
       <span>I will match too</span>
    </ul>
  </ul>
</div>

You probably shouldn't worry about it very much, but the decedent selector is pretty "expensive" - meaning hard/slow for rendering engines to figure out and do stuff with. MDN:

The descendant selector is the most expensive selector in CSS. It is dreadfully expensive—especially if the selector is in the Tag or Universal Category.

But only in comparison to other selectors. It's still blazingly fast and you'll probably never notice it unless you go crazy.

Browser Support

Chrome Safari Firefox Opera IE Android iOS
Any Any Any Any Any Any Any

Comments

  1. Francisc
    Permalink to comment#

    Speeeeeeeeeeeeeeeeeeeeeel check!
    “Decendant” :)

  2. Yousif
    Permalink to comment#

    Yeah I guess he is stupid :P

Leave a Comment

Posting Code

Markdown is supported in the comment area, so you can write inline code in backticks like `this` or multiline blocks of code in in triple backtick fences like ```this```. You don't need to escape code in backticks, Markdown does that for you.

Sadly, it's kind of broken. WordPress only accepts a subset of HTML in comments, which makes sense, because certainly some HTML can't be allowed, like <script> tags. But this stripping happens before the comment is processed by Markdown (via Jetpack). It seems to me that would be reversed, because after Markdown processes code in backticks, it's escaped, thus safe. If you think you can fix this issue, get in touch!

If you need to make sure the code (typically HTML) you post absolutely posts correctly, escape it and put it within <pre><code> tags.

Current ye@r *

*May or may not contain any actual "CSS" or "Tricks".