CSS Grundlagen
CSS-Syntax: Wie Regeln aufgebaut sind, welche Selektoren es gibt und wie du Elemente gezielt ansprichst.
Was ist CSS?
CSS (Cascading Style Sheets) ist die Sprache für das Design deiner Webseite. Während HTML die Struktur und den Inhalt definiert, bestimmt CSS das Aussehen: Farben, Schriften, Abstände, Layouts und Animationen.
Der Name "Cascading" (kaskadierend) beschreibt, wie CSS-Regeln von oben nach unten fließen und sich gegenseitig überschreiben können - ein Konzept, das wir am Ende dieses Tutorials bei der Spezifität genauer betrachten.
- Syntax: Wie CSS-Regeln aufgebaut sind
- Selektoren: Elemente, Klassen, IDs und mehr
- Pseudoklassen & -elemente: Zustände und virtuelle Inhalte
- Kombinatoren: Elemente in Beziehung zueinander ansprechen
- Spezifität: Welche Regel gewinnt bei Konflikten?
Formatierungsregeln
Ein CSS-Stylesheet enthält alle Regeln, die bestimmen, wie eine Webseite und ihre einzelnen Elemente dargestellt werden. Jede Regel besteht aus zwei Teilen: Selektor und Deklarationsblock.
Der Selektor legt fest, auf welche Elemente sich die Formatierung bezieht. Der Deklarationsblock steht in geschweiften Klammern und enthält ein oder mehrere Eigenschaft-Wert-Paare, die das Aussehen dieser Elemente definieren.
Ein Selektor kann zum Beispiel einfach der Name eines HTML-Elements sein - dann wirkt die Regel auf alle Elemente dieses Typs.
Beispiel für eine CSS-Regel für eine h1-Überschrift
h1 {
color: teal;
margin-bottom: 20px;
}
- Eine Regel beginnt mit dem Selektor, z. B.
h1(einzelner Selektor oder eine Kombinationh1, h2, h3). - Danach folgen geschweifte Klammern
{ } - Im Inneren stehen die Eigenschaft-Wert-Paare, jeweils im Format
eigenschaft: wert;/property: value;- getrennt durch Doppelpunkte und abgeschlossen mit einem Semikolon.
Selektoren
Element-Selektoren
Seit HTML5 kannst du die HTML-Struktur-Elemente <header>,
<main>, <footer>,
<nav>, <section>,
<article> usw. direkt ansprechen, ohne Punkt - weil
sie
echte
Tags
sind, keine Klassen.
/* 3. HTML5-Struktur-Elemente */
header {
background-color: #333;
color: #fff;
padding: 20px 0;
}
main {
padding: 60px 0;
}
footer {
background-color: #222;
color: #ccc;
padding: 40px 0;
text-align: center;
}
Klassen-Selektor .klasse
Das ist dein „Werkzeugkasten" für Layout und Gestaltung. Hier kommen Hilfsklassen und Komponenten, die du mehrfach brauchst.
Eine Klasse kannst du beliebig vielen Elementen zuweisen. Ideal für wiederkehrende Stile.
<p class="highlight">Wichtiger Hinweis</p>
.highlight {
background-color: yellow;
padding: 0.5rem;
}
/* 4. Allgemeine, wiederverwendbare Klassen */
.container {
max-width: 1000px;
margin: 0 auto;
padding: 0 20px;
}
.bg-light { background-color: #f6f8f6; }
.bg-dark { background-color: #333; color: #fff; }
.text-center { text-align: center; }
.mt-2 { margin-top: 20px; }
.pt-4 { padding-top: 40px; }
ID-Selektor #id
Eine ID sollte nur einmal pro Seite auf deiner Website vorkommen. Gut für eindeutig identifizierbare Bereiche.
<section id="hero">
Willkommen auf meiner Seite
</section>
#hero {
text-align: center;
padding: 2rem;
}
Pseudoklassen z. B. :hover,
:focus, :first-child
Pseudoklassen greifen auf dynamische Zustände oder spezielle Positionen zu.
button:hover {
opacity: 0.8;
}
input:focus {
border-color: dodgerblue;
}
ul li:first-child {
font-weight: bold;
}
Pseudoelemente ::before,
::after
Damit kannst du virtuelle Elemente erzeugen, z. B. für Icons, Schmuckelemente oder Marker.
h2::before {
content: "◆ ";
color: orange;
}
p::after {
content: " ↩";
opacity: 0.6;
}
Kombinierte Selektoren & Kombinatoren
Du kannst Selektoren kombinieren, um Elemente präziser anzusprechen. Dabei gibt es zwei Ansätze: mehrere Selektoren verketten oder Beziehungen zwischen Elementen nutzen.
Mehrere Selektoren verketten
Ohne Leerzeichen verbunden bedeutet: Element muss alle Bedingungen erfüllen.
/* Element mit bestimmter Klasse */
p.intro {
font-size: 1.2rem;
}
/* Nur <p> mit class="intro", nicht <div class="intro"> */
/* Element mit mehreren Klassen */
.btn.primary {
background: blue;
}
/* Nur Elemente mit BEIDEN Klassen: class="btn primary" */
/* Element mit ID */
div#hero {
min-height: 100vh;
}
/* Kombination aus allem */
input.form-control:focus {
border-color: blue;
}
Selektorlisten - mehrere Elemente gleich stylen
Mit Komma getrennt: Die Regel gilt für alle aufgelisteten Selektoren.
/* Alle Überschriften */
h1, h2, h3, h4 {
font-family: "Montserrat", sans-serif;
line-height: 1.2;
}
/* Verschiedene Elemente */
button, .btn, input[type="submit"] {
cursor: pointer;
}
Kombinatoren - Beziehungen zwischen Elementen
Kombinatoren beschreiben die Beziehung zwischen Elementen im HTML-Baum:
| Kombinator | Name | Beschreibung | Beispiel |
|---|---|---|---|
␣ (Leerzeichen) |
Nachfahre | Alle Nachfahren (egal wie tief verschachtelt) | nav a |
> |
Kind | Nur direkte Kinder | ul > li |
+ |
Direkter Nachbar | Das unmittelbar folgende Geschwister | h2 + p |
~ |
Allgemeiner Nachbar | Alle folgenden Geschwister | h2 ~ p |
Nachfahren-Selektor - ␣ Leerzeichen
<nav>
<ul>
<li><a href="#">Link 1</a></li> <!-- ✓ wird gestylt -->
<li><a href="#">Link 2</a></li> <!-- ✓ wird gestylt -->
</ul>
</nav>
/* Alle <a> innerhalb von <nav>, egal wie tief */
nav a {
color: white;
text-decoration: none;
}
Kind-Selektor >
<ul class="menu">
<li>Punkt 1</li> <!-- ✓ direktes Kind -->
<li>Punkt 2
<ul>
<li>Unterpunkt</li> <!-- ✗ kein direktes Kind von .menu -->
</ul>
</li>
</ul>
/* Nur direkte <li>-Kinder von .menu */
.menu > li {
border-bottom: 1px solid #ccc;
}
Direkter Nachbar +
<h2>Überschrift</h2>
<p>Erster Absatz</p> <!-- ✓ direkt nach h2 -->
<p>Zweiter Absatz</p> <!-- ✗ nicht direkt nach h2 -->
/* Nur der erste Absatz direkt nach einer h2 */
h2 + p {
font-size: 1.1rem;
color: #666;
}
Allgemeiner Nachbar ~
<h2>Überschrift</h2>
<p>Absatz 1</p> <!-- ✓ -->
<p>Absatz 2</p> <!-- ✓ -->
<p>Absatz 3</p> <!-- ✓ -->
/* ALLE Absätze, die nach einer h2 kommen */
h2 ~ p {
margin-left: 1rem;
}
Der Nachfahren-Selektor (Leerzeichen) ist am häufigsten. Der Kind-Selektor (>) ist nützlich bei verschachtelten Menüs. Die
Geschwister-Selektoren (+ und ~)
sind praktisch für Abstände nach Überschriften oder Checkbox-Hacks ohne JavaScript.
Spezifität - Welche Regel gewinnt?
Wenn mehrere CSS-Regeln auf dasselbe Element zutreffen, entscheidet die Spezifität, welche Regel angewendet wird. Je spezifischer ein Selektor, desto höher seine Priorität.
Spezifität berechnen
Spezifität wird oft als Zahlenreihe dargestellt: (Inline, IDs, Klassen, Elemente)
| Selektor | Spezifität | Erklärung |
|---|---|---|
p |
(0, 0, 0, 1) | 1 Element |
.intro |
(0, 0, 1, 0) | 1 Klasse |
p.intro |
(0, 0, 1, 1) | 1 Klasse + 1 Element |
#hero |
(0, 1, 0, 0) | 1 ID |
#hero .title |
(0, 1, 1, 0) | 1 ID + 1 Klasse |
style="..." |
(1, 0, 0, 0) | Inline-Style |
Hierarchie (von schwach zu stark)
- Element-Selektoren:
p,div,header - Klassen, Attribute, Pseudoklassen:
.btn,[type="text"],:hover - IDs:
#hero,#navigation - Inline-Styles:
style="color: red;" - !important: Überschreibt alles (vermeiden!)
Beispiel: Wer gewinnt?
<p id="intro" class="highlight">Dieser Text ist...</p>
p { color: black; } /* (0,0,0,1) */
.highlight { color: yellow; } /* (0,0,1,0) */
#intro { color: blue; } /* (0,1,0,0) ✓ Gewinner! */
p.highlight { color: green; } /* (0,0,1,1) */
Der Text ist blau, weil #intro die höchste
Spezifität hat.
Bei gleicher Spezifität
Wenn zwei Regeln die gleiche Spezifität haben, gewinnt die später definierte:
.btn { background: blue; } /* Erste Regel */
.btn { background: green; } /* ✓ Gewinnt (später definiert) */
!important überschreibt alle anderen Regeln - aber es führt
schnell zu Wartungsproblemen. Wenn du es brauchst, ist das meist ein Zeichen für
schlecht strukturiertes CSS. Besser: Spezifischere Selektoren verwenden.
/* ✗ Vermeiden */
.btn { background: red !important; }
/* ✓ Besser: Spezifischer Selektor */
.header .btn { background: red; }
Zusammenfassung
| Selektor-Typ | Syntax | Spezifität |
|---|---|---|
| Element | p, div, header |
Niedrig |
| Klasse | .klasse |
Mittel |
| ID | #id |
Hoch |
| Pseudoklasse | :hover, :focus |
Wie Klasse |
| Pseudoelement | ::before, ::after |
Wie Element |
| Kombinatoren | >, +, ~, Leerzeichen |
Erhöhen nicht die Spezifität |
Jetzt kennst du die CSS-Syntax und Selektoren. Im nächsten Tutorial lernst du, wie du deine CSS-Datei sinnvoll strukturierst - von Reset über Base-Styles bis zu Utility-Klassen.
Mehr aus CSS
Tutorials werden geladen...