Anfänger152024-01-15

Das <a> Element - Links und Navigation

Vollständige Referenz zum HTML <a> (Anchor) Element: Attribute, Link-Typen, Sicherheit, Accessibility und Best Practices

#html#element#link#navigation#anchor#href

Das <a> Element (Anchor/Link)

Das <a>-Element (anchor = Anker) erstellt Hyperlinks zu anderen Seiten, Dateien, E-Mail-Adressen, Positionen auf der gleichen Seite oder zu anderen URLs.

Syntax

<a href="https://example.com">Link-Text</a>

Grundlegende Eigenschaften

Element-Typ

  • Display: inline (bleibt im Textfluss)
  • Kategorie: Flow content, phrasing content, interactive content
  • Erlaubter Inhalt: Phrasing content (KEIN interaktiver Content wie andere Links oder Buttons)
  • Pflicht-Attribut: href (ohne href ist es nur ein Placeholder)

Wann verwenden?

  • Navigation zwischen Seiten
  • Downloads von Dateien
  • Sprung-Links zu Abschnitten (Anchors)
  • E-Mail-Links (mailto:)
  • Telefon-Links (tel:)

Wann NICHT verwenden?

  • ❌ Für Aktionen (nutze <button>)
  • ❌ Für Form-Submits (nutze <button type="submit">)
  • ❌ Ohne href (nutze <button> oder <span>)

Attribute

href - Hyperlink Reference (Pflicht)

Das wichtigste Attribut - definiert das Ziel des Links.

Absolute URLs

<!-- Externe Website -->
<a href="https://www.example.com">Example</a>

<!-- Mit Protokoll -->
<a href="https://example.com">HTTPS</a>
<a href="http://example.com">HTTP</a>
<a href="ftp://ftp.example.com">FTP</a>

Relative URLs

<!-- Relative zur aktuellen Seite -->
<a href="about.html">Über uns</a>

<!-- Relative zum Root -->
<a href="/about">Über uns (Root)</a>

<!-- Unterordner -->
<a href="./docs/guide.html">Guide</a>
<a href="../index.html">Zurück</a>

Anker-Links (Sprungmarken)

<!-- Link zur ID auf gleicher Seite -->
<a href="#section-2">Zu Abschnitt 2</a>

<!-- Das Ziel -->
<h2 id="section-2">Abschnitt 2</h2>

<!-- Link zu ID auf anderer Seite -->
<a href="/docs#installation">Installation</a>

Spezielle Protokolle

<!-- E-Mail -->
<a href="mailto:info@example.com">E-Mail senden</a>

<!-- E-Mail mit Betreff & Body -->
<a href="mailto:info@example.com?subject=Anfrage&body=Hallo">
  E-Mail mit Betreff
</a>

<!-- Telefon -->
<a href="tel:+491234567890">Anrufen</a>

<!-- SMS -->
<a href="sms:+491234567890">SMS senden</a>

<!-- WhatsApp -->
<a href="https://wa.me/491234567890">WhatsApp</a>

Leerer href

<!-- Placeholder (kein Ziel) -->
<a href="#">Noch nicht verlinkt</a>

<!-- Scrollt zur Seitenanfang -->
<a href="#">Nach oben</a>

<!-- Besser: JavaScript prevent default -->
<a href="#" onclick="doSomething(); return false;">Aktion</a>

target - Wo Link öffnen

<!-- Gleiches Fenster/Tab (Standard) -->
<a href="/about" target="_self">Über uns</a>

<!-- Neues Fenster/Tab -->
<a href="https://example.com" target="_blank">
  Externe Seite
</a>

<!-- Parent Frame -->
<a href="/home" target="_parent">Parent</a>

<!-- Top-Level Frame -->
<a href="/home" target="_top">Top</a>

<!-- Benanntes Fenster -->
<a href="/help" target="helpWindow">Hilfe</a>

⚠️ WICHTIG bei target="_blank":

<!-- ❌ UNSICHER -->
<a href="https://evil.com" target="_blank">Link</a>

<!-- ✅ SICHER (mit rel="noopener noreferrer") -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
  Externer Link
</a>

