1. Unterrichtsblock: CSS Grundlagen und Syntax

Was ist CSS?
In den ersten HTML-Blöcken hast du beschrieben, was auf einer Seite steht: Überschriften, Absätze, Bilder, Links. Wie das aussieht, hat bisher der Browser mit seinen Standardwerten entschieden, deshalb sehen alle ungestalteten Seiten gleich aus. Ab jetzt kommt CSS dazu (Cascading Style Sheets).
HTML liefert den Inhalt und seine Struktur, CSS bestimmt das Aussehen: Farben, Abstände, Schriften und später auch die Anordnung auf der Seite. Beides bleibt bewusst getrennt. So änderst du das Aussehen einer ganzen Webseite, ohne eine Zeile HTML anzufassen.
Zuerst die Seite ohne CSS, darunter mit zwei CSS-Regeln:
<h1>Bergwandern</h1>
<p>Wandern ist Bewegung, Natur und Ruhe.</p>
<h1>Bergwandern</h1>
<p>Wandern ist Bewegung, Natur und Ruhe.</p>
h1 {
color: darkgreen;
text-align: center;
}
p {
font-size: 20px;
}
Aufbau einer CSS-Regel
Ein Stylesheet besteht aus Regeln. Jede Regel hat zwei Teile: den Selektor, der festlegt, welche Elemente betroffen sind, und den Deklarationsblock in geschweiften Klammern. Darin stehen die Deklarationen, jede aus Eigenschaft, Doppelpunkt, Wert und Semikolon.
<h1>Bergwandern</h1>
<p>Unterwegs in den Alpen.</p>
/* Alle Überschriften erster Ordnung */
h1 {
color: darkgreen;
font-size: 32px;
}
| Teil | Beispiel | Bedeutung |
|---|---|---|
| Selektor | h1 | wählt alle h1-Elemente der Seite aus |
| Deklarationsblock | { … } | enthält alle Deklarationen der Regel |
| Eigenschaft | color | was verändert wird |
| Wert | darkgreen | wie es verändert wird; steht hinter dem Doppelpunkt |
| Deklaration | color: darkgreen; | Eigenschaft, Doppelpunkt, Wert und Semikolon |
Kommentare stehen zwischen /* und */ und dürfen über mehrere Zeilen gehen. // und <!-- --> kennt CSS nicht. Als Farben genügen heute englische Farbnamen wie darkgreen, crimson oder gray. Wie du Farben genau mischst, lernst du im nächsten Block.
Drei Wege, CSS einzubinden
Es gibt drei Möglichkeiten, dem Browser CSS zu geben. Du solltest alle kennen, aber nur eine davon ist für Projekte richtig.
| Weg | So sieht es aus | Wann? |
|---|---|---|
| Inline | <p style="color: crimson;"> | nur für Ausnahmen oder Tests, gilt für genau ein Element |
| Intern | <style> im head | eine einzelne Seite, zum Beispiel für schnelle Tests |
| Extern | <link rel="stylesheet" href="style.css"> im head | Standard für Projekte: eine Datei für viele Seiten |
<!-- 1. Inline: direkt am Element -->
<p style="color: crimson;">Achtung, Steinschlag!</p>
<!-- 2. Intern: im head der Seite -->
<head>
<style>
p { color: crimson; }
</style>
</head>
<!-- 3. Extern: eigene Datei style.css, im head eingebunden -->
<head>
<link rel="stylesheet" href="style.css">
</head>
In der externen Datei style.css steht nur CSS: kein HTML und kein <style>-Tag. Der Pfad in href funktioniert wie bei Bildern und Links.
style-Attribute im HTML vermeidest du.Aufgabe 1 – Die Projektseite bekommt ein Stylesheet
Zeit: ca. 8 Minuten
Deine Projektseite aus den HTML-Blöcken wird die erste Seite mit eigenem Aussehen.
- Lege im Ordner deiner Projektseite die Datei
style.cssan und schreibe zwei Regeln hinein: eine fürh1(Textfarbedarkgreen) und eine fürbody(background-color: whitesmoke;). - Binde
style.cssimheadvonindex.htmlein. Sage voraus, was du nach dem Speichern und Neuladen siehst, und prüfe es. - Öffne mit F12 die Entwicklerwerkzeuge (Reiter „Elemente“), klicke die Überschrift an und suche rechts im Bereich „Stile“ deine Regel. Welche Datei und Zeile steht dort?
- Binde
style.cssauch inueber-mich.htmlein und lade die Seite neu.
Kontrolle: Die Überschrift ist dunkelgrün und der Hintergrund hellgrau. Bei der Regel stehen style.css und die Zeilennummer, in der h1 steht. Auch „Über mich“ sieht jetzt so aus.
style.css (erste Fassung):
Im head von index.html und ueber-mich.html:
In den Entwicklerwerkzeugen steht neben der Regel style.css:1 (bei h1) bzw. style.css:5 (bei body). Die Zeilennummer kann bei dir abweichen. Beide Seiten nutzen dieselbe Datei und sehen deshalb gleich aus.
Selektoren und Rangfolge
Der Selektor entscheidet, welche Elemente gestaltet werden. Diese Arten brauchst du jetzt:
| Selektor | Schreibweise | Wählt aus |
|---|---|---|
| Element | p | alle Elemente dieses Typs |
| Klasse | .hinweis | alle Elemente mit class="hinweis"; der Name darf beliebig oft vorkommen |
| id | #oben | das eine Element mit id="oben"; eine id gibt es pro Seite nur einmal |
| Gruppe | h2, h3 | mehrere Selektoren, durch Komma getrennt, teilen sich eine Regel |
| Alle | * | jedes Element der Seite (selten gebraucht) |
<h2>Tourenplan</h2>
<h3>Samstag</h3>
<p>Treffpunkt um 9 Uhr.</p>
<p class="hinweis">Regenjacke nicht vergessen!</p>
<p class="hinweis" id="wichtig">Anmeldung bis Freitag!</p>
h2, h3 {
color: seagreen;
}
.hinweis {
font-weight: bold;
}
#wichtig {
color: crimson;
}
Eine Klasse vergibst du, wenn mehrere Elemente gleich aussehen sollen. Ein Element darf mehrere Klassen tragen, durch Leerzeichen getrennt: class="hinweis gross". Die id nimmst du für etwas Einzelnes, das es nur einmal gibt, zum Beispiel die Sprungmarke #oben.
Wer gewinnt, wenn mehrere Regeln passen?
Auf einen Absatz können mehrere Regeln passen, die ihm verschiedene Farben geben wollen. Der Browser entscheidet nach einer festen Rangfolge, von stark nach schwach:
- das
style-Attribut am Element - der id-Selektor
- der Klassen-Selektor
- der Element-Selektor
Aufgabe 2 – Wer gewinnt?
Zeit: ca. 6 Minuten
Auf einen Absatz passen oft mehrere Regeln, die ihm unterschiedliche Farben geben wollen. Sage voraus, welche Farbe jeder Absatz bekommt, bevor du die Datei öffnest.
<style>
p { color: blue; }
.hinweis { color: green; }
#wichtig { color: red; }
p { color: orange; }
</style>
<p>Absatz 1</p>
<p class="hinweis">Absatz 2</p>
<p class="hinweis" id="wichtig">Absatz 3</p>
<p class="hinweis" style="color: purple;">Absatz 4</p>
- Schreibe deine Vorhersage für alle vier Absätze auf. Begründe jede Farbe in einem Satz.
- Speichere den Code als
wer-gewinnt.html(dasstyle-Element gehört in denhead, die Absätze in denbody) und prüfe deine Vorhersage. Wo lagst du falsch? - Vertausche die beiden
p-Regeln im Stylesheet. Welcher Absatz ändert seine Farbe? Warum nur dieser?
Kontrolle: Absatz 1 ist orange. Nach dem Vertauschen ändert sich genau ein Absatz.
Absatz 1 ist orange (beide p-Regeln passen, die untere gewinnt). Absatz 2 ist grün: die Klasse schlägt den Element-Selektor, auch wenn p weiter unten steht. Absatz 3 ist rot (id schlägt Klasse). Absatz 4 ist violett (das style-Attribut schlägt alles). Nach dem Vertauschen wird nur Absatz 1 blau, denn nur dort entscheidet allein die Reihenfolge.
Übungsaufgaben
Die Aufgaben 3 bis 6 sind der Kern und dauern zusammen etwa 45 Minuten. Sie bauen auf deiner Projektseite auf. Sage bei jeder Aufgabe zuerst voraus, was passiert, und prüfe es dann. Wer früher fertig ist, macht die Bonusaufgaben.
Aufgabe 3 – Fehlerjagd im Stylesheet
Zeit: ca. 8 Minuten
Ein Kollege hat das Stylesheet für die Vereinsseite geschrieben, aber der Browser ignoriert vieles davon. CSS meldet keine Fehler: Was der Browser nicht versteht, überspringt er einfach.
Gewünscht ist: Überschrift mittig und dunkelgrün, Hinweis mit gelbem Hintergrund, fett und 18 px groß, beide Absätze marineblau (navy), Links ohne Unterstreichung.
fehlerjagd.html:
<h1>Wanderverein Alpenblick</h1>
<nav><a href="#">Touren</a> <a href="#">Kontakt</a></nav>
<p class="hinweis">Anmeldung bis Freitag!</p>
<p>Wir wandern bei jedem Wetter.</p>
fehlerjagd.css:
h1 {
color: darkgreen
text-align: center;
}
.hinweis {
background-color= yellow;
font-size: 18px;
}
hinweis {
font-weight: bold;
}
p {
colour: navy;
}
// Links ohne Unterstreichung
nav a {
text-decoration: none;
}
- Lege beide Dateien an (in der HTML-Datei fehlen nur
headund Grundgerüst, ergänze sie und bindefehlerjagd.cssein) und öffne die Seite. Notiere, was nicht dem Wunsch entspricht. - Öffne die Entwicklerwerkzeuge (F12, Reiter „Elemente“) und klicke einzelne Elemente an. Der Browser streicht ungültige Zeilen durch oder markiert sie mit einem Warnzeichen.
- Es sind fünf Fehler. Repariere sie und schreibe zu jedem einen CSS-Kommentar (
/* ... */).
Tipp: Ein vergessenes Semikolon macht meist nicht nur eine, sondern zwei Zeilen unwirksam.
Kontrolle: Nach der Reparatur stimmt alles aus dem Wunsch. Mindestens zwei Fehler hast du über die durchgestrichenen Zeilen in den Entwicklerwerkzeugen gefunden.
Aufgabe 4 – Die Projektseite gestalten
Zeit: ca. 15 Minuten
Jetzt bekommt deine Projektseite ein eigenes Aussehen. Alles kommt in style.css. Im HTML änderst du höchstens class und id. Für Farben reichen heute Farbnamen wie seagreen, crimson oder darkslategray; die genauen Möglichkeiten lernst du im nächsten Block.
body: SchriftartArial, sans-serif, eine Hintergrundfarbe und eine Textfarbe nach Wahl.h1zentriert und farbig. Alleh2undh3bekommen gemeinsam eine zweite Farbe (Gruppierung mit Komma).- Ein wichtiger Satz bekommt die Klasse
hervorgehoben(fett, größere Schrift, eigene Farbe). Verwende die Klasse an mindestens zwei Stellen deiner Seiten. - Die Überschrift mit der id
obenbekommt über#obeneine größere Schrift (font-size: 40px). - Links ohne Unterstreichung (
text-decoration: none). Der Fußbereichfooterbekommt kleine, graue, zentrierte Schrift. - Gliedere
style.cssmit Kommentaren in Abschnitte. Binde die Datei in allen Seiten deines Projekts ein.
Kontrolle: Entfernst du testweise die link-Zeile im head, sieht die Seite wieder aus wie zuvor. In deiner Datei kommen ein Element-Selektor, ein Klassen-Selektor, ein id-Selektor und eine Gruppierung vor.
Mögliche Fassung (Farben und Größen sind Geschmackssache). Im HTML tragen die wichtigen Sätze class="hervorgehoben", die Überschrift id="oben".
Aufgabe 5 – Aufräumen: Ein Praktikant hat inline gestaltet
Zeit: ca. 10 Minuten
Ein Praktikant hat die Tourenseite nur mit style-Attributen gestaltet. Das sieht gut aus, aber jede Änderung kostet viele Handgriffe.
aufraeumen.html (Inhalt des body):
<h2 style="color: seagreen; text-align: center;">Unsere Touren</h2>
<p style="color: darkslategray; font-size: 18px;">Bergsee-Runde: 2 Stunden, leicht</p>
<p style="color: darkslategray; font-size: 18px;">Gipfeltour: 5 Stunden, schwer</p>
<p style="color: crimson; font-size: 18px; font-weight: bold;">Klamm: gesperrt</p>
<h2 style="color: seagreen; text-align: center;">Termine</h2>
<p style="color: darkslategray; font-size: 18px;">Samstag, 10 Uhr: Treffpunkt Parkplatz</p>
<p style="color: crimson; font-size: 18px; font-weight: bold;">Anmeldung bis Freitag</p>
- Zähle: Wie oft steht
font-size: 18px;im Code? Der Verein möchte 20 px. An wie vielen Stellen müsstest du ändern? - Lege
aufraeumen.cssan, binde sie ein und entferne allestyle-Attribute. Ersetze sie durch Regeln: gemeinsame Eigenschaften in die Regeln fürh2undp, nur die Abweichungen (rot, fett) in eine Klassewarnung. - Stelle die Schriftgröße auf 20 px um. An wie vielen Stellen musst du jetzt ändern?
Tipp: Die Klasse braucht nur die Eigenschaften, die vom Element-Selektor abweichen. Erinnere dich an Aufgabe 2: Wer gewinnt, die Klasse oder das Element?
Kontrolle: Vorher 5 Stellen, nachher 1. Im HTML kommt kein style-Attribut mehr vor, die Seite sieht (bis auf die 20 px) so aus wie vorher.
Aufgabe 6 – Ein Plakat für den Wandertag
Zeit: ca. 12 Minuten
Der Wanderverein braucht ein Plakat für den Wandertag am Bergsee. Du entscheidest, wie es aussieht. Nur CSS, noch keine Bilder.
- Lege
plakat.htmlundplakat.cssan. Das HTML enthält eine Überschrift, einen Untertitel, drei Informationen (Wann? Wo? Was mitbringen?) und einen Anmeldehinweis. - Gestalte das Plakat mit mindestens zwei Klassen, einer id und einer Gruppierung. Verwende
background-color,color,font-sizeundtext-align. - Die wichtigste Information muss die größte sein. Frage deine Sitznachbarin oder deinen Sitznachbarn aus einem Meter Abstand: Was ist die wichtigste Information?
Kontrolle: Dein Gegenüber nennt ohne Zögern das Datum oder die Uhrzeit als Erstes. Alle Farben in deiner Datei sind Farbnamen.
Eine mögliche Lösung. Das Datum ist mit 44 px die größte Schrift, der Anmeldehinweis fällt durch Hintergrund und Fettdruck auf.
Bonus für Schnelle
Bonusaufgabe 1 – Nur die Links in der Navigation
Bisher traf eine Regel wie a { ... } alle Links der Seite. Ein Nachfahrenselektor trifft nur Elemente innerhalb eines anderen: nav a meint alle Links, die irgendwo im nav stehen. Zwischen beiden Namen steht ein Leerzeichen.
Lege bonus-nachfahren.html an (Inhalt des body):
<header>
<nav><a href="#">Start</a> <a href="#">Touren</a></nav>
</header>
<main>
<p>Quelle: <a href="#">Wikipedia</a></p>
</main>
<footer>
<a href="#oben">Nach oben</a>
</footer>
- Gestalte die Links in der Navigation dunkelgrün und fett (
nav a), den Link im Fußbereich grau (footer a). - Sage voraus: Welche Farbe hat der Link „Wikipedia“? Prüfe es.
- Ergänze
a { color: red; }ganz unten im Stylesheet. Welche Links werden rot? Warum nicht alle?
Kontrolle: Nur der Link im main wird rot.
Nach dem Ergänzen von a { color: red; } wird nur „Wikipedia“ rot: Die Regeln nav a und footer a enthalten zwei Elementnamen und gewinnen deshalb gegen a, auch wenn a weiter unten steht.
Bonusaufgabe 2 – Vererbung: Warum bleibt der Link blau?
Manche Eigenschaften, zum Beispiel color und font-family, werden vom Elternelement an alle Kinder vererbt. Dann reicht eine Regel für body.
Lege bonus-vererbung.html an (Inhalt des body):
<h1>Titel</h1>
<p>Text mit <strong>fett</strong> und einem <a href="#">Link</a>.</p>
- Schreibe eine einzige Regel:
body { color: darkgreen; }. Sage voraus, welche Teile grün werden, und prüfe es. - Ein Teil bleibt nicht grün. Der Browser bringt für ihn eine eigene Regel mit, die gegen die Vererbung gewinnt. Finde in den Entwicklerwerkzeugen heraus, welcher Teil das ist.
- Mit dem Wert
inheritsagst du „nimm den Wert des Elternelements“. Mache auch diesen Teil grün, ohne eine Farbe zu wiederholen.
Kontrolle: Erst ist nur der Link blau, nach deiner Ergänzung ist der ganze Text grün.
- CSS legt das Aussehen fest, HTML den Inhalt. Beides steht in getrennten Dateien.
- Eine Regel besteht aus Selektor und Deklarationsblock:
selektor { eigenschaft: wert; }. Jede Deklaration endet mit Semikolon, Kommentare stehen in/* */. - Eingebunden wird mit
<link rel="stylesheet" href="style.css">imhead.style-Attribut und<style>sind nur für Tests. - Selektoren:
p(Element),.name(Klasse),#name(id),h2, h3(Gruppe). - Rangfolge:
style-Attribut vor id vor Klasse vor Element. Bei Gleichstand gewinnt die spätere Regel.
