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=- Betreffbody=- Nachrichtentextcc=- CC Empfängerbcc=- 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 URLsping-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 mitrel="noopener noreferrer" - ⚠️ Beschreibender Link-Text für Accessibility & SEO
Faustregel:
"Nutze
<a>für Navigation,<button>für Aktionen!"
Weiterführende Ressourcen
Gut gemacht! 🎉
Du hast "Das <a> Element - Links und Navigation" abgeschlossen
Artikel bewerten
Bitte einloggen um zu bewerten
Das könnte dich auch interessieren
HTML Links & Navigation
Verstehe, wie Links funktionieren und wie du eine Navigation erstellst. Das Rückgrat des Webs!
Das <button> Element - Interaktive Schaltflächen
Vollständige Referenz zum HTML <button> Element: Typen, Attribute, States, Accessibility, Button vs Link und Best Practices
Das <div> Element - Container für Block-Inhalte
Vollständige Referenz zum HTML <div> Element: Syntax, Attribute, Default-Styling, Best Practices und praktische Beispiele