Bessere E-Mail-Links: Mit CSS-Attribut Selektoren

Avatar of Chris Coyier
Chris Coyier am

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

betteremaillinks.jpg

Was ist ein CSS-Attributselektor?

CSS bietet eine Möglichkeit, Elemente basierend auf Attributen des Links zu stylen, anstatt nur auf dem Elementtyp. Zum Beispiel weißt du bereits, dass du ein Header-Element stylen kannst

h1 { color: blue; }

Aber du kannst es noch spezifischer machen und nur Header-Elemente stylen, die ein Titel-Attribut haben

h1[title] { color: blue; }

Du kannst es noch weiter treiben und nur Header-Elemente stylen, die bestimmte Attributwerte haben

h1[title="Go Home"] { color: blue; } /* Has the exact value "Go Home" in the title attribute */
h1[title~="Go Home"] { color: red; }  /* Has the value "Go Home" somewhere in the title attribute */
h1[title^="Go Home"] {color: green; } /* Value of the title attribute starts with "Go Home" */

 

Was ist einzigartig an E-Mail-Links?

Ein E-Mail-Link unterscheidet sich von allen anderen Links dadurch, dass er immer mit "mailto:" beginnt, was der Befehl ist, den der Browser verwendet, um das Betriebssystem zu benachrichtigen, dass der Benutzer eine E-Mail an eine bestimmte E-Mail-Adresse mit dem Standard-E-Mail-Programm senden möchte. Wir können diese Ähnlichkeit zwischen Links zu unserem Vorteil nutzen, sodass wir CSS-Styling nur auf E-Mail-Links anwenden können.

Hier ist der Haken

a[href^="mailto"] { color: blue; }

Das zielt auf alle Links mit einem href, der mit "mailto" beginnt ab.

 

Fertigstellung des Stylings

Jetzt, wo wir diese Links gezielt ausgewählt haben, können wir mehr tun, als sie nur blau zu machen. Wir können auch eine weitere mächtige CSS-Technik nutzen, die "content"-Eigenschaft. Die content-Eigenschaft erlaubt es Ihnen buchstäblich, Inhalte zu Seitenelementen hinzuzufügen, sogar Inhalte, die Sie direkt aus ihren eigenen Attributen gezogen haben! Mit einem Pseudo-Selektor geben Sie an, wo der Inhalt hinzugefügt werden soll, davor oder danach.

Werden wir ausgefallen und ziehen das Titel-Attribut aus unseren Links und fügen sie nach dem Link selbst hinzu, im Hover-Zustand des Links

a[href^="mailto"]:hover:after { content: attr(title); }

Das wird funktionieren, aber es wird den Text direkt nach dem Link einfügen. Stellen wir also sicher, dass die Formatierung gut aussieht und fügen wir etwas Abstand und ein > Zeichen hinzu, um den Link vom Text zu trennen, der beim Überfahren mit der Maus hinzugefügt wird

a[href^="mailto"]:hover:after { content: " > " attr(title); }

Wunderschön!
[BEISPIEL ANSEHEN]

 

Warum ist das besser?

  • Allein das Auflisten der E-Mail-Adresse als Link impliziert keine "Aktion". Ich finde es abrupt, wenn man auf einen Link klickt und sich ohne Vorwarnung sein Mail-Client öffnet.
  • Wenn Sie Ihrem Link einen Namen wie "E-Mail senden" geben, implizieren Sie diese Aktion.
  • Das Beste aus beiden Welten: Jetzt können Sie Ihrem Link den Namen "E-Mail senden" geben, aber auch die E-Mail-Adresse anzeigen.
  • Vorwärts-erweiternd (und rückwärtskompatibel). Diese Technik funktioniert nur in guten modernen Browsern, aber sie stürzt nicht ab. Ältere Browser sehen einfach den Link und er funktioniert einwandfrei.