Christian Eyrich: Selektoren "> ul > li" im IE

Hallo!

Ich hab' Probleme mit einer CSS-Anweisung, die vom IE (5) auf das falsche Element angewendet wird.

Folgendes HTML:
<span class="klasse">
<ul>
 <li>eins</li>
 <li>zwei</a>
  <ul>
    <li>zwei eins</li>
    <li>zwei zwei</li>
    <li>zwei drei</li>
  </ul>

und dieses CSS:
.menulinks > ul > li {...}

Der schlaue IE kennt nun anscheinend ">" nicht und ignoriert daher alles bis auf das letzte li weg. Damit wendet er aber das CSS auch auf die inneren <li> an, bzw. auf alle li der ganzen Seite ...
Ich hab' schon versucht, die Anweisung per Attributselektor für ihn uninteressant zu machen.
Aber obwohl er sowas wie
  .menulinks[class] ul li {...}
komplett ignoriert, pickt er sich bei
  .menulinks[class] > ul > li {...}
wieder nur das li raus.

Hat wer von euch einen Tip, wie ich bekomme was ich will?
Und ist es für nur CSS1-fähige Browser korrekt was der IE macht? Ich erwarte eigentlich, daß das komplette Statement ignoriert wird, nicht nur ein Teil.

Christian

  1. Hi,

    Folgendes HTML:
    <span class="klasse">
    <ul>

    Das ist kein HTML.
    Bei span ist das end-tag nicht optional und span darf kein ul enthalten ==> das kann kein HTML sein.

    .menulinks > ul > li {...}

    Der schlaue IE kennt nun anscheinend ">" nicht

    richtig, der IE kennt den Kind-Selektor nicht.

    Definiere für ein li, das sich in einem li befindet (ul li li), das, was Du für die inneren li haben willst.

    cu,
    Andreas

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

      Bei span ist das end-tag nicht optional und span darf kein ul enthalten ==> das kann kein HTML sein.

      Schadimt, das span war aus meiner alten statischen Variante, die ich zum testen verwendet hatte. In genutzten Code ist es tatsächlich ein div. Daß ich das span nicht geschlossen hatte war Absicht, da alles unterhalb des geposteten Codes für dieses Problem uninteressant ist.

      Definiere für ein li, das sich in einem li befindet (ul li li), das, was Du für die inneren li haben willst.

      Damit sind aber die li anderswo auf den Seiten (o.g. Code stammt aus der Navigation) noch nicht gerettet.
      Aber zusammen mit dem Tip von Cyx haut's nun hin.

      Danke,
      Christian

  2. Hallo Christian,

    Der schlaue IE kennt nun anscheinend ">" nicht und ignoriert daher

    die IEs reagieren u.U. dabei auch noch unheitlich, nicht nur der kaum genutzte IE 4, auch der noch etwas gebräuchlichere IE 5 verhalten sich je nach Leerzeichen um den Selektor anders sodass auch eine CSS Weiche entstehen kann.

    Grüsse

    Cyx23

    1. Hi!

      die IEs reagieren u.U. dabei auch noch unheitlich, nicht nur der kaum genutzte IE 4, auch der noch etwas gebräuchlichere IE 5 verhalten sich je nach Leerzeichen um den Selektor anders sodass auch eine CSS Weiche entstehen kann.

      Goldjunge!
       .menulinks>ul>li
      rührt der IE5 tatsächlich nicht an. Um den 4er kümmere ich mich wirklich nicht mehr. Morgen mal sehen, was der 6er macht ...

      Danke,
      Christian