der Flo(H): CSS nur wenn vorangehendes Element

Hab das Problem, dass wenn ich eine verschachtelte Liste erstelle für die Listenpunkte der zweiten Liste zwei Listenpunkte entstehen. Also die Liste

<ul>
 <li>Erste Liste</li>
 <li>
   <ul>
     <li>Zweite Liste</li>
   </ul>
 </li>
</ul>

ergibt die Darstellung

  • Erste Liste
    • Zweite Liste

Was ich benötige, ist eine CSS Angabe, damit ich den Listenpunkt der ersten Liste formatieren kann, aber nur wenn er eine Liste enthält.

  1. Hello out there!

    Was ich benötige, ist eine CSS Angabe, damit ich den Listenpunkt der ersten Liste formatieren kann, aber nur wenn er eine Liste enthält.

    Solch Selektor gibt es nicht.

    Vielleicht lässt sich dein beabsichtigter Effekt auch anders realisieren?

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Solch Selektor gibt es nicht.

      Vielleicht lässt sich dein beabsichtigter Effekt auch anders realisieren?

      Wenn du eine Idee hast? An der Struktur im HTML kann ich nichts verändern, da die durch ein Script erzeugt wird. Also wenn müsste ich das per CSS irgendwie lösen :(

      1. Hello out there!

        Vielleicht lässt sich dein beabsichtigter Effekt auch anders realisieren?

        Wenn du eine Idee hast?

        Wenn ich wüsste, was dein beabsichtigter Effekt ist ...

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  2. Hi,

    Was ich benötige, ist eine CSS Angabe, damit ich den Listenpunkt der ersten Liste formatieren kann, aber nur wenn er eine Liste enthält.

    Das geht leider nicht, Du kannst zwar ein Element abhängig davon selektieren, in welchem anderen Element es enthalten ist, aber nicht umgekehrt.

    Du könntest natürlich dem ersten <li> einer untergeordneten Liste den style "list-style-type:none" geben, mußt das aber manuell in den Tag eintragen, da es meines Wissens keine Möglichkeit gibt, allgemein nur das erste <li> einer Liste zu selektieren.

    Grüße
    Shepard

    1. Hallo Shepard.

      Du könntest natürlich dem ersten <li> einer untergeordneten Liste den style "list-style-type:none" geben, mußt das aber manuell in den Tag eintragen, da es meines Wissens keine Möglichkeit gibt, allgemein nur das erste <li> einer Liste zu selektieren.

      http://de.selfhtml.org/css/eigenschaften/pseudoformate.htm#first_line_letter_child@title=:first-child?

      Einen schönen Mittwoch noch.

      Gruß, Mathias

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. Hi Mathias,

        http://de.selfhtml.org/css/eigenschaften/pseudoformate.htm#first_line_letter_child@title=:first-child?

        Och menno! Warum merke ich mir immer nur das, was alle Browser können?

        Danke!
        Shepard

        1. Ja ich bin doof,

          http://de.selfhtml.org/css/eigenschaften/pseudoformate.htm#first_line_letter_child@title=:first-child?

          alles gut und schön bzgl. dessen was ich gesagt hatte, nur hilft das, was ich gesagt habe, dem OP wenig, der will das <li> formatieren, das eine untergeordnete Liste enthält und nicht ein/das erste <li> in dieser Liste. Mit meinem Vorschlag hat er zwar auch ein Aufzählungszeichen weniger, aber das Falsche..

          Ich schluck jetzt mal besser die Besser-Aufpaß-Pille-)

          <solo-brainstorming>
          Das Problem fällt eigentlich nur negativ auf, weil der betreffende Listenpunkt die Unterliste _direkt_ enthält und davor kein normaler Text steht, nur darum fällt das übergeordnete Aufzählungszeichen so unschön ins Auge..
          </solo-brainstorming>

          *grummel*... da muß es doch eine Lösung geben, ":parent" wäre nett..

          Shepard

          1. Für die Konstruktion

            <ul><li><ul><li>Text</li></ul></li></ul>

            würde mir das eigentlich schon langen.
            Wäre das dann li:first-child > ul

            1. Für die Konstruktion

              <ul><li><ul><li>Text</li></ul></li></ul>
              würde mir das eigentlich schon langen.
              Wäre das dann li:first-child > ul

              Damit selektierst Du alle <ul> (also eine ganze Liste mit allen <li> darin), die irgendwo innerhalb eines <li> liegen, das wiederum das erste Kind irgendeines Elements sein muß.

              Zum Beispiel würdest Du in:

              <ul>
               <li>Eins
                 <ul>
                   <li>1a</li>
                   <li>1b</li>
                 </ul>
               </li>
               <li>Zwei
                 <ul>
                   <li>2a</li>
                   <li>2b</li>
                 </ul>
               </li>
               <li>Drei</li>
              </ul>

              das gesamte <ul> der ersten Unterliste, also mit den Einträgen 1a und 1b auswählen.

              Wo Du aber ran willst, wäre im Beispiel das "<li>Eins" und das "<li>Zwei", die untergeordnete Listen haben, um nur dort das Aufzählungszeichen zu entfernen.

              Wie gesagt, manuell geht es ganz einfach durch Direktauszeichnung der entsprechenden <li>, was ich unbefriedigend finde, da man ja tatsächlich direkt in die HTML-Tags reinschreiben muß, aber einen allgemeingültigen Selektor für diesen Fall zu konstruieren geht entweder nicht (was ich glaube), oder ich bin wirklich zu do...:-)

              Irgendwelche CSS-Cracks in der Nähe?

              Sorry..
              Shepard

              P.S.: Der IE hat mit :first-child so seine Probleme...

              1. Na dann werd ich doch durch ein Skript ne classe anhängen müssen :(

                Trotzdem vielen Dank für eure Hilfe!

  3. Tach.

    Daß es keinen fertigen Selektor dafür gibt, hast du inzwischen ja erfahren. Allerdings könntest du *alle* Listenpunkte mit deiner Spezialgestaltung versehen und sie für die Listenpunkte wieder *rückgängig* machen, die in anderen Listen enthalten sind.

    Ob das in deinem Fall funktioniert, hängt allerdings davon ab, welchen Effekt genau du dem Listenpunkt angedeihen lassen möchtest (siehe Gunnars Nachfrage).

    --
    Once is a mistake, twice is jazz.