Ziel von LU02: Sie bringen Ihr Projekt „Landingpage Alarado“ optisch näher ans Figma-Design, indem Sie
<link> einbinden und als font-family verwenden.px, em und rem und setzen Schriftgroessen konsistent um.:root definieren und mit var(…) einsetzen.
In vielen Projekten werden Fonts schnell über ein CDN eingebunden (z.B. Google Fonts). Das ist praktisch für Schulprojekte und schnelle Prototypen.
Typischer Aufbau im <head> (hier mit Poppins):
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet" />
Dann im CSS verwenden:
body { font-family: "Poppins", sans-serif; }
Praxis-Hinweis: In professionellen Projekten werden Fonts oft lokal gespeichert (Datenschutz, Performance, Offline-Fähigkeit). Für dieses Modul genügt zu Beginn das Einbinden via <link>. 1)
Wenn Fonts lokal im Projekt liegen, werden sie mit @font-face eingebunden.
@font-face { font-family: "Poppins"; src: url("./fonts/Poppins-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; }
font-family: Schriftfamilie mit Fallback (z.B. sans-serif)font-weight: Schriftschnitt (400 normal, 700 bold) 3)font-style: normal oder italicline-height: Zeilenhöhe (Best Practice: einheitenlos, z.B. 1.4)
Wichtig: Bei Schriftgroessen geht es nicht nur um „schön“, sondern auch um Skalierung, Wartbarkeit und Accessibility.
Viele Menschen nutzen Browser-Zoom oder haben eine grössere Standard-Schrift eingestellt.
px ist eine „fixe“ Design-Einheit: 16px bleibt rechnerisch 16px.h1 { font-size: 64px; } p { font-size: 18px; }
1em entspricht der berechneten Schriftgroesse (font-size) des aktuellen Elements.em wirkt wie ein Faktor: 2em ist doppelt so gross wie die Schriftgroesse des Eltern-Elements.body { font-size: 16px; } /* Basis */ h1 { font-size: 2em; } /* 2 × 16px = 32px */
Die typische EM-Falle Wenn mehrere Eltern-Elemente die Schrift bereits verändern, multipliziert sich der Effekt:
body { font-size: 1.2em; } /* 1.2 × 16px = 19.2px */ div { font-size: 1.3em; } /* 1.3 × 19.2px = 24.96px */ h1 { font-size: 2em; } /* 2 × 24.96px = 49.92px */
Wann ist em sinnvoll
button { font-size: 1rem; padding: 0.8em 1.2em; /* wächst mit der Button-Schrift */ }
1rem ist relativ zur Schriftgroesse des Root-Elements html.html { font-size: 16px; } h1 { font-size: 4rem; } /* 64px */ p { font-size: 1.125rem; } /* 18px */
CSS-Variablen sind benannte Werte, die Sie einmal zentral definieren und dann überall wiederverwenden.
:root { --primary: #263fa9; --text: #223344; --h1-size: 4rem; } body { color: var(--text); } button { background: var(--primary); } h1 { font-size: var(--h1-size); }
:root wirkt im ganzen Projekt
Vergleich zu Print-Design
CSS-Variablen funktionieren ähnlich wie Absatz- und Zeichenstile: Sie definieren Werte zentral und wenden sie konsistent an.
Viele CSS-Regeln funktionieren nach dem Prinzip „Wasserfall“ → Styles, die für Elemente ganz „oben“ im HTML definiert wurden, vererben sich an Elemente weiter „unten“ in der HTML-Struktur (gemeint sind Kinder-Elemente)
Was ist die Kaskade
Die CSS-Kaskade entscheidet, welche CSS-Regel am Ende wirklich angewendet wird, wenn mehrere Regeln dasselbe Element betreffen.
Einige Eigenschaften werden von Eltern an Kinder vererbt.
color, font-*, line-height, text-transformbackground-*, margin/padding, border, width/height, displaybody { font-family: "Poppins", sans-serif; color: #223344; line-height: 1.4; }
Wenn zwei Regeln dieselbe Eigenschaft setzen, gilt diese Reihenfolge:
!important gewinnt 10)a { color: black; } .menu a { color: gray; } a.active { color: blue; } #special a { color: red; }
Bei gleicher Spezifität gewinnt die Regel, die später im CSS steht.
.menu a { color: gray; } .menu a { color: green; } /* gewinnt, weil später */
Für ein vertieftes Verständnis schauen Sie sich diese interaktive Darstellung an: CSS Cascade
Media Queries passen die Darstellung an verschiedene Bildschirmbreiten an. Der Inhalt bleibt gleich, nur das Layout ändert sich.
Ein Breakpoint ist eine Breite, bei der Sie das Layout anpassen, weil es sonst nicht mehr sauber wirkt.
@media (width < 1024px) { ... }
Typische Hinweise, dass ein Breakpoint nötig ist:
Merksatz: Ein Breakpoint ist ein Layout-Umbruchpunkt, nicht ein „Handy-Mass“.
Desktop: Text links, Bild rechts. Mobile: Bild oben, Text darunter.
#hero-section { flex-direction: row; } @media screen and (width < 1024px) { #hero-section { flex-direction: column-reverse; } }
Media Queries folgen denselben Regeln wie normales CSS:
Praxis-Tipp
Wenn etwas nicht greift: DevTools → „Styles“ öffnen und schauen, welche Regel durchgestrichen ist. Das ist Kaskade in Aktion.
woff2.px oft weniger flexibel, wenn Sie ein Designsystem skalieren oder mehrere Breakpoints sauber pflegen wollen.em eine Recheneinheit: 1em = aktuelle font-size.em für globale Typografie manchmal schwerer zu kontrollieren, wenn viel verschachtelt wird.rem vermeiden Sie „Schriftgroessenvermehrung“ durch verschachtelte Elemente.line-height skaliert automatisch mit der Schriftgroesse.