apfelmann: ID-Selektor für extern geladenes Menü?

Hi zusammen,
ich habe folgendes Problem mit einem DropDown Menü.
Ich habe hier bei SelfHTML eine schöne Alternative zu dem Dreamweaver SpryMenu Widget gefunden, dass völlig one JS auskommt:
http://de.selfhtml.org/css/layouts/a...h.htm#Beispiel
So weit so gut, genau das was ich brauche, denn das SubMenü soll bei aktiver Seite offen stehen bleiben.
Ich lade das Menü (als ungeordnete Liste) mittels "<?php readfile("menu.html"); ?>" in ein DIV.
Mein Problem ist jetzt das ich nicht weiss wie ich die jeweils aktive Seite/Link auszeichne damit das SubMenü offen bleibt etc., da ich ja nur ein Menü für alle Seiten habe.
Denke, dass das eventuell über einen ID-Selektor klappen könnte, was ich aber irgendwie nicht hinbekomme.
Hoffe auf eure Hilfe!

Gruss apfelmann

  1. Ich lade das Menü (als ungeordnete Liste) mittels "<?php readfile("menu.html"); ?>" in ein DIV.

    Dir sollte klar sein, dass du durch die einzelnen Menueinträge iterieren musst, um deren url mit der url, unter der dein gegenwärtiger Content ausgeliefert wird, zu vergleichen, und im Falle eines Matches eine Klasse hinzuzufügen oder zu entfernen.
    Gleichzeitig solltest du für diesen Eintrag keinen Link, sondern nur ein Label ausliefern (stichwort: verlinke nicht die gegenwärtige Seite).

    Dein CSS kann dann aus dieser

    Mein Problem ist jetzt das ich nicht weiss wie ich die jeweils aktive Seite/Link auszeichne damit das SubMenü offen bleibt etc., da ich ja nur ein Menü für alle Seiten habe.

    Gewähne dir das Wort aktiv in diesem Kontext ab. Du meinst die gegenwärtige Seite.
    :active als Pseudoklasse bezeichnen den Zustand eines Links, während der Link aktiviert wird.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hi,

      :active als Pseudoklasse bezeichnen den Zustand eines Links, während der Link aktiviert wird.

      eines Elements. :active ist keinesfalls auf Links beschränkt, es kann auf jedes beliebige Element angewendet werden. Dass die Entwickler des IE dies anno 2001 noch nicht gewusst hatten, ändert daran nichts.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    Ich lade das Menü (als ungeordnete Liste) mittels "<?php readfile("menu.html"); ?>" in ein DIV.

    das ist zu exakt 100% identisch damit, den von dieser Datei ausgegebenen Code manuell in eben dieses <div>-Element zu schreiben. Somit ist Dein "extern geladenes" Menü ein statisch intern vorhandenes Menü.

    Mein Problem ist jetzt das ich nicht weiss wie ich die jeweils aktive Seite/Link auszeichne

    Zum Begriff "aktiv" siehe Beats Antwort. Die Frage lautet, warum Du die Seite, auf der sich der Nutzer gerade befindet, *überhaupt* verlinkst.

    Denke, dass das eventuell über einen ID-Selektor klappen könnte,

    Mit dem ID-Selektor selektierst Du ein Element, welches eine bestimmte ID besitzt. Gib also einem Element - beispielsweise dem <li>-Element, welches sich außerhalb des Textes befindet, der auf anderen Seiten verlinkt ist - eine ID, wenn Du der Ansicht bist, dass dieses Element auf dieser Seite bemerkenswert eindeutig ist. Dann klappt's auch mit dem ID-Selektor.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Mein Problem ist jetzt das ich nicht weiss wie ich die jeweils aktive Seite/Link auszeichne

      Zum Begriff "aktiv" siehe Beats Antwort. Die Frage lautet, warum Du die Seite, auf der sich der Nutzer gerade befindet, *überhaupt* verlinkst.

      Es gibt schon Gründe, Wouzhou man das machen kann. Z.B. bei Seiten mit Formularelementen, die der Nutzer ggf. neu laden möchten (meistens bei erfahrenen Nutzern). Ich ertappe mich z.B. gerne mal dabei. Ein Reload über F5 kommt dann nicht in Frage (wegen nerviger Nachfragen Seiten des Browser etc).

      1. Zum Begriff "aktiv" siehe Beats Antwort. Die Frage lautet, warum Du die Seite, auf der sich der Nutzer gerade befindet, *überhaupt* verlinkst.

        Es gibt schon Gründe, Wouzhou man das machen kann. Z.B. bei Seiten mit Formularelementen, die der Nutzer ggf. neu laden möchten (meistens bei erfahrenen Nutzern). Ich ertappe mich z.B. gerne mal dabei. Ein Reload über F5 kommt dann nicht in Frage (wegen nerviger Nachfragen Seiten des Browser etc).

        Meine Antwort dazu ist zweiteilig, und du darfst es selbst durch Navigieren des Links im Head dieser Message nachvollziehen.
        Wenn du z.B. ein Gästebuch hast, so wird ein Eintrag durch einen Extra-Link zum Formuar eröffnet. Findet der User aber, er möchte das Formular nicht ausfüllen, so findet er in der Nähe des Submit Buttons auch den Link, der ihn zur normalen Gästebuch-Defaultseite führt.
        In dieser ganzen Zeit indiziert das Menu, dass es dich auf einer der Inkarnationen der Gästebuch-Seite befindet.
        Soviel zum Frontend.

        Im Backend bleiben aktuelle Seiten visuell im Menu indiziert. Aber der Link bleibt aktiviert. Der Admin kennt das menu und weiss die Strukturen. Da ist keine Gefahr dass ihm _versehentlich_ die gleiche Seite angeboten wird.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
      2. Hallo,

        Es gibt schon Gründe, Wouzhou man das machen kann.

        autschn! ;-)

        Z.B. bei Seiten mit Formularelementen, die der Nutzer ggf. neu laden möchten (meistens bei erfahrenen Nutzern). Ich ertappe mich z.B. gerne mal dabei. Ein Reload über F5 kommt dann nicht in Frage (wegen nerviger Nachfragen Seiten des Browser etc).

        Dazu kommt, dass manche Browser, etwa der IE, beim Refresh (z.B. F5) die Inhalte einfach nur aus dem Cache lesen und die Seite neu rendern, erst beim Klicken auf einen Link aber tatsächlich neu vom Server anfordern, so dass auch Änderungen angezeigt werden.
        Okay, das kann man auch mit Ctrl-F5 erzwingen, aber wer weiß das schon?

        So long,
         Martin

        --
        Verliebt:    Er spricht, sie lauscht.
        Verlobt:     Sie spricht, er lauscht.
        Verheiratet: Beide sprechen, und die Nachbarn lauschen.
        1. Hallo,

          Es gibt schon Gründe, Wouzhou man das machen kann.

          autschn! ;-)

          Z.B. bei Seiten mit Formularelementen, die der Nutzer ggf. neu laden möchten (meistens bei erfahrenen Nutzern). Ich ertappe mich z.B. gerne mal dabei. Ein Reload über F5 kommt dann nicht in Frage (wegen nerviger Nachfragen Seiten des Browser etc).

          Dazu kommt, dass manche Browser, etwa der IE, beim Refresh (z.B. F5) die Inhalte einfach nur aus dem Cache lesen und die Seite neu rendern, erst beim Klicken auf einen Link aber tatsächlich neu vom Server anfordern, so dass auch Änderungen angezeigt werden.
          Okay, das kann man auch mit Ctrl-F5 erzwingen, aber wer weiß das schon?

          Genau so ist es, ;) das ist mir gar nicht eingefallen, aber du hast völlig Recht. Der Grund ist sogar noch besser als der, den ich genannt habe.

          Und Strg+F5 löscht ja den gesamtem Cache der Seite und somit vielleicht auch Daten, die man eigentlich gar nicht neu laden wollte.

      3. @@Wouzhuo:

        nuqneH

        Zum Begriff "aktiv" siehe Beats Antwort. Die Frage lautet, warum Du die Seite, auf der sich der Nutzer gerade befindet, *überhaupt* verlinkst.

        Es gibt schon Gründe, Wouzhou man das machen kann. Z.B. bei Seiten mit Formularelementen, die der Nutzer ggf. neu laden möchten

        Dann will der Nutzer das Formular neu laden, nicht auf der Website navigieren. Sollte er diese Aktion im Navigationsmenü vermuten vorzufinden? Nein, sie sollte ihm dort angeboten werden, wo sie hingehört: als "neu laden" im Formular.

        Im Navigationsmenü sollte die aktuelle Seite nicht verlinkt sein. (Immer noch nicht.)

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)