MudGuard: erstes Kind-Element

Beitrag lesen

Hi,

Mir ist bei dem Pseudo-Elemet first-child etwas aufgefallen, das ich mir nicht erklären kann:
Es geht um den Selektor  div  > *:first-child.

Im Firefox scheint alles in Ordnung zu sein.
Nun dachte ich, der Selektor  div   *:first-child müßte das Gleiche bewirken.

Nö, warum sollte er?

Schließlich ist das erste Kind-Element eindeutig, und da sollte es irrelevant sein, ob man die Eigenschaften hierfür im Kind-Selektor oder im Nachfahren-Selektor deklariert.

Nö, natürlich nicht.

:first-child besagt, daß das Element das erste Kind in seinem Elternelement sein muß.

Das hat aber keinerlei Einfluß auf den restlichen Selektor.

Ob man z.B. table td:first-child oder tbody td:first-child oder tr td:first-child oder tr>td:first-child oder nur td:first-child angibt, ist egal.
Es werden diejenigen td ausgewählt, die in ihrem jeweiligen Elternelement (also der jeweiligen tr) das erste Kind sind.

Daß also die erste Zelle jeder Zeile rot wird, ist logisch.
Ebenso ist logisch, daß alle Zellen der ersten Zeile rot sind, die erste tr ist :first-child des tbody.
Gleiches gilt auch für den gesamten tbody - der ist, da weder thead noch tfoot angegeben sind und auch nicht mehrere tbody verwendet wurden, ebenfalls komplett :first-child des table.
Da für die weiter innen liegenden Elemente nichts gegenteiliges gesagt wird, wird color weitervererbt an die inneren Elemente.
==> die gesamte Tabelle ist rot - wie nach Spec zu erwarten ist.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.