W przedstawionym fragmencie CSS ten sam selektor p pojawia się trzykrotnie i za każdym razem ustawia właściwość color na inną wartość. Kluczowe jest to, że:
- wszystkie reguły dotyczą tych samych elementów (akapity, czyli elementy <p>),
- wszystkie mają taką samą specyficzność (identyczny selektor typu),
- żadna nie ma dodatkowego priorytetu (np. !important) ani nie wynika z innego źródła o wyższym pierwszeństwie.
W CSS konflikty rozstrzyga kaskada. Jeżeli dwie (lub więcej) deklaracje mają ten sam "poziom ważności" i tę samą specyficzność, wtedy decyduje kolejność w kodzie źródłowym: późniejsza deklaracja nadpisuje wcześniejszą.
Dlatego:
- "color: yellow" zostaje nadpisane przez późniejsze "color: black",
- a następnie "color: black" zostaje nadpisane przez ostatnie "color: red".
Poprawny wynik to czerwony, bo ostatnia reguła dla selektora p ustawia kolor na czerwony.
Dlaczego pozostałe odpowiedzi są błędne?
- "Czarny" byłby poprawny tylko wtedy, gdyby nie było późniejszej deklaracji "color: red" lub gdyby czarny zapis miał wyższy priorytet (np. większą specyficzność albo !important).
- "Żółty" przegrywa, ponieważ jest zapisany jako pierwszy i zostaje nadpisany przez kolejne reguły o tym samym selektorze.
- "Zielony" nie występuje w żadnej deklaracji, więc nie może być wynikiem tego arkusza stylów.
Wskazówka egzaminacyjna: gdy widzisz kilka identycznych selektorów bez !important, najpierw porównaj specyficzność, a jeśli jest taka sama, spójrz na to, co jest zapisane najniżej w kodzie.