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.