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.

Was du in diesem Tutorial siehst

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;
}
CSS-Syntax auf einen Blick
  1. Eine Regel beginnt mit dem Selektor, z. B. h1 (einzelner Selektor oder eine Kombination h1, h2, h3 ).
  2. Danach folgen geschweifte Klammern { }
  3. 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.

CSS
/* 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.

CSS
/* 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.

CSS
/* 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

HTML + CSS
<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 >

HTML + CSS
<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 +

HTML + CSS
<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 ~

HTML + CSS
<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;
}
Praxis-Tipp

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)

  1. Element-Selektoren: p, div, header
  2. Klassen, Attribute, Pseudoklassen: .btn, [type="text"], :hover
  3. IDs: #hero, #navigation
  4. Inline-Styles: style="color: red;"
  5. !important: Überschreibt alles (vermeiden!)

Beispiel: Wer gewinnt?

HTML + CSS
<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:

CSS
.btn { background: blue; }   /* Erste Regel */
.btn { background: green; }  /* ✓ Gewinnt (später definiert) */
Vermeide !important

!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.

CSS
/* ✗ 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
Nächste Schritte

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...