Pointer Events & Deaktivieren von Links zur aktuellen Seite Links

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Es ist ein seit langem bestehender Webdesign-Standard, dass das Logo im Header-Bereich auf die Startseite der Website verlinkt. Ein weiterer Standard ist, dass bei der Anzeige der Navigation einer Website die "aktuelle" Seite, falls sie in der Navigation vorhanden ist, auf irgendeine Weise hervorgehoben wird. Ich denke, das sind großartige Standards. Die Sache mit dem Logo-Link ist so allgegenwärtig, dass Ihre Benutzer sie wahrscheinlich automatisch ausprobieren werden, ob Sie sie nun so codiert haben oder nicht. Die Sache mit der aktuellen Navigation ist einfach gesunder Menschenverstand, um Benutzer zu erden und ihnen ein gutes Gefühl über ihren aktuellen Standort in der Hierarchie einer Website zu geben.

Aber hier ist ein weiterer guter Designstandard: Verlinken Sie nicht auf dieselbe Seite, auf der Sie sich gerade befinden.

Die Idee dahinter ist zweigeteilt

  1. Wenn Sie einen Link sehen, sieht er wie ein Link aus, verhält sich wie ein Link und sagt: "Klicken Sie hier, und Sie werden woandershin gebracht." Wenn der Link Sie zurück auf dieselbe Seite bringt, auf der Sie sich gerade befinden, ist das irgendwie seltsam.
  2. Es ist eine Verschwendung von Serverressourcen, eine Seite ohne Grund neu zu laden.

Wie können Sie das ohne viel Entwicklungsaufwand und Änderung des Markups erreichen? CSS natürlich!


„Deaktivierte“ Navigation aus einer schnellen Demo.

Die Hauptidee ist, dass Sie einem Link mithilfe der CSS-Eigenschaft pointer-events sagen können, dass er sich nicht wie ein Link verhält (beim Klicken nichts tut).

Body hat eine eindeutige ID auf der Startseite

<body id="home">

Navigation hat einen passenden Klassennamen

<nav>
    <ul>
       <li class="home"><a href="#">Home</a></li>
       <li class="about"><a href="#">About</a></li>
       <li class="clients"><a href="#">Clients</a></li>
       <li class="contact"><a href="#">Contact Us</a></li>
    </ul>
</nav>

Navigation für das Home-Verzeichnis wird nur auf der Startseite deaktiviert

#home nav .home > a {
       pointer-events: none;
       cursor: default;
}

Wow, das war einfach, oder? Das funktioniert in Firefox 3.6+, Safari 3+ und den neuesten Chrome-Versionen (v5+?). Noch nichts von Opera oder IE. Aber hey, das ist ziemlich gut für eine so geringe Entwicklungsinvestition.

Ein Teil des Tricks, um dies zum Laufen zu bringen, ist, eine ID oder eine Klasse auf dem Body zu haben, mit der Sie arbeiten können. Wenn das für Sie eine neue Idee ist, schauen Sie sich diesen Artikel und diesen Screencast für die Grundidee an. Wissen Sie auch, dass ein CMS wie WordPress einebody_class();Funktion hat, die hervorragende Arbeit leistet, indem sie alle Klassennamen liefert, die Sie sich jemals auf dem Body wünschen könnten.

Danke an Ant Gray für die Idee!