Coding-Schatzkästlein
Kleine Tips & Scripts zum Webdesign
Start > CSS > Link-Kennzeichnung

CSS: "Link-Kennzeichnung"
(Textlinks mit Icon & Farbe formatieren/hervorheben/auszeichnen - mit IE-Workaround)

Zusammenfassung

Name:  Link-Kennzeichnung
Aufgabe:  Beispiel, wie man (mit wenig Aufwand & IE-kompatibel) das Ziel eines Links durch Icon oder Farbe symbolisiert.
Benötigt:  Icons: CSS 2 (IE: JScript 1.0)
Marker: CSS 1
Beispiel:  Testseite
Download:  linksign.zip

Praktisch, wenn der Surfer auf den ersten Blick erkennen kann, welcher Art der Link ist, auf den er klicken soll. Unpraktisch, wenn dem Web-Autor damit relativ viel Arbeit - auch in der späteren Pflege, z.B. bei Änderungen - aufgebürdet wird.
Anstatt nun als z.B. vor jeden (Text-)Link mittels IMG-Tag eine kleine Grafik zu setzen, läßt sich gleiches auch mit CSS erreichen. Ab CSS-Version 2 gibt es die Anweisung :before, mit der man Daten vor einer CSS-Klasse einfügen kann - auch Grafiken.
Die ganze aktuelle Browserwelt kann diesen Effekt nutzen. Die ganze Browserwelt? Nein! Ein kleines Dorf in den USA, Redmond, leistet (noch) Widerstand. ;) Ausgerechnet der Internet Explorer (jedenfalls bis Version 7 inklusive) unterstützt diese Anweisung nicht. :-( Aber es geht doch - mit Hilfe von CSS-Version 1. Als Beispiel dienen die Definitionen des "Schatzkästleins":

Link-Icons CSS-2-Code


Link-Icons "CSS-1.5"-Code
(IE-Workaround)

Als Workaround wird hierbei mit CSS 1 eine Hintergrundgrafik für den Link definiert. Der Nachteil: Zum einen muß in jeder CSS-Regel die Breite der jeweiligen Grafik angegeben werden, zum anderen darf innerhalb des Links kein Umbruch erfolgen, da die Hintergrundgrafik dann verrutscht. Der Umbruch muß dabei mit display:inline-block (CSS 2.1) verhindert werden, da das übliche white-space:nowrap aufgrund eines Bugs im IE 6 unter Umständen zu einem Darstellungsfehler führen kann. Da aber diese Lösung wiederum in Opera zu einer etwas abweichenden Darstellung führt (die Höhe und damit die Position des Elements ändert sich geringfügig) und außerdem die "korrekte" CSS-2-Variante aufgrund des möglichen Zeilenumbruchs optisch eleganter ist, gilt: CSS-Datei mit 2er-Unterstützung (:before) ganz normal im HTML-Header einbinden, und dann nur im IE mit JScript oder Conditional Comment den Workaround nachladen (tunlichst erst ab IE 5.5 und nur bis Version 7 inkl., s. Link-Testseite, da der IE seit Version 8 :before ebenfalls unterstützt).

Achtung: Der Internet Explorer 8 soll in seinen Fähigkeiten (endlich) zu den anderen Browsern aufschließen. Und das sogar in der Voreinstellung, und nicht, wie ursprünglich verkündet, ohne spezielles Meta-Element oder neueren Doctype.
Wenn man also ein Stylesheet mit "Spezial-Code" für alte IEs vor dem IE 8 verstecken möchte, weil dieser das "normale" Stylesheet interpretieren soll, das auch die anderen Browser bekommen, bietet sich also die Nutzung von Conditional Comment an:

CSS-Einbindung Standard-Browser/IE bis 7/IE ab 8

Diese Vorgehensweise habe ich auch für die Link-Testseite gewählt. Dabei wird natürlich in diesem Fall der CC auf die IEs beschränkt, für die dieser CSS-Tip gilt ([if (gte IE 5.5)&(lt IE 8)]).

Aber: Zu beachten ist, daß der IE 8 HTML-Dokumente auch mit der Engine des IEs 7 rendern kann. Ohne weitere META-Angabe geschieht dies dann, wenn die Seite im sog. Quirksmodus läuft (z.B. weil auf eine Doctype-Deklaration verzichtet wurde). Wenn dies der Fall ist, dann muß man mittels META-Angabe festlegen, daß der IE dennoch die 8er (oder prinzipiell jeweils die neueste) Renderengine benutzen soll. Im Beispieldokument wird der IE mittels <meta http-equiv="X-UA-Compatible" content="IE=edge"> angewiesen, immer die aktuellste Renderengine zu verwenden (=edge - andere Werte wären hier z.B. 8 explizit für die Renderengine des IE 8 oder 7 für die des IEs 7).

Eine gänzlich andere Möglichkeit wäre, auf Link-Icons zu verzichten und einfach nur die Links farblich zu formatieren. Dafür gelten allerdings ein paar Einschränkungen: Dem Surfer wird mehr "Hirnschmalz" abverlangt, da er nicht unmittelbar von der Farbe auf das Linkziel schließen kann (klarer Vorteil für Icons, die mit Schrift oder Symbolik dies unterstützen - bei Farben könnte aber ggf. auch der jeweilige Zielbereich diesen "Farbcode" wieder aufnehmen). Zudem könnte der Bildschirm des Surfers monochrom, bzw. der Surfer auch farbenblind sein (was die Möglichkeit zur Farbunterscheidung zumindest einschränkt).

Textmarker-Farben wären z.B. Violett, Pink, Blau, Hellblau, Grün, Gelb, oder Orange.

Textmarker-Links (CSS-1-Code)

Und natürlich kann man im Style-Sheet für die Druckausgabe die Kennzeichnung weglassen. Auf Papier gibt es ja schließlich auch nichts anzuklicken. Dafür möchte aber der Leser vielleicht sehen, daß es sich um einen Link gehandelt hat und wohin dieser führt (um ihn auszuprobieren). Hierzu kann der Web-Autor einfach den URL hinter den Link als Text schreiben, diesen Text aber im Style-Sheet für den Bildschirm unsichtbar machen. Voilá: Der Surfer sieht die Link-Icons, der Leser die URLs.

Link-Testseite (alle Dateien für den Download als ZIP-Archiv)

Updates:
25.01.2008: 
Aktualisierung: Anpassung an den IE 8.
12.06.2006: 
Korrektur: Verbesserung des IE-Workarounds wg. des IE-6-Bugs (dank an Michael für den Linktip!)
31.01.2004: 
Korrektur: Workaround bei den "Textmarkern" (padding) für den alten Netscape Navigator (4.x) eingebaut.


Kurz-URL dieses Artikels: http://Coding.binon.net/Link-Sign