Navigation mit PHP

A

alexkiener

Mitglied
Thread Starter
Dabei seit
18.05.2005
Beiträge
21
Reaktionspunkte
0
Hi Leute,

hab folgendes Problem.

Ich habe eine Navigation mit 7 Kategorien, die CSS basiert sind.
Das heisst, jede kategorie hat ein BG image, und wenn man mit der Maus drüber fährt ändert sich das IMG. Das hab ich mit klassen in der css so definiert. Nun möchte ich aber ein active zustand definieren, der wieder ein anderes Bild in den Hintergrund legt... geht mit CSS ja nicht wie ich in einem Thread gelesen habe.

Da man aber seine css datei auch als php speichern kann.. zb. style.css wird zu style.php und er interpretiert die anweisungen genau so... hat aber den entscheidenden vorteil, das ich nun auch eine php abfrage in die style.php schreiben kann womit ich dann den einzelnen kategorien per php abfrage den active zustand geben kann mit nem anderen Image.

Nun die Frage: Wie geht das ? :)

wie muss so eine PHP abfrage aussehen...

gruß und Danke,

Alex
 
In der CSS-Datei macht eine Abfrage eigentlich keinen Sinn, wenn ich Dich richtig verstanden habe. Ausserdem würde damit ein grosser Vorteil von CSS verloren gehen, nämlich dass das komplette Design nur einmal geladen werden muss. Wenn die Style-Definitionen sich bei jedem Seitenaufruf ändern muss die Datei auch jedesmal angefordert werden.

Die einfachste Möglichkeit ist es das Menü dynamisch zu machen und je nach Zustand eine andere Klasse zuzuweisen.

So in der Art:
Code:
if($this->href==$url)
   $this->class="active";
else
   $this->class="normal";
 
alexkiener:
Das heisst, jede kategorie hat ein BG image, und wenn man mit der Maus drüber fährt ändert sich das IMG.

Sorry, da ist PHP das falsche Werkzeug! PHP erstellt ja nur HTML-Code ( der nat auch CSS enthalten kann) und schicktd as zum Client. Dort kommt nie PHP an. Somit laufen auch keine PHP-Programme beim Client. PHP läuft nur Serverseitig. Von Mouse-Aktionen der User bekommt es nichts mit. Da ist Javascript das Mittel der Wahl.

Für die Gestaltung xhtml/css
Für dynamischen Content PHP
Für Client-Aktionen (Events wie OnMouseOver,...) Javascript

Nat. kannst Du das alles in eine PHP-Datei packen, die printed dann quasi Deine Webseite mit dem Javascript-Code für die Events und mixed das ganze mit dem Content und Deiner CSS-Datei.
 
Gewisse Events bei mouseOver lassen sich auch über die css-Pseudoklasse :hover abfackeln. Und um den aktuell ausgewählten Navigationspunkt wieder mit einer anderen Formatierung zu versehen kann man es genau so machen, wie dms schon geschrieben hat.

Javascript ist dafür mehr als unnötig.

Matt
 
Da war doch mal ein Artikel bei alistapart… Aja… hier!. Schlägt im Grunde sowas wie dms vor aber veranschaulicht es halt noch nen bisschen. Die Ausführung finde ich nicht ganz so gelungen, aber wenn Du den Artikel gelesen hast, kannst Du's besser.

JavaScript und damit das Ein- und Auslesen von Cookies, in welchem Bereich man ist, ist nur nötig, falls Du keine PHP-Dateien erstellen kannst. Hatte mal das Problem mit einem Kunden, der das mit seinem Programm bearbeiten wollte und das/er nix mit PHP anfangen konnte. Aber nur Notlösung.
 
Zuletzt bearbeitet:
@Matt&Jakob: Hey das ist mir neu :D das muß ich mir in ner ruhigen Minute mal angucken! Danke!!!

Gruß Karsten
 
Ist im Grunde nix großes.
Ich hab viele meiner Seiten mit header und footer.php,
der Quelltext sieht dann so aus:

PHP:
$kategorie="Unternehmen";
$titel="Über uns";
include("header.php"); ?>
<p>Bla text…

Im header, wo auch das Menü drin steht kannst Du dann einfach abfragen, welche Kategorie es ist und die jeweilige Aktion dann ablaufen lassen.
 
alexkiener schrieb:
...
Das heisst, jede kategorie hat ein BG image, und wenn man mit der Maus drüber fährt ändert sich das IMG. Das hab ich mit klassen in der css so definiert. Nun möchte ich aber ein active zustand definieren, der wieder ein anderes Bild in den Hintergrund legt... geht mit CSS ja nicht wie ich in einem Thread gelesen habe.
...
Das überrascht mich, da man andere "Eigenschaften" von Links (z. B. Hintergrundfarbe, Schriftgröße etc.) durchaus auch für den Zustand "active" steuern kann.
Wichtig ist dabei allerdings die Reihenfolge der Definition in der CSS Datei (Eselsbrücke: love-hate).
Mit BG-Images habe ich das noch nicht getestet, mit anderen Eigenschaften funktioniert es tadellos.
 
Die Pseudoklasse :active gillt jedoch nur solange kein Seitenwechsel geschieht. Ist also nur bei einer Navigation innerhalb eines Framesets zu gebrauchen.
 
Und das auch nur auf DOSen, oder? Bei mir bleibt der :active state nur, solang die Maus draufklickt.
 
Tatsächlich. Bei mir gehts auch nicht. Habe kein Windows zum testen. Bin mir da jetzt auch garnicht mehr so sicher. Vielleicht habe ich mir das nur eingebildet. ;) Habe noch nie was mit :active gemacht, da es in meinen Augen überflüssig ist (egal was es macht ;))
 
Hol dir am besten ein Buch von Gallieo oder Markt + Technik
 
Zurück
Oben Unten