rel - Link-Beziehung

Definiert die Beziehung zwischen aktueller und verlinkter Seite.

<!-- Keine Referrer-Informationen weitergeben -->
<a href="https://example.com" rel="noopener noreferrer">
  Sicherer externer Link
</a>

<!-- Suchmaschinen nicht folgen -->
<a href="/admin" rel="nofollow">Admin</a>

<!-- Gesponserte Links -->
<a href="https://sponsor.com" rel="sponsored">Sponsor</a>

<!-- Benutzergenerierter Content -->
<a href="https://ugc-site.com" rel="ugc">User Link</a>

<!-- Alternative Version der Seite -->
<a href="/en/about" rel="alternate" hreflang="en">English</a>

<!-- Autor der Seite -->
<a href="https://author.com" rel="author">Autor</a>

<!-- Lizenz-Informationen -->
<a href="/license" rel="license">Lizenz</a>

<!-- Nächste/Vorherige Seite -->
<a href="/page-2" rel="next">Nächste</a>
<a href="/page-1" rel="prev">Vorherige</a>

download - Datei herunterladen

<!-- Datei herunterladen statt öffnen -->
<a href="/files/document.pdf" download>
  PDF herunterladen
</a>

<!-- Mit custom Dateinamen -->
<a href="/files/doc123.pdf" download="Anleitung.pdf">
  Anleitung herunterladen
</a>

<!-- Funktioniert NICHT bei Cross-Origin URLs -->
<a href="https://other-site.com/file.pdf" download>
  ❌ Funktioniert nicht
</a>

hreflang - Sprache des Ziels

<a href="/en/about" hreflang="en">English Version</a>
<a href="/de/about" hreflang="de">Deutsche Version</a>
<a href="/fr/about" hreflang="fr">Version française</a>

type - MIME-Type des Ziels

<a href="/document.pdf" type="application/pdf">PDF</a>
<a href="/video.mp4" type="video/mp4">Video</a>
<a href="/feed" type="application/rss+xml">RSS Feed</a>

ping - Tracking URLs

<!-- Browser sendet POST-Request an tracking-URL wenn geklickt -->
<a href="/page" ping="/track/click">Getrackte Page</a>

Default CSS-Eigenschaften

a {
  display: inline;
  color: #0000EE;          /* Blau */
  text-decoration: underline;
  cursor: pointer;
}

/* Besuchter Link */
a:visited {
  color: #551A8B;          /* Lila */
}

/* Hover */
a:hover {
  text-decoration: underline;
}

/* Aktiver Link (beim Klicken) */
a:active {
  color: #FF0000;          /* Rot */
}

/* Fokussiert (Tastatur) */
a:focus {
  outline: 1px dotted;
}

Link-Zustände (Pseudo-Klassen)

/* RICHTIE REIHENFOLGE: LoVe HAte */
a:link { }      /* Unbesuchter Link */
a:visited { }   /* Besuchter Link */
a:hover { }     /* Maus darüber */
a:active { }    /* Beim Klicken */
a:focus { }     /* Fokussiert */

Praktische Beispiele

1. Basis-Navigation

<nav>
  <a href="/">Home</a>
  <a href="/about">Über uns</a>
  <a href="/products">Produkte</a>
  <a href="/contact">Kontakt</a>
</nav>
nav a {
  display: inline-block;
  padding: 10px 20px;
  color: #333;
  text-decoration: none;
  transition: all 0.3s;
}

nav a:hover {
  background-color: #f0f0f0;
  color: #0066cc;
}

nav a:focus {
  outline: 2px solid #0066cc;
  outline-offset: 2px;
}

2. Button-Style Links

<a href="/signup" class="btn btn-primary">Jetzt anmelden</a>
<a href="/learn-more" class="btn btn-secondary">Mehr erfahren</a>
.btn {
  display: inline-block;
  padding: 12px 24px;
  border-radius: 6px;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s;
}

.btn-primary {
  background-color: #0066cc;
  color: white;
}

.btn-primary:hover {
  background-color: #0052a3;
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0, 102, 204, 0.3);
}

