Das Web wurde auf Links gegründet. Die Idee, dass wir auf einen Link klicken/tippen und von einer Webseite zu einer anderen navigieren können, ist, wie Surfen im Web zu einem geflügelten Wort wurde.
Links in HTML sehen bereits ohne jegliches CSS-Styling anders aus als normaler Text.
Sie sind blau (lila, wenn besucht). Sie sind unterstrichen. Das ist ein Link in seiner reinsten Form.
Aber was, wenn wir die Dinge ein wenig ändern wollen? Vielleicht passt Blau nicht zum Design Ihrer Website. Vielleicht haben Sie eine Abneigung gegen Unterstreichungen. Was auch immer der Grund ist, CSS ermöglicht es uns, Links genauso zu stylen wie jedes andere Element. Wir müssen nur das <a>-Element in unserem Stylesheet ansprechen.
Möchten Sie eine andere Schriftart verwenden, die Farbe ändern, die Unterstreichung entfernen und alles in Großbuchstaben setzen? Klar, warum nicht?
a {
color: red;
text-decoration: none;
text-transform: uppercase;
}
Jetzt geht die Post ab! Aber warum dort aufhören? Schauen wir uns ein paar andere Möglichkeiten an, wie wir Links gestalten können, um das Erlebnis abzurunden.
Jeden Link-Zustand stylen
Links haben verschiedene Zustände, was bedeutet, dass sie sich anpassen, wenn wir auf einer Webseite mit ihnen interagieren. Es gibt drei zusätzliche Zustände eines Links, die es wert sind, berücksichtigt zu werden, wann immer wir den Standardstil von Links ändern
- Link (
:link): Dies ist wahrscheinlich der am wenigsten verwendete, aber er dient dem Stylen von<a>-Elementen, die einhrefhaben, im Gegensatz zu Platzhalterlinks. - Besucht (
:visited): Das Erscheinungsbild eines Links, auf den der Benutzer zuvor auf der Seite geklickt hat, wenn sich der Mauszeiger nicht darüber befindet. Die Stile, die Sie auf:visitedanwenden können, sind aus Sicherheitsgründen eingeschränkt. - Hover (
:hover): Wenn der Mauszeiger über dem Link platziert wird, ohne zu klicken - Aktiv (
:active): Wenn der Link gerade angeklickt wird. Das kann sehr schnell gehen, aber dies ist der Moment, in dem die Maustaste gedrückt wurde und der Klick noch nicht beendet ist. - Fokus (
:focus): Ähnlich wie:hover, aber wenn der Link mit der Tabulator-Taste auf einer Tastatur ausgewählt wird. Hover- und Fokus-Zustände werden oft zusammen gestylt.
Beachten Sie, dass die Reihenfolge dort wichtig ist
- Link
- Besucht
- Hover
- Aktiv
- Fokus
Wenn Sie dies nicht in dieser Reihenfolge tun (stellen Sie sich vor, Ihr :visited-Stil kommt nach Ihrem :hover-Stil), verhalten sich die Links nicht ganz so, wie Sie es möchten. In meinem imaginären Beispiel würde der :visited-Stil den :hover-Stil überschreiben, was höchst unwahrscheinlich ist, dass es das ist, was Sie wollen. Fokus ist ein Zugänglichkeitsmerkmal und steht daher zuletzt, weil es am wichtigsten ist.
Eine Eselsbrücke, um sich die Reihenfolge zu merken, ist LOVE and HATE. Das ist L(ink)OV(isited)E / H(over)A(ctive)TE.
Hier ist derselbe Link, den wir uns bisher angesehen haben. Bewegen Sie zunächst Ihre Maus darüber, ohne zu klicken, und Sie werden feststellen, dass er unterstrichen wird. Klicken Sie dann auf den Link, aber halten Sie die Maustaste kurz gedrückt, um zu sehen, wie der aktive Stil die Farbe des Links schwarz färbt. Lassen Sie schließlich die Maustaste los, und der Link sollte lila werden, bevor er technisch gesehen besucht wurde.
Links scheinen ein einfaches Konzept zu sein, aber oh Mann, sie haben viel zu bieten – und CSS gibt uns unglaubliche Möglichkeiten, das Erlebnis anzupassen!
Links als Buttons
Obwohl es darüber eine gewisse Debatte gibt, können wir CSS verwenden, um einen Textlink wie einen Button aussehen zu lassen.
Wie andere HTML-Elemente kann CSS Hintergrundfarben und Abstände zu Links hinzufügen, die es uns ermöglichen, das Aussehen eines Buttons zu erzeugen. Hier ist unser Link mit diesen Techniken
a {
background-color: red;
color: white;
padding: 1em 1.5em;
text-decoration: none;
text-transform: uppercase;
}
Großartig! Nun nutzen wir die Zustands-ändernden Kräfte, die wir im letzten Abschnitt kennengelernt haben, um unseren Faux-Button interaktiver zu gestalten. Wir machen den Button auf Hover dunkelgrau, auf Aktiv schwarz und auf Besuch hellgrau
a {
background-color: red;
color: white;
padding: 1em 1.5em;
text-decoration: none;
text-transform: uppercase;
}
a:hover {
background-color: #555;
}
a:active {
background-color: black;
}
a:visited {
background-color: #ccc;
}
Einen Link als Button zu stylen und die Zustände zu nutzen, ermöglicht es uns, einige ziemlich coole Effekte zu erzielen. Zum Beispiel erstellen wir einen Button mit etwas Tiefe, der beim Aktivieren gedrückt zu werden scheint und beim Beenden des Klicks wieder hochspringt.
Ach ja, und Cursor!
Wir haben uns ziemlich tief mit dem Styling von Links beschäftigt, aber es gibt noch eine weitere Komponente, die wir nicht ignorieren können: den Cursor.
Der Cursor zeigt die Position der Maus auf dem Bildschirm an. Wir sind ziemlich an den Standard-Pfeil gewöhnt

