Appearance
Kapitel 5: CSS-Selektoren
Selektoren sind das Herzstück von CSS. Sie bestimmen, welche HTML-Elemente mit Stilen versehen werden. In diesem Kapitel lernen Sie die wichtigsten Selektoren!
5.1 Einfache Selektoren (Basis, 90%+ Nutzung)
Diese Selektoren werden am häufigsten verwendet. Lernen Sie sie zuerst!
1. Elementselektor (Tag-Selektor)
Wählt alle Elemente eines bestimmten Typs aus.
Syntax:
css
tagname {
eigenschaft: wert;
}Beispiel:
css
/* Alle <p>-Elemente auswählen */
p {
color: #333333;
line-height: 1.6;
}
/* Alle <h1>-Elemente auswählen */
h1 {
color: blau;
font-size: 36px;
}
/* Alle <a>-Elemente auswählen */
a {
color: grün;
text-decoration: none;
}HTML-Beispiel:
html
<h1>Überschrift</h1> <!-- Wird blau -->
<p>Absatz 1</p> <!-- Wird dunkelgrau -->
<p>Absatz 2</p> <!-- Wird auch dunkelgrau -->
<a href="#">Link</a> <!-- Wird grün -->2. Klassenselektor (Class-Selektor) - Am flexibelsten!
Wählt alle Elemente mit einer bestimmten Klasse aus. Verwenden Sie den Punkt (.) vor dem Klassennamen.
Syntax:
css
.klassenname {
eigenschaft: wert;
}Beispiel:
css
/* Alle Elemente mit der Klasse "highlight" auswählen */
.highlight {
background-color: gelb;
padding: 10px;
border-left: 4px solid orange;
}
/* Alle Elemente mit der Klasse "button" auswählen */
.button {
background-color: blau;
color: weiß;
padding: 10px 20px;
border-radius: 5px;
text-decoration: none;
}HTML-Beispiel:
html
<p class="highlight">Dieser Absatz ist hervorgehoben.</p>
<div class="highlight">Auch dieses div ist hervorgehoben.</div>
<a href="#" class="button">Klick mich!</a>
<button class="button">Auch ich bin ein Button!</button>💡 Warum Klassen so toll sind:
- ✅ Können auf mehreren Elementen verwendet werden
- ✅ Können mehrere Klassen auf einem Element kombiniert werden
- ✅ Wiederverwendbar und wartbar
3. ID-Selektor (ID-Selektor)
Wählt ein einzigartiges Element aus. Verwenden Sie die Raute (#) vor dem ID-Namen.
Syntax:
css
#id-name {
eigenschaft: wert;
}Beispiel:
css
/* Das Element mit der ID "header" auswählen */
#header {
background-color: #333333;
color: weiß;
padding: 20px;
text-align: center;
}
/* Das Element mit der ID "main-content" auswählen */
#main-content {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}HTML-Beispiel:
html
<header id="header">
<h1>Meine Webseite</h1>
</header>
<main id="main-content">
<p>Hier ist der Hauptinhalt.</p>
</main>⚠️ Wichtige Regel:
- IDs sollten einmalig sein (nur einmal pro Seite verwendet)
- Verwenden Sie Klassen, wenn Sie den Stil auf mehreren Elementen anwenden möchten
4. Universalselektor (*)
Wählt alle Elemente auf der Seite aus.
Syntax:
css
* {
eigenschaft: wert;
}Beispiel:
css
/* Alle Elemente zurücksetzen */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}💡 Wann verwenden?
- ✅ Zum Zurücksetzen von Standard-Stilen (CSS Reset)
- ❌ Nicht für normale Stile (wirkt sich auf alle Elemente aus - kann die Leistung beeinträchtigen)
5.2 Kombinierte Selektoren (Code vereinfachen)
Kombinierte Selektoren ermöglichen eine präzisere Auswahl.
1. Nachfahren-Selektor (Leerzeichen getrennt)
Wählt alle Elemente aus, die innerhalb eines anderen Elements liegen (egal wie tief).
Syntax:
css
vorfahre nachfahre {
eigenschaft: wert;
}Beispiel:
css
/* Alle <p>-Elemente innerhalb von <div> auswählen */
div p {
color: blau;
margin-bottom: 15px;
}
/* Alle <a>-Elemente innerhalb von <nav> auswählen */
nav a {
color: weiß;
text-decoration: none;
margin-right: 15px;
}HTML-Beispiel:
html
<div>
<p>Dieser Absatz ist blau.</p> <!-- Gewählt -->
<section>
<p>Auch dieser Absatz ist blau.</p> <!-- Gewählt (tiefer Nachfahre) -->
</section>
</div>
<nav>
<a href="#">Startseite</a> <!-- Gewählt -->
<a href="#">Über uns</a> <!-- Gewählt -->
</nav>2. Kind-Selektor (> getrennt)
Wählt nur die direkten Kinder eines Elements aus (nicht tiefer liegende Elemente).
Syntax:
css
eltern-element > kind-element {
eigenschaft: wert;
}Beispiel:
css
/* Nur direkte <p>-Kinder von <div> auswählen */
div > p {
color: grün;
font-weight: bold;
}HTML-Beispiel:
html
<div>
<p>Dieser Absatz ist grün und fett.</p> <!-- Gewählt (direktes Kind) -->
<section>
<p>Dieser Absatz ist nicht grün.</p> <!-- Nicht gewählt (Enkel) -->
</section>
</div>3. Angrenzender Geschwister-Selektor (+ getrennt)
Wählt das direkt folgende Geschwister-Element aus.
Syntax:
css
element + geschwister-element {
eigenschaft: wert;
}Beispiel:
css
/* Das erste <p>-Element nach einer <h1> auswählen */
h1 + p {
font-size: 20px;
color: #666666;
}HTML-Beispiel:
html
<h1>Überschrift</h1>
<p>Dieser Absatz ist 20px groß.</p> <!-- Gewählt -->
<p>Dieser Absatz ist normal.</p> <!-- Nicht gewählt -->4. Vereinigungs-Selektor (, getrennt)
Wählt mehrere Elemente gleichzeitig aus.
Syntax:
css
selektor1, selektor2, selektor3 {
eigenschaft: wert;
}Beispiel:
css
/* Alle <h1>, <h2> und <h3> gleichzeitig auswählen */
h1, h2, h3 {
font-family: 'Arial', sans-serif;
color: #333333;
margin-bottom: 15px;
}HTML-Beispiel:
html
<h1>Überschrift 1</h1> <!-- Gewählt -->
<h2>Überschrift 2</h2> <!-- Gewählt -->
<h3>Überschrift 3</h3> <!-- Gewählt -->
<p>Absatz</p> <!-- Nicht gewählt -->5.3 Pseudo-Klassen-Selektoren (Spezielle Zustände)
Pseudo-Klassen wählen Elemente basierend auf einem bestimmten Zustand aus.
1. Link-Pseudo-Klassen (Für Links)
:link- Noch nicht besuchte Links:visited- Bereits besuchte Links:hover- Wenn man mit der Maus darüber fährt:active- Wenn man darauf klickt
Beispiel:
css
/* Noch nicht besuchter Link */
a:link {
color: blau;
text-decoration: none;
}
/* Bereits besuchter Link */
a:visited {
color: lila;
}
/* Wenn man mit der Maus darüber fährt */
a:hover {
color: rot;
text-decoration: underline;
}
/* Wenn man darauf klickt */
a:active {
color: grün;
}2. Struktur-Pseudo-Klassen
:first-child- Erstes Kind-Element:last-child- Letztes Kind-Element:nth-child(n)- n-tes Kind-Element
Beispiel:
css
/* Erstes <li>-Element in einer Liste */
li:first-child {
font-weight: bold;
color: rot;
}
/* Letztes <li>-Element in einer Liste */
li:last-child {
border-bottom: keine;
}
/* Jedes zweite <li>-Element (gerade Zahlen) */
li:nth-child(even) {
background-color: #f0f0f0;
}
/* Jedes erste, dritte, fünfte... <li>-Element (ungerade Zahlen) */
li:nth-child(odd) {
background-color: #ffffff;
}HTML-Beispiel:
html
<ul>
<li>Element 1</li> <!-- Fett und rot -->
<li>Element 2</li> <!-- Heller Hintergrund -->
<li>Element 3</li> <!-- Weißer Hintergrund -->
<li>Element 4</li> <!-- Heller Hintergrund -->
<li>Element 5</li> <!-- Weißer Hintergrund, kein Rand unten -->
</ul>5.4 Selektoren-Priorität (Spezifität)
Was passiert, wenn mehrere Selektoren auf dasselbe Element zutreffen? Wer "gewinnt"?
🏆 Prioritätsreihenfolge (von hoch zu niedrig)
- Inline-Stile (
style="") - 1000 Punkte - ID-Selektoren (
#id) - 100 Punkte - Klassen-Selektoren (
.klasse) - 10 Punkte - Element-Selektoren (
tag) - 1 Punkt - Universalselektor (
*) - 0 Punkte
🎯 Beispiel: Prioritäts-Berechnung
css
/* 1 Punkt (Element-Selektor) */
p {
color: grau;
}
/* 10 Punkte (Klassen-Selektor) */
.text {
color: blau;
}
/* 11 Punkte (Element + Klasse) */
p.text {
color: grün;
}
/* 100 Punkte (ID-Selektor) */
#content {
color: rot;
}
/* 101 Punkte (ID + Element) */
#content p {
color: lila;
}HTML:
html
<p id="content" class="text">Welche Farbe hat dieser Text?</p>Ergebnis: Der Text ist lila, weil #content p die höchste Priorität hat (101 Punkte).
💡 Wichtige Regeln
- Höhere Priorität gewinnt
- Bei gleicher Priorität gewinnt der spätere Stil (unten in der Datei)
!importanterzwingt Priorität (sollte vermieden werden!)
css
p {
color: blau !important; /* Erzwingt blau, egal was andere sagen */
}5.5 Praxis: Navigation und Listenelemente stylen
Lassen Sie uns ein praktisches Beispiel erstellen!
🎯 Aufgabe
Erstellen Sie eine Navigationsleiste und eine Liste, und stylen Sie sie mit verschiedenen Selektoren.
📄 Lösung
HTML (index.html):
html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Selektoren Übung</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- Navigationsleiste -->
<nav class="haupt-nav">
<ul>
<li><a href="#">Startseite</a></li>
<li><a href="#">Über uns</a></li>
<li><a href="#">Dienstleistungen</a></li>
<li><a href="#">Kontakt</a></li>
</ul>
</nav>
<!-- Liste mit Artikeln -->
<div class="artikel-liste">
<h2>Neueste Artikel</h2>
<ul>
<li class="highlight">CSS lernen ist einfach!</li>
<li>HTML Grundlagen</li>
<li class="highlight">JavaScript für Anfänger</li>
<li>Responsive Webdesign</li>
</ul>
</div>
</body>
</html>CSS (style.css):
css
/* ===== Navigationsleiste ===== */
/* Alle <li>-Elemente in der Navigation auswählen */
.haupt-nav li {
display: inline;
margin-right: 20px;
}
/* Alle <a>-Elemente in der Navigation auswählen */
.haupt-nav a {
text-decoration: none;
color: #333333;
font-weight: bold;
padding: 5px 10px;
border-radius: 5px;
}
/* Wenn man mit der Maus über einen Link fährt */
.haupt-nav a:hover {
background-color: #333333;
color: weiß;
}
/* Erstes <li>-Element in der Navigation fett machen */
.haupt-nav li:first-child a {
color: #4CAF50;
}
/* ===== Artikelliste ===== */
/* Die Überschrift der Artikelliste stylen */
.artikel-liste h2 {
color: #3366cc;
border-bottom: 2px solid #3366cc;
padding-bottom: 10px;
}
/* Alle <li>-Elemente in der Artikelliste auswählen */
.artikel-liste li {
padding: 10px;
margin-bottom: 5px;
background-color: #f9f9f9;
border-left: 4px solid #cccccc;
}
/* Alle <li>-Elemente mit der Klasse "highlight" auswählen */
.artikel-liste li.highlight {
background-color: #ffffcc;
border-left-color: #ffcc00;
font-weight: bold;
}
/* Letztes <li>-Element in der Artikelliste */
.artikel-liste li:last-child {
margin-bottom: 0;
border-bottom: keine;
}🔍 Erklärung:
.haupt-nav li: Wählt alle<li>-Elemente aus, die innerhalb eines Elements mit der Klassehaupt-navliegen.haupt-nav a:hover: Wählt<a>-Elemente aus, wenn man mit der Maus darüber fährt.haupt-nav li:first-child a: Wählt den ersten<a>-Link in der Navigation aus.artikel-liste li.highlight: Wählt<li>-Elemente aus, die sowohl die Klassehighlighthaben als auch innerhalb von.artikel-listeliegen
📝 Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ Einfache Selektoren (Element, Klasse, ID, Universal)
- ✅ Kombinierte Selektoren (Nachfahre, Kind, Geschwister, Vereinigung)
- ✅ Pseudo-Klassen-Selektoren (Link-Zustände, Struktur)
- ✅ Selektoren-Priorität (Spezifität)
- ✅ Praktische Anwendung auf Navigation und Listen
🎯 Nächste Schritte
Im nächsten Kapitel werden wir:
- Textstile erlernen (Schriftarten, Größen, Farben, Ausrichtung)
- Typografie verbessern
- Lesbare und schöne Texte gestalten
Bereit für mehr? Los geht's! 🎨