.btn-secondary {
  background-color: transparent;
  color: #0066cc;
  border: 2px solid #0066cc;
}

3. Card mit Link

<article class="card">
  <img src="image.jpg" alt="Produkt">
  <h3>Produktname</h3>
  <p>Beschreibung des Produkts</p>
  <a href="/products/123" class="card-link">
    Mehr erfahren →
  </a>
</article>
.card {
  border: 1px solid #ddd;
  border-radius: 8px;
  padding: 20px;
  transition: box-shadow 0.3s;
}

.card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.card-link {
  display: inline-block;
  margin-top: 12px;
  color: #0066cc;
  text-decoration: none;
  font-weight: 600;
}

.card-link:hover {
  text-decoration: underline;
}

4. External Link mit Icon

<a href="https://external.com" target="_blank" rel="noopener noreferrer" class="external-link">
  Externe Seite
  <span class="icon" aria-hidden="true">↗</span>
</a>
.external-link {
  color: #0066cc;
  text-decoration: none;
}

.external-link .icon {
  margin-left: 4px;
  font-size: 0.85em;
}

.external-link:hover {
  text-decoration: underline;
}

5. Download-Link

<a href="/files/guide.pdf" download="Guide.pdf" class="download-link">
  <span class="icon">📄</span>
  <span class="text">
    <strong>Anleitung herunterladen</strong>
    <small>PDF, 2.5 MB</small>
  </span>
</a>
.download-link {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 16px;
  background-color: #f8f9fa;
  border: 1px solid #dee2e6;
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
  transition: all 0.3s;
}

.download-link:hover {
  background-color: #e9ecef;
  border-color: #adb5bd;
}

.download-link .icon {
  font-size: 2rem;
}

.download-link .text {
  display: flex;
  flex-direction: column;
}

.download-link small {
  color: #6c757d;
  font-size: 0.875rem;
}

Best Practices

✅ DO (Empfohlen)

<!-- Beschreibender Link-Text -->
<a href="/docs">Dokumentation lesen</a>

<!-- Sicherheit bei externen Links -->
<a href="https://external.com" target="_blank" rel="noopener noreferrer">
  Externe Seite
</a>

<!-- Skip-Link für Accessibility -->
<a href="#main-content" class="skip-link">
  Zum Hauptinhalt springen
</a>

<!-- Klarer Kontext -->
<p>
  Mehr Informationen findest du in unserer
  <a href="/faq">FAQ-Seite</a>.
</p>

❌ DON'T (Vermeiden)

<!-- Unklarer Link-Text -->
<a href="/article">Hier klicken</a>        <!-- ❌ -->
<a href="/more">Mehr</a>                   <!-- ❌ -->
<a href="/docs">Klicke hier</a>            <!-- ❌ -->

<!-- target="_blank" ohne rel -->
<a href="https://evil.com" target="_blank">  <!-- ❌ UNSICHER -->

<!-- Links verschachteln -->
<a href="/outer">
  Text <a href="/inner">Link</a>           <!-- ❌ UNGÜLTIG -->
</a>

<!-- Button-Funktionalität mit Link -->
<a href="#" onclick="submitForm()">       <!-- ❌ Nutze <button> -->

<!-- Leerer Link -->
<a></a>                                   <!-- ❌ Kein Inhalt -->

Tipps & Tricks

Mailto-Links mit Vorausgefüllten Feldern

<a href="mailto:info@example.com?subject=Anfrage&body=Hallo,%20ich%20habe%20eine%20Frage">
  E-Mail senden
</a>

Parameter:

  • subject= - Betreff
  • body= - Nachrichtentext
  • cc= - CC Empfänger
  • bcc= - BCC Empfänger

Download-Attribut für Dateinamen

<a href="/files/document.pdf" download="Mein-Dokument.pdf">
  PDF herunterladen
</a>

Der User bekommt die Datei mit dem Namen "Mein-Dokument.pdf" statt "document.pdf"!

Smooth-Scroll zu Ankern mit CSS

html {
  scroll-behavior: smooth;
}

Jetzt scrollen ALLE #anker-Links smooth!

External Link Indicator mit CSS

