Selektor p:first-child składa się z dwóch części: selektora typu p oraz pseudoklasy strukturalnej :first-child.
Pseudoklasa :first-child wybiera element, który jest pierwszym dzieckiem swojego rodzica (czyli wśród wszystkich bezpośrednich dzieci danego rodzica znajduje się na pierwszej pozycji w drzewie DOM). Połączenie tego z p zawęża wynik: styl otrzymają tylko te elementy p, które spełniają warunek "pierwszego dziecka".
Dlatego poprawne jest stwierdzenie: "Pierwszy paragraf w każdym elemencie rodzica", rozumiane jako: "każdy element p, który jest pierwszym dzieckiem swojego rodzica, będzie zielony". Jeśli w jakimś kontenerze pierwszym dzieckiem jest np. nagłówek, obrazek albo inny element, to znajdujący się później paragraf (nawet jeśli jest pierwszym paragrafem) nie zostanie dopasowany.
Dlaczego pozostałe odpowiedzi są błędne?
- "Pierwszy paragraf na stronie." – selektor nie działa globalnie dla całego dokumentu. Warunek jest sprawdzany osobno dla każdego rodzica w DOM.
- "Pierwsze dziecko każdego paragrafu." – selektor nie wybiera dzieci elementu p; wybiera sam element p, jeśli to on jest pierwszym dzieckiem swojego rodzica.
- "Wszystkie paragrafy na stronie." – to odpowiadałoby selektorowi p bez pseudoklasy. Tutaj dodatkowy warunek mocno ogranicza dopasowanie.
Wskazówka egzaminacyjna: zawsze czytaj selektor od prawej do lewej i sprawdzaj, co jest elementem dopasowywanym (tu: p) oraz jaki warunek struktury DOM narzuca pseudoklasa (tu: pierwsze dziecko rodzica).