Listless Navigation – Using CSS To Do More With Less

Avatar of David Walsh
David Walsh am

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

Das Beste an CSS ist, dass es Webentwicklern ermöglicht, mit weniger mehr zu erreichen. Was genau bedeutet das? Nun, zum einen ermöglicht CSS Entwicklern,

  • Viel, viel weniger XHTML zu coden
  • Die Formatierung der Website vom Inhalt trennen
  • Kontrolliere so viel wie möglich vom Website-Thema/Design, wie es der Entwickler selbst zulässt, mit einer einzigen CSS-Datei
  • Passe die Anzeige der Website einfach an den Benutzer an, anstatt dass sich der Benutzer an die Website anpasst
  • Ändere die Darstellung unserer Website für spezifische Geräte und besondere Umstände

Die Liste geht immer weiter. Die Funktionalität, großartige Dinge mit weniger Code zu erreichen, ist vorhanden; es liegt am Entwickler, das XHTML so zu gestalten, dass die volle Kraft von CSS genutzt wird. Ein Bereich, in dem CSS meiner Meinung nach oft unterbeansprucht wird, sind Navigationsmenüs.

Abhängig vom Design Ihrer Website können Sie eine vertikale Navigation oder eine horizontale Navigation verwenden. Sie können auch beides verwenden. Wenn Sie XHTML-Listen, <ol>- oder <ul>-Elemente, für Ihre Navigation verwenden, ist die Wahrscheinlichkeit groß, dass Sie zusätzlichen Code schreiben. Es ist an der Zeit, die display-Eigenschaft von CSS zu nutzen. Wir werden…

<div id="navigation">
	<h3>Categories</h3>
	<ul class="nav-list">
		<li><a href="/css">CSS</a></li>
		<li><a href="/html">HTML</a></li>
		<li><a href="/mootools">MooTools</a></li>
		<li><a href="/php">PHP</a></li>
		<li><a href="/xml">XML</a></li>
	</ul>
</div>

…in…

<div id="navigation">
	<h3>Categories</h3>
	<a href="/css">CSS</a>
	<a href="/html">HTML</a>
	<a href="/mootools">MooTools</a>
	<a href="/php">PHP</a>
	<a href="/xml">XML</a>
</div>

…mit sehr grundlegendem, browserübergreifend kompatiblem CSS umwandeln.

Der einzige wirkliche Vorteil der Verwendung der Listen-/Listenelementmethode der Struktur in diesem Fall ist, dass <li>-Elemente im Wesentlichen „Block“-Elemente sind; sie sind solide Container, die in die nächste Zeile fallen, es sei denn, sie werden gefloatet. CSS ermöglicht es uns, angegebene Elemente mit der Eigenschaften-/Wertkombination display:block; als Blöcke zu definieren. Um den oben genannten aufgeblähten Listencode zu vermeiden, können wir display:block; für jedes Link-Element (<a>) innerhalb des Navigationsmenüs angeben.

#navigation a { display:block; }

Das obige Beispiel ist alles, was Sie für die vertikale Navigation benötigen. Für die horizontale Navigation müssen Sie einen float-Wert angeben, genau wie Sie es bei den Listenelementen tun würden.

#navigation a { display:block; float:left; }

Das war's? Ja! In vielen Fällen können Sie einfach die früheren <li>-Eigenschaften nehmen und sie auf den Link-Selektor übertragen! Der obige Code ist ein enormer Vorteil sowohl für den Entwickler als auch für den Benutzer, weil

  • der Entwickler viel Bandbreite sparen kann
  • die Seite für Benutzer schneller lädt
  • weniger Code kann schnellere Wartung bedeuten
  • Listen-Eigenschaften nicht mit Ihren Anker-Eigenschaften interferieren

Wenn Sie noch nicht überzeugt sind oder diese CSS/XHTML in Aktion sehen möchten, können Sie gerne den Quellcode meiner Website einsehen unter: davidwalsh.name.

Bevor Sie kommentieren…

Meine Methode wurde kritisiert, daher möchte ich ein paar absehbare Fragen/Kommentare beantworten.

1. Das ist hässlicher Code!

Ich hatte noch nie einen Kunden, der mir sagte, mein Code sei hässlich. Ich wurde jedoch dafür gedankt, dass ich Websites erstellt habe, die schnell laden. Denken Sie daran, dass Entwickler in den meisten Fällen die Einzigen sind, die sich darum kümmern, wie Ihr Code aussieht. Funktionalität ist der Schlüssel.

2. Das spart nicht viel Code!

Denken Sie daran, wie oft Ihre Seite von Benutzern heruntergeladen wird! Denken Sie an die zusätzliche Downloadzeit, die Ihre JavaScript-Bibliotheken hinzufügen! Alle Webentwickler sollten die Downloadzeit berücksichtigen.

3. Ihr Code ist nicht gut abwärtskompatibel.

Barrierefreiheit ist immer eine Überlegung, die ich anstelle. Wenn Sie alle CSS-Stile ausschalten würden, würde die Seite einfach Links anzeigen, die durch ein Leerzeichen getrennt sind. So gut wie eine Liste? Nein, aber immer noch klar lesbar.

Im Gespräch mit Chris kam er auf einen sehr cleveren Punkt. Man könnte einen <h2>-Tag (oder welchen auch immer Sie wählen) erstellen, ihn „Navigation“ nennen und ihn mit CSS verstecken. Wenn CSS ausgeschaltet ist, wird die Überschrift „Navigation“ angezeigt und es ist für den Benutzer klar, dass er die Navigation sieht.

Ich möchte Chris ein besonderer Dank aussprechen, dass er mir erlaubt hat, meine Methode mit Ihnen zu teilen. Ich plane, die Kommentare zu beobachten, also teilen Sie bitte Ihre Ideen und Vorschläge mit.