a[href^="http"]:not([href*="deine-domain.de"])::after {
  content: " ↗";
  font-size: 0.8em;
}

Alle externen Links bekommen automatisch ein ↗ Symbol!

Print-Links nur am Screen anzeigen

@media print {
  nav a {
    display: none;
  }
}

Beim Drucken verschwinden Navigationslinks automatisch.

Häufige Fehler

1. target="_blank" Sicherheitslücke

<!-- ❌ GEFAHR: window.opener Exploit -->
<a href="https://evil.com" target="_blank">Link</a>

<!-- ✅ SICHER -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
  Link
</a>

Warum? Die verlinkte Seite kann via window.opener auf deine Seite zugreifen!

2. JavaScript statt href

<!-- ❌ Schlecht für SEO und Accessibility -->
<a href="#" onclick="doSomething()">Klick</a>

<!-- ✅ Besser -->
<button onclick="doSomething()">Klick</button>

<!-- ✅ Oder mit href fallback -->
<a href="/fallback" onclick="doSomething(); return false;">Klick</a>

3. Verschachtelte interaktive Elemente

<!-- ❌ UNGÜLTIG -->
<a href="/page">
  <button>Klick</button>
</a>

<!-- ✅ RICHTIG -->
<a href="/page" class="button-link">Klick</a>

Accessibility (Barrierefreiheit)

Beschreibender Link-Text

<!-- ❌ Schlecht für Screenreader -->
<a href="/article">Hier klicken</a>

<!-- ✅ Gut -->
<a href="/article">Artikel über HTML-Links lesen</a>

Aria-Labels

<!-- Zusätzlicher Kontext -->
<a href="/delete" aria-label="Artikel 'HTML Basics' löschen">
  Löschen
</a>

<!-- Icon-Links -->
<a href="/settings" aria-label="Einstellungen">
  <span aria-hidden="true">⚙️</span>
</a>

<!-- Externer Link-Hinweis -->
<a href="https://external.com" target="_blank">
  Externe Seite
  <span class="sr-only">(öffnet in neuem Tab)</span>
</a>

Skip-Links

<a href="#main-content" class="skip-link">
  Zum Hauptinhalt springen
</a>

<main id="main-content">
  <!-- Inhalt -->
</main>
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: #000;
  color: white;
  padding: 8px;
  text-decoration: none;
  z-index: 100;
}

.skip-link:focus {
  top: 0;
}

SEO-Tipps

1. Beschreibende Anchor-Texte

<!-- ❌ Schlecht für SEO -->
<a href="/services">Klick hier</a>

<!-- ✅ Gut für SEO -->
<a href="/services">Webdesign und Entwicklungs-Services</a>

2. Title-Attribut für Kontext

<a href="/docs/advanced" title="Fortgeschrittene Tutorials für Entwickler">
  Advanced Docs
</a>

3. Interne Verlinkung

<!-- Gute interne Verlinkung stärkt SEO -->
<p>
  Mehr über <a href="/html-basics">HTML Grundlagen</a> oder
  <a href="/css-intro">CSS Einführung</a> lernen.
</p>

Browser-Kompatibilität

Vollständig unterstützt in allen Browsern

Einschränkungen:

  • download-Attribut: Funktioniert nicht bei Cross-Origin URLs
  • ping-Attribut: Nicht in allen Browsern (Firefox, Safari teilweise)

Zusammenfassung

Das <a>-Element ist:

  • ✅ Das Kern-Element für Navigation
  • ✅ Ermöglicht Hyperlinks zwischen Seiten
  • ⚠️ Benötigt fast immer href-Attribut
  • ⚠️ target="_blank" → immer mit rel="noopener noreferrer"
  • ⚠️ Beschreibender Link-Text für Accessibility & SEO

Faustregel:

"Nutze <a> für Navigation, <button> für Aktionen!"

Weiterführende Ressourcen

HTMLLektion 8 von 20
40% abgeschlossen
Lektion abgeschlossen!

Gut gemacht! 🎉

Du hast "Das <a> Element - Links und Navigation" abgeschlossen

Artikel bewerten

0.0 (0 Bewertungen)

Bitte einloggen um zu bewerten