The document tree:
All HTML documents are trees.
Each level of the tree is described in the same manner as a human family tree, with ancestors, descendants, parents, children and siblings. CSS rules are based on the document tree.
Eg:
<body>
<div id="content">
<h1>Heading here</h1>
<p>Lorem ipsum dolor sit amet.</p>
<p>Lorem ipsum dolor <em>sit</em> amet.</p>
<hr>
</div>
<div id="nav">
<ul>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</div>
</body>

Ancestor:
An ancestor refers to any element that is connected but further up the document tree - no matter how many levels higher.
The <body> element is the ancestor of all other elements on the page.
Descendant:
A descendant refers to any element that is connected but lower down the document tree - no matter how many levels lower.
Eg: all elements that are connected below the <div> element are descendants of that <div> in blue.

Parent:
A parent is an element that is directly above and connected to an element in the document tree.

Child:
A child is an element that is directly below and connected to an element in the document tree.
Sibling:
A sibling is an element that shares the same parent with another element. In the diagram below, the <li>'s are siblings as they all share the same parent - the <ul>.
