Skip to content

Kennzeichnung von Links in HTML-Dokumenten

Bei der Gestaltung einer Website sollten Links gut als eben solche erkennbar sein - am besten unterstrichen und in dem gewohnten blauen Farbton, damit der Nutzer sie im Fließtext erkennen kann (in der Navigation ist das nicht von vergleichbarer Wichtigkeit, weil dort mit “klickbaren” Texten gerechnet wird).

Bestimmte Arten von Links möchte man oft dennoch abweichend kennzeichnen - zum Beispiel “mailto:“-Links, also solche, die nicht auf eine andere Webressource, sondern auf eine E-Mail-Adresse zeigen, und vielleicht auch andere Links, deren URL ein ungewohntes Protokoll enthält.

Man könnte solche Links in verschiedenen Farben anzeigen, aber das wäre alles andere als selbsterklärend, und der Websurfer heutiger Tage dürfte wohl kaum erst eine Erläuterungseite zur Gestaltung der betrachteten Webpräsenz studieren wollen, um sich zu vergewissern, was ihm ungewohnte Farben und Symbole sagen wollen. Unmissverständlich hingegen ist ein Icon, für eine E-Mail-Adresse bspw. ein Briefumschlag (früher auch gerne ein - am besten blinkendes oder rotierendes - @-Symbol). Auf diese Weise kann man Links auf E-Mail-Adressen zum Beispiel so auszeichnen:

<img src="/imgs/envelope.gif" /> <a href="mailto:thh@inter.net">thh@inter.net</a>

Für den Fall, dass häufiger Mailadressen im Text vorkommen, ist das allerdings etwas aufwendig, vor allem, wenn man das Prinzip auch noch auf andere Arten von Links ausdehnen möchte. Werden die Webseiten ohnehin durch eine Skriptsprache generiert, bspw. durch PHP, kann man stattdessen natürlich eine passende Funktion verwenden, die bspw. über den Aufruf mailto('thh@inter.net') die obige Ausgabe erzeigt. So richtig elegant ist das aber immer noch nicht.

Kennzeichnung mit Grafiken durch CSS-Klassen

Deutlich eleganter funktioniert es, wenn man den entsprechenden Links stattdessen eine spezielle CSS-Klasse zuweist und die passende Grafik auf diese Weise (als Hintergrundgrafik) einblendet, bspw. so:

a.mailto {
  color          : #00f;
  text-decoration: none;
  margin-left    : 3px;
  padding-left   : 20px;
  background     : url(envelope.gif) no-repeat left;
}

Ein Link der Form <a class="mailto" href="mailto:thh@inter.net">thh@inter.net</a> wird auf diese Weise in blauer Schriftfarne und ohne Unterstreichung dargestellt; außerdem wird links von dem Linktext das Symbol eines Briefumschlags eingeblendet. Das ist schon ganz schick, erfordert aber jeweils die Zuweisung einer passenden Klasse für jeden einzelnen Link - also wiederum Schreibaufwand. Und was ist mit automatisch generierten HTML-Seiten, bspw. solchen, die aus Markdown heraus erzeugt werden, oder in denen aus anderen Gründen diesen Links nicht die richtige Klasse zugewiesen ist?

Kennzeichnung mit Grafiken durch CSS-Attributselektoren

Auch dafür gibt es eine Lösung. Mit CSS 3.0 lässt sich das Prinzip nämlich noch schöner (und einfacher) umsetzen, und zwar mit sog. Attributselektoren.

Damit kann die Anwendung einer CSS-Definition auf Elemente beschränkt werden, deren Attribute einen bestimmten Wert enthalten oder, ab CSS 3.0, mit einem bestimmten Wert beginnen. Und unsere vorstehende Definition soll ja gerade nur auf Links (also <a>-Elemente) angewandt werden, deren Attribut href mit dem Wert mailto: beginnt. Voilà:

a[href^="mailto:"] {
  color          : #00f;
  text-decoration: none;
  margin-left    : 3px;
  padding-left   : 20px;
  background     : url(envelope.gif) no-repeat left;
}

