1. CSS in HTML einbinden
Das Stylesheet wird im <head> mit einem
<link>-Element eingebunden. Der Pfad in href ist
relativ zur HTML-Datei. Pfade innerhalb der CSS-Datei
(z.B. zu Fonts oder Bildern) sind dagegen relativ zur CSS-Datei – darum
../fonts/….
projekt/ ├── index.html ├── css/ │ └── styles.css ├── fonts/ │ └── spacegrotesk-regular.woff2 └── images/ └── hero-velo.svg
<!-- 1. Extern (empfohlen!) --> <link rel="stylesheet" href="css/styles.css"> <!-- 2. Intern im <head> --> <style> h1 { color: red; } </style> <!-- 3. Inline (vermeiden) --> <h1 style="color: red;">Titel</h1>
Velowerkstatt Zürich
Schnelle Reparaturen, faire Preise und Express-Service für dein Velo.
Termin buchen
Tipp: Schalte den <link> aus – so sieht die Seite aus,
wenn der Pfad falsch ist (häufigster Fehler!). Prüfen kannst du das in den
Webtools unter Netzwerk: Eine rote 404 bedeutet «Datei nicht gefunden».
2. Heading-Struktur (h1–h6)
Überschriften bilden das Inhaltsverzeichnis der Seite – für
Screenreader und Suchmaschinen. Regeln: genau ein <h1>
pro Seite, keine Stufen überspringen (nach h2 kommt
h3, nicht h4) und die Stufe nach Bedeutung
wählen, nicht nach Grösse – die Grösse macht man mit CSS.
<h1>Velowerkstatt Zürich</h1> <h2>Unsere Leistungen</h2> <h3>Reparatur</h3> <h4>Platten flicken</h4> <h5>Preis</h5> <h6>inkl. MwSt.</h6> <h3>Express-Service</h3> <h2>Kontakt</h2>
h1 Velowerkstatt Zürich
h2 Unsere Leistungen
h3 Reparatur
h4 Platten flicken
h5 Preis
h6 inkl. MwSt.
h3 Express-Service
h2 Kontakt
Tipp: Die Einrückung zeigt die Gliederung. Ein h2 darf
auch klein aussehen – entscheidend ist die Struktur, nicht die Optik.
3. Schriften einbinden mit @font-face
Mit @font-face wird eine Schriftdatei (am besten .woff2)
unter einem Namen registriert. Pro Schriftschnitt (Regular, Medium, Bold …)
braucht es einen eigenen Block. Wichtig: @font-face
alleine ändert noch nichts – die Schrift muss danach mit font-family
verwendet werden.
/* 1. Schrift registrieren (einmal pro Schnitt) */ @font-face { font-family: 'Space Grotesk'; src: url('../fonts/spacegrotesk-regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Space Grotesk'; src: url('../fonts/spacegrotesk-bold.woff2') format('woff2'); font-weight: 700; }
Velowerkstatt Zürich – schnelle Reparaturen, faire Preise.
Tipp: Schalte font-family aus – dann wird wieder die
Schrift vom body geerbt. Ein Schnitt, der nicht per
@font-face geladen wurde (z.B. 300), wird vom Browser
durch den nächstliegenden ersetzt.
4. Box-Model
Jedes Element ist eine Box aus vier Schichten: content (Inhalt),
padding (Innenabstand), border (Rahmen) und
margin (Aussenabstand). Mit box-sizing: border-box
gilt die width inklusive padding und border – das macht das Rechnen viel einfacher.
/* 1 Wert: alle 4 Seiten */ margin: 20px; /* 2 Werte: oben/unten links/rechts */ margin: 20px 40px; /* 4 Werte: oben rechts unten links (Uhrzeigersinn) */ margin: 10px 20px 30px 40px; /* Element horizontal zentrieren */ margin: 0 auto;
- margin
- border
- padding
- content
Sichtbare Breite der Box: –
Achtung: Viele Reset-Stylesheets setzen * { box-sizing: border-box; }
für alle Elemente. Ohne diese Regel gilt content-box (Standard).
5. Bilder (<img>)
Ein Bild wird mit <img> eingefügt. Das Attribut alt
beschreibt den Inhalt (für Screenreader und falls das Bild nicht lädt) und ist Pflicht.
Ohne CSS wird ein Bild in seiner Originalgrösse angezeigt – und ragt
so schnell aus seinem Container heraus.
<div class="img-parent"> <img src="images/hero-velo.svg" alt="Illustration eines Velos"> </div>
Tipp: Mit width: 100% passt sich das Bild
automatisch der Breite des Eltern-Elements an – verändere die Breite des
Containers und schau, wie das Bild mitwächst.
max-width: 100% (statt width) verkleinert nur,
vergrössert aber nie über die Originalgrösse.
height: auto behält das Seitenverhältnis,
display: block entfernt den kleinen Spalt unter dem Bild.
6. Flexbox
Flexbox ordnet Elemente in einer Richtung an (Zeile oder Spalte).
Die Eigenschaften gehören auf den Container, nicht auf die Items.
justify-content verteilt entlang der Hauptachse,
align-items richtet quer dazu aus.
<div class="flex-container"> <div class="item">A</div> <div class="item">B</div> <div class="item">C</div> </div>
mit mehr
Inhalt
Tipp: Bei flex-direction: column tauschen die Achsen –
justify-content wirkt dann vertikal, align-items horizontal.
7. Grid
Jedes Grid braucht einen Container, welcher die Elemente beinhaltet.
Dieser Container bestimmt mit grid-template-columns, wie die Elemente
angeordnet werden. 1fr bedeutet «ein Teil vom verfügbaren Platz».
Gibt es mehr Elemente als Spalten, wird automatisch auf eine neue Zeile umgebrochen.
<div class="grid-container"> <div class="item">1</div> <div class="item">2</div> <!-- … bis 6 --> </div>
Tipp: Für responsive Layouts die Anzahl Spalten in einer
@media-Query reduzieren, z.B. auf 1fr fürs Handy.