A gyermekelemeknek nevezzük azokat az elemeket, amelyek közvetlenül más elemek alá vannak rendezve. Ez valóban kissé absztrakt hangzik, de egy példán keresztül könnyen érthetővé válik.
<test> <p>Bekezdés 1</p> <p>Bekezdés 2</p> <p>Bekezdés 3</p> </test>
Itt a test az őselem. A p-elemek mindegyike test gyermek eleme. Ennek alapján alkalmazható a gyermek elem szelektor.
test>p { 
   color: kék; 
}
Ez a szintaxis az összes bekezdést, amelyek közvetlen gyerekei a testnek, kék színűvé teszi. 
A következő példa még egyszer megmutatja a különbségeket a body p és body>p két utasítás között.
<!DOCTYPE html>
<html lang="de">
<head>
<title>PSD-Tutorials.de</title>
<meta charset="UTF-8" />
<style>
test>p {
   betűtípus:"Courier New", Courier, egyszerű;
   betűméret: 200%;
}
test p {
   szín:#0066FF;
}
</style>
</head>
<test>
<p>Bekezdés 1</p>
<p>Bekezdés 2</p>
<p>Bekezdés 3</p>
<div>
  <p>Bekezdés 4</p>
</div>
</test>
</html>Az első három definiált p-szövegbekezdés közvetlenül a test gyerekei. A test p utasítás minden szövegbekezdésnek kék színt rendel. test>p pedig csak az első három szövegbekezdésre hat. Ezért ezek a bekezdések nagyobb méretben jelennek meg.
Következő lépésként bemutatom a következőelem szelektort. Ez a szelektor egy olyan elemet jelöl meg, amely közvetlenül másik eleme követ és ugyanazt az őselemet birtokolja. Erről ismét egy példa:
cím1+p { 
   szín: kék; 
}
Ez a szintaxis beállítja egy bekezdés szövegszínét kék színűre. Azonban ez csak akkor érvényes, ha a bekezdés az első szintű címmel közvetlenül kapcsolódik.
<!DOCTYPE html>
<html lang="de">
<head>
<title>PSD-Tutorials.de</title>
<meta charset="UTF-8" />
<style>
h1+p {
   szín: kék;
}
</style>
</head>
<test>
<h1>Cím</h1>
<p>Bekezdés 1</p>
<h2>Cím</h2>
<p>Bekezdés 2</p>
<p>Bekezdés 3</p>
<div>
  <p>Bekezdés 4</p>
</div>
</test>
</html>Tekintsétek meg az eredményt a böngészőben.
Csak az első bekezdés lesz itt kék színű. A többi bekezdés fekete. Ennek az az oka, hogy ezek a p elemek nem a h1, hanem az h2 után következnek.
Ami a következő elemeket illeti, a CSS3-ban további lehetőségek lettek bevezetve. Mostantól lehetséges az adott elem összes következő eleméhez való hozzáférés. Egy példa:
cím1~p { 
   szín: piros; 
}
Ezen szintaxis alapján az összes cím1 után következő bekezdést megjelöli.
Egyébként nem csak a közvetlen elemeket lehet ansprechen. Az elemek attribútumainak is lehet hozzáférni.
Néhány ilyen szelektor:
• [att] - Az elemnek csak tartalmaznia kell az attribútumot. Hogy értéket is megadnak-e, az lényegtelen.
• a[href] - Az összes hiperhivatkozást (<a href=…>) jelöli meg. Az elejnèv-helyekre (<a name=…>) ez nem vonatkozik.
• [align=left] - Az align attribútummal rendelkező összes elemet jelöli meg bal értelemben.
• [attr~=wert] - Azon elemeket jelöli meg, amelyekben az érték megtalálható egy szóközzel elválasztott értéklistában.
• [attr|=wert] - Jelöli az elemet, ha az általános a megadott érték egy kötőjellel elválasztott karakterláncban van az attribútumon belül.
• img[szélesség="200"] - Ez az összes képet jelöli meg, amelyeknek 200 pixel szélességűek.
Persze felmerül a kérdés, hogy mikor lehet hasznos az attribútum-szelektorok alkalmazása. Például egy űrlapra és az abban definiált jelölőnégyzetekre gondolva. A jelölőnégyzeteket - amit már tudtok - az input elem definiálja. Az a probléma azonban, hogy az input elemet a normál szövegbeviteli mezők definiálására is használják. Így az input segítségével nem lehet különböző formázást végrehajtani a jelölőnégyzetek és szövegbeviteli mezők között. Éppen itt jönnek be az attribútum-szelektorok. Jobb megértés érdekében tekintsétek meg a következő példát:
<test> Név: <input type="text" id="név" /> <br /> Férfi: <input type="checkbox" name="nem" id="nem" /> <br /> Nő: <input type="checkbox" name="nem" id="nem" /> </test>
Egyes különböző űrlapelemeket definiáltunk.
• egy szövegbeviteli mező
• két jelölőnégyzet
Ezeknek az mezőknek kell formázni.
input { 
    border:3px solid #000;
    width: 10em;
 }A mezőkhöz keret és szélesség lesz hozzárendelve.
