ich möchte auf meiner Seite den aktiven Link hervorheben. Also der Link, welcher zu der Seite führt, auf der sich der Besucher gerade befindet. Am liebsten wäre es mir, wenn dieser Link dann auch nicht mehr als Link nutzbar wäre. Der Link (Menü) wird durch include eingefügt.
Statt zig mal den gleichen Code zu wiederholen, sollte man die für’s Menu benötigten Daten (Adresse, Linktext) in ein Array packen, und dieses dann in einer Schleife durchlaufen, in der man jeweils einen Menüpunkt ausgibt. In dieser kann man dann auch die Prüfung vornehmen, ob der aktuelle Menüpunkt mit dem ausgewählten übereinstimmt.
Die Idee, keinen Verweis zur aktuellen Seite anzubieten
(weil das für einige Leute verwirrend sein kann), ist sicher schon
mal gut.
Ich verwende da allerdings auch eine Lösung mit arrays und
einem intern gesetzten Parameter, aus dem man schließen
kann, ob ein a-Element oder ein anderes Element um den
Text herum gesetzt wird - und was dann da als title-Attribut-Wert
etc eingesetzt werden muß.
Von der Länge und Verständlichkeit des Quelltextes her ist die
Lösung nicht unbedingt deutlich besser als alles in so einer
lustigen Fallunterscheidungskaskade aufzulösen.
Die Komplexität der array-Lösung steigt eben auch mit der
Komplexität dessen, was man da im Menü und im Verweis alles
drinstehen hat und was sich wirklich wie ändern soll.
Je nachdem, was in den Skript steht, kann der ausgegebene
Inhalt bei gleichem PHP-Skript ja auch unterschiedlich sein
(angeängte GET-Parameter) oder man könnte im Menü Verweise
zu Ankern im gleichen Dokument haben, so daß es nicht unbedingt
immer sinnvoll ist, den Namen des Skriptes so abzufragen. Hängt
aber stark davon ab, wie das Projekt strukturiert ist und wie
stark das Menü darauf eingeht.
Der Haken bei a:active ist ja jedenfalls, daß das weg ist, wenn
man auf der neuen Seite ist, jedenfalls nach Aktivieren eines
Verweises zu einer anderen URI.
Oftmals ist :active bei den browsern bei anderen Elementen
nicht implementiert, die auch aktiv sein können, weswegen man
das oft nur bei Verweisen kurz aufblitzen sieht.
Eine an sich andere und wie ich finde bessere Lösung ist, einen aktiven Link so auszuzeichnen, dass der Besucher selbstständig eine Unterscheidung feststellen kann, beispielsweiße eine andere Farbe oder eine andere Grafik - ihn unbedingt “nicht anklickbar” zu machen, das finde ich unnötig.
Andere Farbe oder Graphik ist ja bei (X)HTML nicht gegeben,
das wäre dann ja Dekoration (CSS). Gerade aber die Leute, bei
denen der überflüssige Verweis vermehrt Verwirrung auslösen
könnte (Nutzer von Text- oder Vorlese-browsern), nutzt es aber
gar nichts, wenn nur das ohnehin ignorierte CSS irgendwie anders
ist.
Eine Hilfe wäre es natürlich, wenn der browser sowas selbst
herausfiltern täte, eine solche Kompensation von
Autorenproblemen ist mir aber bislang von browsern oder
Formaten her nicht bekannt.
:active ist leider nichts für mich. Die Änderung des Links sollte nach dem Klicken auch noch angezeigt werden.
Leider habe ich von php keine Erfahrung und habe mich mal über arrays informiert. Aber wie kann ich mit einem array die Adresszeile auslesen? Soll der echo-Befehl dann eine Klasse, z.B. .aktiv, ausgeben im a-Tag?
:visited betrifft „alle“ bereits besuchten Links, und :active gilt für den kurzen Moment, in dem du einen Link aktiviert hast (also bspw. vom Herunterdrücken der Maustaste bis zu dem Moment, in dem du sie wieder los lässt.)
Beides hat mit dem, was der Fragesteller erreichen möchte, herzlich wenig zu tun.
a:visited:active trifft auf bereits besuchte Verweise zu, die man
erneut anklickert (während man gerade klickert), nicht unbedingt
auf die aktuelle Seite, weil nach dem Laden der aktuellen Seite
ein Verweis auf die URI der aktuellen Seite in der Regel nicht als
aktiv angesehen wird.
:active ist auch nicht unbedingt nur ein kurzer Moment, bei
einer Formular-Eingabe ist ein Feld etwa solange aktiv, wie man
dort was eingeben kann. Ein Verweis ist aber in der Tat nur
so lange aktiv, wie das Klickereignis dauert, wobei das in CSS
ebenso wie :hover nicht exakt festgelegt ist, unter welchen
Umständen und von wann bis wann das genau zutrifft.
Er will das “übliche”* - dass auf jeder Unterseite der Link in der Navigation, der zu ihr führt, anders dargestellt wird; damit der Nutzer gleich weiss, “wo er ist”.
Dass man diesen Link am besten gar keinen Link sein lässt, wurde ja bereits angesprochen.
Nach dem im WWW schon zigtausend mal vorher gefragt worden ist, und für das auch entsprechend viele Lösungsvorschläge schon bereit stehen - man müsste sie nur mal suchen.