Hauptmenü immer an fixer Position erreichbar
Verfasst: Mi 23. Jun 2004, 13:33
Hi zusammen,
So einige Beiträge haben sich ja schon mit den Menüs beschäftigt. Ich hatte mal versucht, mit dem CSS-Attribut "fixed" für eine gleichbleibende Fensterposition des Hauptmenüs zu sorgen. Fand schon immer doof, wenn man bei einer nicht framebasierten Site 30 m nach oben scrollen muss, um an das Menü zu gelangen. Netscape und MIE interpretieren das CSS-Attribut, aber nur Netscape richtig - der MIE schiesst das Menü irgendwo zum Bildschirmrand.
Die Art JS-Menüs, die flappernd zu ihrer Fensterposition zurückkriechen, sind auch nicht die pralle Lösung, finde ich. Sieht einfach aus wie schlecht programmiert.
Aber kennt Ihr schon die DHTML-Lösung von Stefan Münz?
http://de.selfhtml.org/dhtml/beispiele/navigation.htm
Ich finde zwar, dass man diese Ausklappmenüs normalerweise nicht braucht, weil Randbereiche keineswegs überflüssig sind und man sie nicht nur für Menüs verwendet. Aber der Ansatz von Stefan M., die Bildschirmposition der Menüausgabe immer erst bei Mouseover zu setzen, löst das Problem eigentlich ideal, denn auf diese Weise flappert da nichts. War ich noch garnicht draufgekommen. Ergänzende Idee von mir: Als Hinweis auf das versteckte Menü könnte man eine feststehende Hintergrund-Grafik (Wasserzeicheneffekt) verwenden. Die steht permanent genau an der Stelle, wo das Menü bei Mouseover erscheint.
Bei abgeschaltetem Javascript oder Nicht-DHTML-fähigem Client kann man alternativ das ganz normale Menü im <noscript> Tag ausgeben. Die Fallunterscheidung codiert man mit einem simplen "if-else" bzw. mal gucken, vielleicht kennt PHP ja auch "case".
Wenn ich das richtig sehe, müsste sich der Code ohne besondere Schwierigkeiten als Contenido-Modul integrieren lassen. Nur auf Synthax-Fehler muss man wegen der sich ergebenden Codemenge schon etwas aufpassen. Jedenfalls ich, denn ich code noch nicht so lange in PHP.
Grundsätzlich stelle ich mir das so vor: Man gibt das ganze Zeugs im Modul-Output mit "echo" aus und legt die DHTML-Bibliothek an. An die Stelle, wo die statischen Links codiert sind, wird der Code der Contenido Hauptmenü-Linkgenerierung eingepflegt. Dadurch sollten statt der statischen Links die dynamisch erzeugten erscheinen. Dann noch die CSS-Attribute ans eigene Layout anpassen - FERTIG. Falls das Ganze wie geplant funktioniert, kann man es vielleicht in einem nächsten Schritt weiter ausbauen und auch die Artikellisten-Menüs als weitere Klappebenen integrieren. Da wird´s natürlich dann komplizierter. Doch es hätte seine Vorteile: Bei angeschaltetem Scripting spart man dann die Artikellisten, anderenfalls gibt man sie ebenfalls im <noscript> Tag aus.
Ich will das nicht nur für mich selbst haben, sondern im Fall eines positiven Ergebnisses auch als neues Modul posten. Deshalb meine Frage an die besseren Contenidokenner als ich es bisher bin:
Glaubt Ihr, die Aufgabe liesse sich in dieser Art realisieren? Macht das Ganze Eurer Ansicht nach Sinn? Gibt es vielleicht schon eine Lösung, die dem nahekommt (habe bisher keine entdeckt) oder die Vorteile auf andere Weise realisiert? Falls der Ansatz als tauglich betrachtet wird, hat jemand Lust, sich zu beteiligen? Und sei es nur mit Hilfe bei der Suche nach eventuellen Fehlern, die ich vielleicht nicht selbst finde.
Freue mich auf Kommentare ...
Grüsse von Andreas
So einige Beiträge haben sich ja schon mit den Menüs beschäftigt. Ich hatte mal versucht, mit dem CSS-Attribut "fixed" für eine gleichbleibende Fensterposition des Hauptmenüs zu sorgen. Fand schon immer doof, wenn man bei einer nicht framebasierten Site 30 m nach oben scrollen muss, um an das Menü zu gelangen. Netscape und MIE interpretieren das CSS-Attribut, aber nur Netscape richtig - der MIE schiesst das Menü irgendwo zum Bildschirmrand.
Die Art JS-Menüs, die flappernd zu ihrer Fensterposition zurückkriechen, sind auch nicht die pralle Lösung, finde ich. Sieht einfach aus wie schlecht programmiert.
Aber kennt Ihr schon die DHTML-Lösung von Stefan Münz?
http://de.selfhtml.org/dhtml/beispiele/navigation.htm
Ich finde zwar, dass man diese Ausklappmenüs normalerweise nicht braucht, weil Randbereiche keineswegs überflüssig sind und man sie nicht nur für Menüs verwendet. Aber der Ansatz von Stefan M., die Bildschirmposition der Menüausgabe immer erst bei Mouseover zu setzen, löst das Problem eigentlich ideal, denn auf diese Weise flappert da nichts. War ich noch garnicht draufgekommen. Ergänzende Idee von mir: Als Hinweis auf das versteckte Menü könnte man eine feststehende Hintergrund-Grafik (Wasserzeicheneffekt) verwenden. Die steht permanent genau an der Stelle, wo das Menü bei Mouseover erscheint.
Bei abgeschaltetem Javascript oder Nicht-DHTML-fähigem Client kann man alternativ das ganz normale Menü im <noscript> Tag ausgeben. Die Fallunterscheidung codiert man mit einem simplen "if-else" bzw. mal gucken, vielleicht kennt PHP ja auch "case".
Wenn ich das richtig sehe, müsste sich der Code ohne besondere Schwierigkeiten als Contenido-Modul integrieren lassen. Nur auf Synthax-Fehler muss man wegen der sich ergebenden Codemenge schon etwas aufpassen. Jedenfalls ich, denn ich code noch nicht so lange in PHP.
Grundsätzlich stelle ich mir das so vor: Man gibt das ganze Zeugs im Modul-Output mit "echo" aus und legt die DHTML-Bibliothek an. An die Stelle, wo die statischen Links codiert sind, wird der Code der Contenido Hauptmenü-Linkgenerierung eingepflegt. Dadurch sollten statt der statischen Links die dynamisch erzeugten erscheinen. Dann noch die CSS-Attribute ans eigene Layout anpassen - FERTIG. Falls das Ganze wie geplant funktioniert, kann man es vielleicht in einem nächsten Schritt weiter ausbauen und auch die Artikellisten-Menüs als weitere Klappebenen integrieren. Da wird´s natürlich dann komplizierter. Doch es hätte seine Vorteile: Bei angeschaltetem Scripting spart man dann die Artikellisten, anderenfalls gibt man sie ebenfalls im <noscript> Tag aus.
Ich will das nicht nur für mich selbst haben, sondern im Fall eines positiven Ergebnisses auch als neues Modul posten. Deshalb meine Frage an die besseren Contenidokenner als ich es bisher bin:
Glaubt Ihr, die Aufgabe liesse sich in dieser Art realisieren? Macht das Ganze Eurer Ansicht nach Sinn? Gibt es vielleicht schon eine Lösung, die dem nahekommt (habe bisher keine entdeckt) oder die Vorteile auf andere Weise realisiert? Falls der Ansatz als tauglich betrachtet wird, hat jemand Lust, sich zu beteiligen? Und sei es nur mit Hilfe bei der Suche nach eventuellen Fehlern, die ich vielleicht nicht selbst finde.
Freue mich auf Kommentare ...
Grüsse von Andreas