A probléma az, hogy a meghatározott szélességet valójában csak a szövegbeviteli mezőre kellene alkalmazni, nem pedig a jelölőnégyzetekre. Az elem szelektorral azonban nincs lehetőség különbségtételre az egyes mezőtípusok között. Hogy egy ilyen megkülönböztetés működjön, attribútum szelektorokra lesz szükség. Íme egy példa arra, hogy milyen módon lehet ilyet csinálni:
input[type="checkbox"] {
    width: auto;
 }
A megadott szelektor ténylegesen csak azokra az input elemekre vonatkozik, amelyeknél az attributes:type="checkbox" kombináció található.
Ismétlések
A CSS most végül végre lehetőséget biztosít az ismétlések kezelésére. Persze felmerül a kérdés, hogy ez mire jó. Ezek a szelektorok például hasznosak lehetnek, ha egy táblázat minden második sorát más színnel szeretnénk formázni. Mielőtt bemutatnám a rendelkezésre álló szelektorokat, itt van egy nagyon tipikus példa:
<ol id="sprachen">
    <li>HTML</li>
    <li>HTML5</li>
    <li>CSS</li>
    <li>CSS3</li>
    <li>JavaScript</li>
    <li>JScript</li>
    <li>Java</li>
    <li>PHP</li>
    <li>Python</li>
</ol>
Ez egy hagyományos felsorolás. CSS segítségével most minden harmadik listaelem kap háttérszínt.
Ehhez a nth-child() szelektort használjuk. Ennek a szelektornak azon elemek vannak hatással, amelyek az n-edik gyerek elemek.
#sprachen li:nth-child(3n) {
    background-color: red;
}
A következő szelektorok állnak rendelkezésre:
• :root – A :root szelektorral egy dokumentum gyökérét lehet hivatkozni.
• :nth-child(n) – Kezeli az n-edik elemet egy szülőelemen belül. Ezt a szelestort különösen akkor használják, amikor több elemet különbözően kell formázni. Az n egy fix kulcsszó, amire számítások alkalmazhatók. Az n értéke egyenlőíthető az 1 értékkel.
• :nth-last-child(n) – Kezeli az n-edik elemet egy elemen belül, amelyeket hátulról kezd veszít.
• :nth-of-type(n)– Kezeli az n-edik elemet ugyanazon HTML típusú azonos szinten.
• :nth-last-of-type(n) – Kezeli az n-edik elemet ugyanazon szinten, melyeket hátulról kezd veszít.
• :first-child – Kezeli az első gyerek elemet egy elemen belül.
• :last-child – Kezeli az utolsó gyerek elemet egy elemen belül.
• :first-of-type – Kezeli az első elemét ugyanannak az HTML elem típusnak egy elemen belül.
• :last-of-type – Kezeli az utolsó elemét ugyanannak az HTML elem típusnak egy elemen belül.
• :only-child – Kezeli az olyan elemet, amelynek nincs testvéreleme és ezen elem az egyetlen gyerek az őselemen belül.
• :only-of-type – Kezeli az olyan elemet, amely nem azonos HTML típusú testvérelemekkel rendelkezik és ezen elem az egyetlen elem ezekből a típusokból az őselemen belül.
• :empty – Kezeli a üres elemek.
A bemutatott szelektorok segítségével az HTML-el való munka sokkal könnyebbé válik, mivel az időigényes osztálydefiníciók a múlté. 
