2010-12-26 2 views
0

Mit "aktiv" meine ich, dass der Verweis auf die aktuelle Seite als "aktiv" gekennzeichnet ist. Auf diese Weise kann das Erscheinungsbild der Verbindung mit CSS geändert werden.Gibt es alternative Möglichkeiten, eine "aktive Link" -Navigation ohne serverseitige Sprachen zu implementieren?

Ist es möglich, eine aktive Link-Navigation ohne Verwendung einer serverseitigen Sprache zu implementieren? Ich würde gerne nur CSS/HTML/jQuery verwenden, wenn möglich. Wenn ja, welche Methoden gibt es? Vorausgesetzt, dass Sie die folgende Struktur erstellen möchten:

<ul id="nav"> 
    <li class="active">Home</li> 
    <li>About</li> 
    <li>Contact</li> 
</ul> 
+2

meinst du, dass der Home-Link hervorgehoben werden soll, wenn der Benutzer auf der Startseite ist, ebenso der Kontakt-Link, wenn auf der Kontaktseite? – scunliffe

+1

@scunliffe, ja, das habe ich gemeint. – Mohamad

+0

@Harmen, nehmen wir an, Sie haben statische Navigation, ist es möglich, etwas mit jQuery zum Beispiel zu implementieren? – Mohamad

Antwort

1

Sie haben die Wahl zwischen 2.

  1. Serverside Sie bestimmen, welcher Link markiert ist, und fügen Sie die CSS-Klasse, wie Sie getan haben.
  2. Pro Seite, die Sie erstellen, fügen Sie manuell JavaScript hinzu, das die Klasse hinzufügt.

z.B. wenn Sie jQuery verwenden, könnten Sie tun:

<ul id="nav"> 
    <li id="home">Home</li> 
    <li id="about">About</li> 
    <li id="contact">Contact</li> 
</ul> 

<script> 
    $(document).ready(function(){ 
    $('#contact').addClass('active');//set the Contact "tab" as the active link 
    }); 
</script> 

Wenn möglich, obwohl ich für # 1 entscheiden würde ... tun, diese Server-Seite, wenn Sie „bauen“ die Menüstruktur, da dies sein wird, auf lange Sicht leichter zu pflegen.

+1

Wenn Sie diesen JS-Klumpen auf der Seite fest codieren, können Sie die Klasse auch einfach in den HTML-Code einfügen. Weniger Code, keine Verzögerung vor der Ausführung und Ausführung durch Dinge ohne JavaScript. (Und es gibt keine "CSS-Klasse". Das ist eine HTML-Klasse). – Quentin

+0

@David Dorward - ja wahr ... aber ich "vermute" in diesem Fall, dass die Menüstruktur an anderer Stelle gebaut wird und aus irgendeinem Grund nicht editierbar, so dass die Klasse nicht direkt zum HTML hinzugefügt werden kann. Was die "CSS vs. HTML-Klasse" anbelangt, ist das ein kniffliger Aufruf ... die Klasse wird im HTML * erstellt *, * in * JavaScript * und * in CSS * und * in CSS und JavaScript * verwendet. Da ich viel in der Java-Welt arbeite, muss ich oft klarstellen, dass ich über eine CSS-Klasse spreche, nicht über eine Java-Klasse ... Ich entscheide mich dafür, keine HTML-Klasse zu verwenden, die "HTMLSelectElement" wäre. 'HTMLInputElement', etc. ;-) – scunliffe

2

Nichts in CSS können wählen Sie ein Element basierend auf einem Attribut eine URL enthält, die auf die aktuelle URL aufgelöst wird.

Sie könnten dies mit JavaScript (Prüfung location) umgehen, aber es wäre knifflig, dort als mit einem Server-System zu behandeln, da mehrere URIs auf das gleiche Dokument auflösen können und Sie sie alle berücksichtigen müssten.

+0

verwendet jQuery für diesen Zweck üblich, oder besser? Oder würdest du dagegen empfehlen? – Mohamad

+2

Nicht üblich, nicht besser. Dies ist einfacher auf dem Server zu handhaben (oder während der Build-Phase des Konvertierens von Daten und Templates in statische Seiten) und dann an den Client zu übergeben. – Quentin

-2

Sie in Javascript könnte sagen (Sie müssen jquery)

$('#active').onClick{ 
window.location: blabla.htm 
} 
+0

Siehe bearbeitete Frage, aber der Link der aktuellen Seite muss anders klassifiziert sein, damit er mit CSS geändert werden kann. – Mohamad

2

Ich habe etwas ähnliches mit jQuery implementiert. Allerdings war meine Implementierung von den URLs zu den Seiten abhängig, die mit den hrefs begannen, was für mich funktionierte. (Ich verwendete ASp.Net MVC und die URLs waren in der Struktur, die ich für diese verwenden kann.)

1

Ohne Klasse;

 
a:link {color:#FF0000;} /* unvisited link */ 
a:visited {color:#00FF00;} /* visited link */ 
a:hover {color:#FF00FF;} /* mouse over link */ 
a:active {color:#0000FF;} /* selected link */ 

Mit JQuery;

 

    $(document).ready(function(){ 
    $('#nav li a').click(function() { 
     $('#nav li').removeClass('active'); 
     $(this).parent().addClass('active'); 
    }); 
    }); 

+0

' a: active'! = Ausgewählt. Es bedeutet die Verbindung, die gerade angeklickt wird, d. H. Die Maustaste ist über diese Verbindung in ihrem Abwärtszustand. –

Verwandte Themen