Diese Definition sorgt dafür, dass jeder Link der Form <a href="mailto:thh@inter.net">thh@inter.net</a> ohne weitere Zuweisung einer CSS-Klasse automatisch wie im vorigen Beispiel formatiert wird, einschließlich der links davon eingeblendeten Grafik mit dem Briefumschlag.

CSS-Attributselektoren und Icons

Statt der Verwendung einer Grafik kann man jetzt noch einen Schritt weiter gehen und Symbole oder Icons aus einem Iconfont wie GLYPHICONS oder Font Awesome zusammen mit dem CSS-Pseudoelement :before verwenden, die dann auch von der Größe her an den Text angepasst sind.

Dazu müssen zunächst die Schriftart an sich und die entsprechenden CSS-Definitionen (heruntergeladen und) eingebunden werden. In der einfachsten Fassung genügt aber zunächst im <head>-Segment der Webseite die Zeile:

<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">

Die CSS-Definition könnte dann wie folgt aussehen:

a[href^="mailto:"]:before {
  /* Unicode-Wert f0e0 fuer "envelope" 
     http://fontawesome.io/icon/envelope/ */
  content: "\f0e0";
  position: relative;
  top: 2px;
  display: inline-block;
  padding-left: 3px;
  padding-right: 4px;
  line-height: 1;
  font-family: 'FontAwesome';
  font-style: normal;
  font-weight: normal;
  font-size: 90%;
}

Ein zusätzliches

a[href^="mailto:"] {
  text-decoration: none;
}

unterbindet dann noch die Unterstreichung des Links.

Auf dieselbe Weise kann jedes beliebige Icon vor (oder hinter) ein Element gesetzt werden; notwendig ist nur die Angabe der richtigen font-family und des Unicode-Wertes des jeweiligen Zeichens, eingeleitet mit dem Backslash \, als content-Wert.

In gleicher Weise lassen sich bspw. externe Links, also solche, die auf Ressourcen außerhalb der eigenen Website zeigen, oder Links, die sich in einem neuen Fenster oder Tab öffnen sollen, kennzeichnen. Ebenso können Links mit anderen Protokollen gekennzeichnet werden.

Die passenden Attributselektoren würden lauten

  • a[href^="http"]:before für externe Links, die mit http oder https beginnen,
  • a[href^="ftp"]:before für das Protokoll FTP oder auch
  • a[target^="_blank"]:before für Links, die sich in einem neuen Fenster oder Tab öffnen sollen.

Der Phantasie sind insoweit keine Grenzen gesetzt.

Ausgabe der Symbole unterdrücken

Soll ein Link einmal ausnahmsweise nicht gekennzeichnet werden, weil er sich bspw. in einem Navigationselement befindet, kann eine CSS-Klasse wie

.no-symbols a:before  {
  content: none;
}

definiert werden, die dann dem umgebenden Element des Links zugewiesen wird, also bspw. so:

<p class="no-symbols"><a href="mailto:thh@inter.net">thh@inter.net</a></p>

So lassen sich also mit diesen einfachen Definitionen Links quasi “magisch” mit passenden Symbolen versehen - oder eben auch gerade nicht, je nachdem, wie der Kontext es erfordert.

[Dieser Eintrag wurde nachträglich im Februar 2015 veröffentlicht.]

Trackbacks

Netz - Rettung - Recht am : HTML 5 und CSS 3.0

Vorschau anzeigen
Aktuelle Browser setzen zunehmend die neuen Möglichkeiten von HTML 5 und CSS 3.0 um, die ich in meinem Artikel “Webdesign anno 2015” bereits angerissen hatte. Doch was ist daran alles neu? HTML 5 Der aktuelle HTML-Standard macht endgültig Sc

Netz - Rettung - Recht am : Webfonts und Iconfonts

Vorschau anzeigen
Webseiten vermitteln in der Regel Informationen und bestehen daher auch - im Regelfall sogar: weit überwiegend - aus Text. Text, der möglichst angenehm zu lesen sein soll, und dabei am besten noch gut aussehen. Zu bedenken sind daher die Auswahl einer gee

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

HTML-Tags werden in ihre Entities umgewandelt.
Markdown-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
BBCode-Formatierung erlaubt
Gravatar, Identicon/Ycon Autoren-Bilder werden unterstützt.
Formular-Optionen