Gunnar Bittersmann: Vererbung bei Listen list-style

Beitrag lesen

@@Mario:

nuqneH

Ich möchte nun kein Bullet oder Einrückung, also verwende ich:
.menu{list-style:none;}
Funktioniert auch, aber nur für das erste UL.

Wenn ich das aber so mache:
.menu ul{list-style:none;}
Dann fuktioniert es, wie erwartet, bei allen UL(sub UL) innerhalb des ersten UL, natürlich nicht im ersten selbst.

Also entweder, wie Auge sagte, beide Selektoren aufzählen:
.menu, .menu ul {list-style: none}

Oder einfach die Eigenschaft direkt für alle Listitems angeben:
.menu li {list-style: none}

Warum also vererbt sich das nicht automatisch, wenn ich das nur im ersten setze?

Gute Frage. Ich verstehe es auch nicht.

Bei Angabe von
.menu {list-style: none}
wirkt die 'list-style'-Eigenschaft nicht auf ul[@class="menu"], denn sie wirkt nur auf 'list-item'-Elemente. [CSS21 §12.5.1]

Die Eigenschaft wird aber vererbt [ibid.], wirkt also auf ul[@class="menu"]/li.

Dann sollte sie aber weitervererbt werden auf ul[@class="menu"]/li/ul (ohne Wirkung) und weitervererbt werden auf ul[@class="menu"]/li/ul/li und auch bei diesen 'list-item'-Elementen wieder Wirkung zeigen.

Tut sie aber nicht. Man könnte denken, es läge an der Spezifität des Selektors, weil im Browserstylesheet derartiges steht:

  ul {list-style: disc}  
  ul ul {list-style: circle}  
  ul ul ul {list-style: square}

Doch selbst
html body ul.menu {list-style: none !important}
zeigt keinen Einfluss auf die Listitems der untergeordneten Listen. Auch noch spezifischere Selektoren mit ID nicht.

Da würd ich auch gern wissen, warum nicht.

Qapla'

--
Bildung lässt sich nicht downloaden. (Günther Jauch)