Wir können den Pfeil auf den Handzeiger im Hover-Zustand (:hover) ändern, damit leichter erkennbar ist, dass der Link ein interaktives Element ist

cursor:
pointer; bietet eine interaktive Anzeige.a:hover {
cursor: pointer;
}
Puh, das ist viel schöner! Jetzt haben wir einen ziemlich schicken Link, der wie ein Button mit ordentlichen interaktiven Hinweisen aussieht.
Aufleveln
Wir haben hier einiges behandelt, aber es kratzt nur an der Oberfläche dessen, wie wir den Stil von Links steuern können. Wenn Sie bereit sind, aufzulegen, finden Sie hier einige Ressourcen, mit denen Sie fortfahren können
- Mailto-Links – Eine gute Referenz zum Verknüpfen von E-Mail-Adressen anstelle von Webseiten.
- Der aktuelle Stand von Telefonlinks – Wussten Sie, dass Sie eine Telefonnummer verlinken können? Nun, hier ist, wie.
- Cursor – Der CSS-Tricks-Referenzleitfaden zum Anpassen des Cursors.
- Wann das Button-Element verwendet werden sollte – Wenn Sie sich über den Unterschied zwischen einem Link-Button und einem traditionellen Formular-Button wundern, ist dies ein guter Überblick mit Vorschlägen, was für bestimmte Kontexte besser geeignet ist.
- Button Maker – Eine kostenlose Ressource zum Generieren von CSS für Link-Buttons.
Warum müsste man den Cursor für ein
<a>-Element ändern?Manchmal muss es explizit angegeben werden – ich schlage keine Änderung vor, obwohl es dafür sicher Anwendungsfälle gibt.
Wenn kein href-Attribut vorhanden ist, wird es nicht automatisch zu einem Zeiger.
Es könnte Zeiten geben, in denen der Button oder das Link-Element etwas anderes tut, als nur gedrückt zu werden (Änderung des Hand-/Zeigefinger-Cursors). Es gibt CSS-Variationen, die alle einen Sinn und Zweck haben – https://www.w3schools.com/cssref/pr_class_cursor.asp – ist ein hilfreiches Werkzeug.
Ich bin mir noch nicht 100% sicher. Der Link selbst sieht gut aus, aber er sieht jetzt überraschend wie ein Button aus! Links und Buttons sind zwei verschiedene Dinge, und wenn wir nicht über einen Button-ähnlichen Link in einem Call to Action sprechen, denke ich, dass die Leute erwarten, dass ihre Links wie Links aussehen.
Die grelle rote Farbe und der Text in Großbuchstaben machen diesen speziellen Link auch schwerer lesbar (Rot = Panik/Gefahr).
Ich hatte gehofft, dass in diesem Beispiel ein stärkerer Fokus auf Zugänglichkeit (a11y) liegen würde. Zum Beispiel ein Fokus auf klare Unterstreichungen, vielleicht ein anderer Hintergrund beim Hover, klare Farbkontraste.
Ich glaube nicht, dass es im Beitrag darum geht zu debattieren, ob es gut ist, einen Link wie einen Button zu stylen oder nicht – siehe die Ressourcen am Ende, die tiefer in die Debatte eintauchen.
Ich habe in meinen persönlichen Projekten und auch in unserem Code bei der Arbeit hin und her über das Thema Styling von Links nachgedacht und mich entschieden, die Annahme aus meinen Stylesheets zu entfernen, dass alle
a-Tags Links sind.Unsere App bei der Arbeit ist eine Plattform mit Altsystemen und einigen neueren Produkten, die ich baue, und im gesamten System gibt es eine bunte Mischung aus
a-Tags, von denen einige wie Buttons funktionieren, und einige legitime Links mithref-Attributen sind, aber einigea href-Tags haben JS-Handler, die das Standardverhalten verhindern (z. B. die Navigation zu einer neuen Seite) und stattdessen zusätzliche Dinge tun.Mein Problem damit ist, dass der
a-Tag semantisch gesehen kein Link-Tag ist, sondern ein Anker-Tag. Deshalb habe ich begonnen, Anker spezifisch mit der Pseudo-Klasse:linkzu stylen, um sicherzustellen, dass ich mir nicht in die Quere komme in anderen Teilen unserer Plattform.Von hier aus kann ich verschiedene Links mit Modifikatorklassen qualifizieren, à la Bootstrap, was meinen
.btn-Stilen ermöglicht, der Kaskade zu folgen und.btn:linksanders zu stylen, ohne dass die Spezifität mich zwingt, meine Selektoren zu überqualifizieren oder neu zu organisieren, oder!importantverwenden zu müssen.Ich würde mir nur wünschen, dass mehr Leute die Pseudo-Klasse
:linkverwenden würden, um ihre Stile etwas expliziter zu gestalten und potenzielle unerwünschte Nebeneffekte in ihren Projekten zu vermeiden.Das große Problem bei der Verwendung von
:linkfür solche Zwecke ist, dass es nur auf nicht besuchte Links angewendet wird. Um alle Links abzudecken, benötigen Sie:link, :visited– und so ist es üblicherweise einfacher, einfachazu schreiben. (Natürlich sind die beiden ohnehin nicht gleichwertig.:link, :visitedist stattdessen äquivalent zua[href], area[href], link[href].)Was bedeutet „Anker“ überhaupt? Ich bin mir da nicht sicher. Vor langer Zeit wurde
<a name=x>verwendet, damit man einen Hash von#xhinzufügen konnte, um an die richtige Stelle im Dokument zu springen; aber seit vielen Jahren ist es die bevorzugte Methode, einem Element einfach eineidzu geben (z. B.<h1 id=x>). Ehrlich gesagt,<a>wird heutzutage nur noch für Links verwendet.Ich vermisse die Erwähnung des Verhaltens für Touch-Geräte. Das Touch-Verhalten sollte jetzt zu den Grundlagen gehören, oder?
Oh, absolut! Touch wird oben erwähnt und diese Grundlagen gelten größtenteils in beiden Fällen, mit Ausnahme von
:activeund:hover(obwohl einige Geräte diese im Touch-Kontext behandeln). Gibt es noch andere Grundlagen, die Sie im Sinn hatten?Nur eine Erinnerung, dass nicht jeder auf Links „hovert“. Tastaturnutzer „fokussieren“ sie, und es ist wichtig, dass diese Benutzer unterscheiden können, wann ein Link den Fokus hat. Es ist einfach, dies sicherzustellen, indem die gleichen Stilregeln sowohl auf die :hover- als auch auf die :focus-Zustände angewendet werden.
Es gibt auch eine Hierarchie der Link-Zustände, die viele Leute ins Schleudern bringt. Ich habe die folgende Eselsbrücke gelernt, um mich an die Reihenfolge zu erinnern, in der die Link-Zustandsstile definiert werden: LoVe HAte (:_l_ink, :_v_isited, :_h_over [auch :focus], :_a_ctive).
Warum verwenden Sie nicht die LVHA-Reihenfolge?
Hey! Könnte ich sicher, aber ich habe mich in dieser Grundlagen-Reihe hauptsächlich auf Zustände von Links mit einem
hrefkonzentriert.Auf einer höheren Ebene könnte man das Anker-Element als „Aktions“-Element betrachten – wie durch das
<a>-Tag gekennzeichnet.Also ja, es könnte wie ein Button aussehen – solange es die Aktion ermöglicht.
Zusätzlich zu MHLut, John Pisello und xfq würde ich die Bedeutung des
:focus-Stils für Tastaturnutzer hervorheben. Siehe die Web Content Accessibility Guidelines (WCAG-2.0): Machen Sie alle Funktionalitäten von der Tastatur aus zugänglich.Anstatt „LoVe HAte“ sollte jeder die vollständige Eselsbrücke „LoVe (s)He FAked“ nicht vergessen, mit dem F für Fokus.
– Das (s) kann nach Belieben hinzugefügt oder weggelassen werden. ;-)