L' >
sélecteur correspond à diriger les enfants uniquement, et non aux descendants.
Vous voulez
div.test th, td, caption {}
ou, plus probablement,
div.test th, div.test td, div.test caption {}
Edit:
Le premier dit
div.test th, /* any <th> underneath a <div class="test"> */
td, /* or any <td> anywhere at all */
caption /* or any <caption> */
Alors que le second est dit
div.test th, /* any <th> underneath a <div class="test"> */
div.test td, /* or any <td> underneath a <div class="test"> */
div.test caption /* or any <caption> underneath a <div class="test"> */
Vos originaux de l' div.test > th
, dit - any <th> which is a **direct** child of <div class="test">
, ce qui signifie qu'il va correspondre <div class="test"><th>this</th></div>
, mais ne pas correspondre <div class="test"><table><th>this</th></table></div>