I understand the difference between a child and descendants is just fine. However, I have a problem with the selector. Perhaps I misunderstand something. Take the following HTML as an example. This is a 3 level navigation menu.
<div id="nav">
<ul class="menu">
<li><a href="#">Menu Item 1</a></li>
<li><a href="#">Menu Item 2</a>
<ul class="sub-menu">
<li><a href="#">Sub Menu Item 1</a></li>
<li><a href="#">Sub Menu Item 2</a>
<ul class="sub-menu">
<li><a href="#">Sub Sub Menu Item 1</a></li>
<li><a href="#">Sub Sub Menu Item 2</a></li>
<li><a href="#">Sub Sub Menu Item 3</a></li>
</ul>
</li>
<li><a href="#">Sub Menu Item 3</a></li>
</ul>
</li>
<li><a href="#">Menu Item 3</a></li>
</ul>
</div>
Based on my understanding of the child (>) selector in css, the following would be true:
#nav {}
#nav ul.menu {}
#nav ul.menu > li {}
#nav ul.menu > li > ul.sub-menu li {}
#nav ul.menu > li > ul.sub-menu ul.sub-menu {}
However, this does not seem to be the case. Css for tier 2 also applies to tier 3. And only with the declaration !importantI can rewrite the 2nd level in the last css definition.
Make sense?
Chris source
share