Cascading Style Sheets

Wie aus Struktur eine gestaltete Seite wird

Informatik – 3. Semester

Software- und Web-Engineering I · TH Lübeck
Warum ist dieser Button rot?
Software- und Web-Engineering I · TH Lübeck
1 Regeln und Selektoren
2 Die Kaskade
3 Boxen
4 Layout
5 Selbst gestalten & Ausblick

Wie sage ich, welches Element gemeint ist?

Software- und Web-Engineering I · TH Lübeck
Gleiches HTML, andere Darstellung
Software- und Web-Engineering I · TH Lübeck
Aufbau einer Regel
Die Regel .leiste a { color: #e4003a; } mit Beschriftung: Selektor, Deklarationsblock, Eigenschaft, Wert, Deklaration
  • Der Selektor bestimmt, welche Elemente gemeint sind
  • Jede Deklaration setzt eine Eigenschaft auf einen Wert, abgeschlossen mit ;
  • Eigenschaften heißen in CSS nicht Attribute. Attribute stehen im HTML: class, href, alt
Software- und Web-Engineering I · TH Lübeck
CSS einbinden
Extern: so machen Sie es
<head>
  <link rel="stylesheet" href="style.css">
</head>
  • Eine Datei für alle Seiten
  • Der Browser lädt sie einmal und cacht sie
Im Dokument oder am Element: Ausnahme
<style>
  p { color: green; }
</style>
<p style="color: blue">Inline</p>
  • <style> gilt nur für diese eine Seite
  • style="" mischt Darstellung ins HTML und schlägt fast jede Regel
Software- und Web-Engineering I · TH Lübeck
Die wichtigsten Selektoren
Selektor trifft Beispiel
Typ alle Elemente dieses Typs li
Klasse alle Elemente mit dieser Klasse .passed
ID das eine Element mit dieser id #leben-am-limes
Attribut Elemente mit diesem Attribut oder Wert [type="email"]
Pseudoklasse Elemente in einem Zustand oder an einer Position :hover, :focus, :first-child
Universal alle Elemente *
Software- und Web-Engineering I · TH Lübeck
Klassen gruppieren, IDs sind einmalig
<ul>
  <li class="passed">1234: 1,0</li>
  <li class="passed">1235: 1,7</li>
  <li class="passed" id="leben-am-limes">1236: 4,0</li>
  <li class="not-passed">1238: 5,0</li>
</ul>
.passed         { color: green; }
.not-passed     { color: red; }
#leben-am-limes { font-weight: bold; }
  • Eine Klasse dürfen viele Elemente tragen, ein Element auch mehrere: class="passed knapp"
  • Eine ID gibt es pro Seite genau einmal
  • Für Stil fast immer Klassen. IDs für Sprungmarken, label for und JavaScript
Software- und Web-Engineering I · TH Lübeck
Selektoren kombinieren
Schreibweise Name trifft
nav a Nachfahre jedes a irgendwo innerhalb von nav
ul > li Kind nur li direkt in ul
h2 + p Nachbar das p direkt nach einem h2
h2 ~ p Geschwister alle p nach einem h2, gleiche Ebene
li.passed zusammengesetzt li, das auch die Klasse passed hat
h1, h2 Liste h1 und h2, das Komma heißt „und“
Software- und Web-Engineering I · TH Lübeck
Live: Selektor-Spielplatz
Software- und Web-Engineering I · TH Lübeck
Kurz testen: Was trifft der Selektor?
QR-Code zu den Demos swe1.mylab.th-luebeck.de/web-03 Auf dem Handy mitmachen
2 Min
Software- und Web-Engineering I · TH Lübeck
1 Regeln und Selektoren
2 Die Kaskade
3 Boxen
4 Layout
5 Selbst gestalten & Ausblick

Wer gewinnt, wenn sich Regeln streiten?

Software- und Web-Engineering I · TH Lübeck
Die Kaskade entscheidet in Stufen
Vier Stufen: 1 Wichtigkeit, 2 Spezifität, 3 Reihenfolge, 4 Vererbung
Software- und Web-Engineering I · TH Lübeck
Spezifität: drei Zahlen
Tabelle: #senden 1,0,0; .leiste .gefahr 0,2,0; nav button 0,0,2; nav button.knopf 0,1,2
Software- und Web-Engineering I · TH Lübeck
Live: Spezifitäts-Duell
Software- und Web-Engineering I · TH Lübeck
Vererbung
body {
  font-family: system-ui, sans-serif;
  color: #222;
  border: 1px solid red;
}

Jeder Absatz hat danach diese Schrift und Farbe, aber keinen eigenen Rahmen.

  • Erben: Text-Eigenschaften wie color, font-*, line-height, text-align
  • Nicht erben: Box-Eigenschaften wie margin, padding, border, width, background
  • Erzwingen mit inherit, zurücksetzen mit initial
  • Vererbt verliert immer gegen eine Regel, die das Element direkt trifft
Software- und Web-Engineering I · TH Lübeck
Ungültiges CSS ignoriert der Browser still
Software- und Web-Engineering I · TH Lübeck
Kurz testen: Welche Regel gewinnt?
QR-Code zu den Demos swe1.mylab.th-luebeck.de/web-03 Auf dem Handy mitmachen
2 Min
Software- und Web-Engineering I · TH Lübeck
1 Regeln und Selektoren
2 Die Kaskade
3 Boxen
4 Layout
5 Selbst gestalten & Ausblick

Wie viel Platz braucht ein Element?

Software- und Web-Engineering I · TH Lübeck
Das Box-Model
Verschachtelte Rechtecke: margin außen, border, padding, content innen; width bei content-box nur der Inhalt, bei border-box bis zum Rahmen
Software- und Web-Engineering I · TH Lübeck
box-sizing: border-box
*, *::before, *::after {
  box-sizing: border-box;
}

Steht in fast jedem Stylesheet ganz oben, auch in der Projektvorlage.

width: 200px; padding: 20px; border: 5px solid

box-sizing sichtbare Breite
content-box (Standard) 250 px
border-box 200 px
  • Mit border-box ist width das, was man sieht
  • Zwei Spalten mit width: 50% passen dann nebeneinander, auch mit Padding
Software- und Web-Engineering I · TH Lübeck
Live: Box-Inspektor
Software- und Web-Engineering I · TH Lübeck
Einheiten
Einheit bedeutet nehmen Sie es für
px Pixel (CSS-Pixel, nicht Bildschirmpunkte) Rahmen, feine Details
rem Vielfaches der Grundschrift (meist 16 px) Schrift, Abstände
em Vielfaches der Schrift des Elements Abstände, die mit dem Text wachsen
% Anteil am umgebenden Element Breiten
vw, vh Prozent der Fensterbreite, -höhe bildschirmfüllende Bereiche
fr Anteil am freien Platz im Grid Grid-Spalten, kommt gleich
Software- und Web-Engineering I · TH Lübeck
Farben und Schrift
Farben
  • Gleichwertig: #e4003a, rgb(228 0 58), hsl(345 100% 45%), crimson
  • Text braucht Kontrast zum Hintergrund, mindestens 4,5 : 1
.status {
  background: url("https://http.cat/100.jpg")
              center / cover;
  width: 250px;
  height: 200px;
}
Schrift
  • font-family immer mit Ausweichschrift: "Inter", system-ui, sans-serif
  • font-size, font-weight, line-height, text-align
  • Web-Fonts selbst ausliefern (@font-face), nicht von Google laden. Lizenz prüfen
  • Am einfachsten: system-ui, die Schrift des Betriebssystems
Software- und Web-Engineering I · TH Lübeck
1 Regeln und Selektoren
2 Die Kaskade
3 Boxen
4 Layout
5 Selbst gestalten & Ausblick

Wie kommt etwas dahin, wo ich es will?

Software- und Web-Engineering I · TH Lübeck
Flexbox: eine Achse
Flex-Container mit drei Elementen: Hauptachse waagerecht mit justify-content, Querachse senkrecht mit align-items; bei column ist die Hauptachse senkrecht
  • display: flex am Container, die Kinder ordnen sich auf der Hauptachse an
  • justify-content verteilt entlang der Hauptachse, align-items quer dazu, gap setzt Abstände
Software- und Web-Engineering I · TH Lübeck
Live: Flexbox-Spielwiese
Software- und Web-Engineering I · TH Lübeck
Grid: zwei Dimensionen
Grid mit Bereichen header, nav, main, footer und nummerierten Grid-Linien, daneben der CSS-Code mit grid-template-columns und grid-template-areas
Software- und Web-Engineering I · TH Lübeck
Live: Grid-Spielwiese
Software- und Web-Engineering I · TH Lübeck
Responsiv: eine Seite für alle Breiten
.seite {
  display: grid;
  grid-template-areas:
    "header" "nav" "main" "footer";
}

@media (min-width: 48rem) {
  .seite {
    grid-template-columns: 12rem 1fr;
    grid-template-areas:
      "header header"
      "nav    main"
      "footer footer";
  }
}
  • Mobil zuerst: Die Grundregeln gelten fürs Handy, @media ergänzt für breite Fenster
  • Die viewport-Zeile aus dem Grundgerüst gehört dazu, sonst rechnet das Handy mit 980 px
  • Testen in den DevTools: Gerätesymbol, Breite ziehen
  • Mit auto-fill und ohne feste Breiten braucht man oft gar keine Media Query
Software- und Web-Engineering I · TH Lübeck
Was wir fürs Layout nicht mehr nehmen
float
  • Lässt Text um ein Bild fließen, wie in der Zeitung
  • Dafür ist es gedacht, und nur dafür
  • Spaltenlayouts mit float stammen aus der Zeit vor Flexbox
position
  • relative: verschiebt, der Platz bleibt reserviert
  • absolute: relativ zum nächsten positionierten Vorfahren, für Badges und Overlays
  • fixed hängt am Fenster, sticky klebt beim Scrollen
Software- und Web-Engineering I · TH Lübeck
1 Regeln und Selektoren
2 Die Kaskade
3 Boxen
4 Layout
5 Selbst gestalten & Ausblick

Jetzt Ihre Startseite

Software- und Web-Engineering I · TH Lübeck
Variablen: Farben an einer Stelle
:root {
  --accent: #003366;
  --border: #c8ccd2;
}
@media (prefers-color-scheme: dark) {
  :root {
    --accent: #7fb2e5;
    --border: #3a4048;
  }
}
h1 { color: var(--accent); }
  • --name deklariert eine Variable, var(--name) liest sie
  • In :root deklariert, gilt sie überall
  • Eine Farbe ändern, die ganze Seite passt sich an. Dark Mode ist dann ein Block
  • DRY im Front-End: steht so im Leitfaden für P4
Software- und Web-Engineering I · TH Lübeck
Für alle gestalten
  • Kontrast: Text mindestens 4,5 : 1 zum Hintergrund. Die DevTools zeigen es im Farbwähler
  • Fokus sichtbar lassen: nie outline: none ohne Ersatz. Gestalten mit :focus-visible
  • Nicht nur Farbe: Fehler rot und mit Text oder Symbol
  • Schrift in rem, damit die Einstellung im Browser greift
  • :hover ist kein Muss: Auf dem Handy gibt es keinen Mauszeiger
Software- und Web-Engineering I · TH Lübeck
Gestalten Sie Ihre Startseite

Ihre HTML-Seite von letzter Woche, jetzt mit CSS:

  1. Eine Farbpalette aus drei Variablen in :root
  2. Die Navigation als Flexbox-Reihe
  3. Ein Grid-Layout für header, nav, main, footer
  4. Eine Media Query: schmal einspaltig
  5. In den DevTools nachsehen, welche Regel wo gewinnt
12 Min
allein oder zu zweit
QR-Code zur CSS-Werkstatt mit einer Startseite ohne CSS swe1.mylab.th-luebeck.de/web-03 dort „CSS-Werkstatt“. Eigenes HTML hineinkopieren, „Als Datei speichern“ nicht vergessen
Software- und Web-Engineering I · TH Lübeck
Auflösung: Warum ist der Button rot?
Software- und Web-Engineering I · TH Lübeck
Ausblick: neueres CSS
Verschachteln
.karte {
  padding: 1rem;
  & h2 { margin: 0; }
}

Wie in Sass, jetzt direkt im Browser

:has()
form:has(:invalid) button {
  opacity: .5;
}

Der Eltern-Selektor, den es lange nicht gab

Container Queries
@container (min-width: 30rem) {
  .karte { display: flex; }
}

Reagiert auf den Platz der Komponente

Software- und Web-Engineering I · TH Lübeck
Was Sie heute mitnehmen
  • Eine Regel ist Selektor plus Deklarationen. Eigenschaften gehören ins CSS, Attribute ins HTML
  • Spezifität vor Reihenfolge. Klassen statt IDs, kein !important
  • box-sizing: border-box, dann ist width das, was man sieht
  • Flexbox für eine Reihe, Grid für die Fläche, @media für schmale Fenster
  • Farben und Abstände als Variablen in :root
  • Sieht etwas anders aus als gedacht: DevTools, Styles
Software- und Web-Engineering I · TH Lübeck
Bis nächste Woche
  1. P2 läuft: Anforderungen bis So 15.11., Leitfaden Phase 2 lesen
  2. Ihre Startseite mit CSS fertig machen und aufheben, nächste Woche kommt JavaScript dazu
  3. Zum Üben: CSS Escape Room und Selektor-Spielplatz unter swe1.mylab.th-luebeck.de/web-03
Di 20.10. bei Leif
  • Projekt und Anforderungen, Teil 1
Mi 21.10.
  • JavaScript, Teil 1
Software- und Web-Engineering I · TH Lübeck

Herkunft: Reihenfolge und einzelne Beispiele (Klausurergebnisse, Pseudoklassen, Variablen in :root, http.cat-Hintergrund, Escape Room) stammen aus Soeren Godes V2 (WiSe 25/26). Im Oktober 2026 umgebaut: fachliche Fehler korrigiert (Eigenschaft statt Attribut, Einheiten, inline-Boxen, position), Float und absolute Positionierung auf je eine Erwaehnung gekuerzt; Kaskade und Spezifitaet, Einheiten, box-sizing, Grid, Media Queries, Variablen mit Dark Mode, Zugaenglichkeit, Live-Demos, Quiz und Aktivphase neu. Vorbereitung und Entscheidungen: WiSe2627/vorbereitung/2026-10-14_vorlesung-css.md Demos: Repo swe1-demos, live unter https://swe1.mylab.th-luebeck.de/web-03/, lokal ueber marp/demos (Symlink). Praesentieren: slides/serve.sh, dann http://localhost:8000/slides/dist/web-03-css.html

- Gestern bei Leif: Versionskontrolle. Diese Woche startet P2 - Letzte Woche haben Sie die Startseite Ihrer Idee als reines HTML gebaut. Heute bekommt sie Stil - Nicht auf dem Titel verweilen, direkt mit der Frage einsteigen

- 3 Minuten, Zurufe. Drei Regeln wollen denselben Button faerben: rot, blau, gruen. Er ist rot. Warum? - Die rote Regel steht zuerst, die gruene zuletzt. Wer "die letzte Regel gewinnt" sagt, tippt auf gruen - Zurufe sammeln, an die Tafel. Nicht aufloesen - Wir kommen am Ende darauf zurueck, dann mit dem Werkzeug, mit dem Sie das selbst herausfinden

- Fuenf Stationen: erst wie eine Regel aussieht und wen sie trifft (1), dann wer gewinnt, wenn sich Regeln streiten (2). Dann wie viel Platz ein Element braucht (3) und wie man Elemente anordnet (4). Am Ende gestalten Sie Ihre eigene Startseite (5) - Station 1: rund 20 Minuten

- Erst ohne CSS: So sah Ihre Startseite letzte Woche aus. Der Browser hat nur seine Standardregeln - Clicker: dieselbe Seite mit CSS. Am HTML hat sich kein Zeichen geaendert - Das ist die Idee von CSS: HTML beschreibt, was etwas ist, CSS, wie es aussieht. Separation of Concerns, steht so auch im Leitfaden fuer P4 - Bekanntes Beispiel: CSS Zen Garden, ein HTML-Dokument mit hunderten Designs

- Sprechweise festlegen: In CSS heissen sie Eigenschaften (properties), in HTML Attribute. Wer das vermischt, sucht spaeter an der falschen Stelle - Ein Block darf beliebig viele Deklarationen haben. Das letzte Semikolon ist optional, setzen Sie es trotzdem, sonst geht die naechste Zeile kaputt, die jemand anhaengt - Kommentare: /* so */. Kein // wie in Java

- Die link-Zeile kennen Sie aus web-02: Grundgeruest, eigener Request im Network-Tab - In der Projektvorlage liegt schon eine style.css unter static/. Dort weiterarbeiten, keine zweite anlegen - Inline-Styles sind im Projekt tabu, ausser JavaScript setzt sie (kommt in JS Teil 2). Grund kommt in Station 2: Sie gewinnen fast immer, und dann wundert man sich - Zum Zeigen: css-werkstatt.html?preset=einbinden hat alle drei Varianten nebeneinander

- Tabelle als Nachschlagewerk, nicht jede Zeile vorlesen. Gleich im Spielplatz ausprobieren - Pseudoklassen: Zustand (hover, focus, checked, visited) oder Position im Baum (first-child, nth-child) - :root ist eine Pseudoklasse fuer das html-Element. Dort stehen spaeter die Variablen

- Beispiel aus der Klausurauswertung, Matrikelnummern erfunden - Warum fuer Stil lieber Klassen: wiederverwendbar, und eine ID gewinnt in Station 2 so hoch, dass man sie spaeter kaum ueberschreiben kann - Klassennamen nach Bedeutung, nicht nach Aussehen: .not-passed statt .rot. Sonst heisst die Klasse rot und die Farbe ist laengst orange

- Das Leerzeichen ist ein Operator. li.passed (ein Element) ist etwas anderes als li .passed (ein .passed irgendwo in einem li). Haeufigster Tippfehler bei Selektoren - Komma: zwei Selektoren, ein Block. Spart Wiederholung - Gelesen wird von rechts nach links: nav a heisst "alle a, die in einem nav stecken"

- Clicker geht neun Selektoren durch, Treffer leuchten im Quelltext und in der Vorschau - Bei jedem Schritt erst fragen: "Was wird gleich leuchten?", dann klicken - Spannend: li:not(.passed) und h1, h2 als Liste - Danach eigene Vorschlaege aus dem Raum eintippen (ins Feld klicken, tippen)

- Frage vorlesen, Finger hoch: 0, 1, 2 oder 3. Clicker: erster Klick loest auf, zweiter holt die naechste - Die Falle ist #aktiv: Raute heisst id, im HTML ist aktiv aber eine Klasse - Vier Fragen reichen, wenn die Zeit knapp ist

- Das C in CSS: Cascading. Mehrere Regeln treffen dasselbe Element, eine setzt sich durch - Station 2: rund 15 Minuten

- Der Browser geht die Stufen von oben nach unten durch und hoert auf, sobald sich die Regeln unterscheiden - Stufe 1 ganz grob: Ihre Regeln schlagen die Standardregeln des Browsers. !important und Inline-Style springen nach vorne. Beides vermeiden - Stufe 2 ist die, die Sie taeglich brauchen. Naechste Folie - Stufe 4 ist eigentlich keine Konkurrenz: Vererbung zieht nur, wenn gar keine Regel das Element trifft

- Zaehlen: IDs, dann Klassen samt Attributen und Pseudoklassen, dann Typen - Verglichen wird von links: eine einzige ID schlaegt jede Menge Klassen. Kein Uebertrag wie beim Rechnen - Das Universal-Zeichen * und Kombinatoren zaehlen nichts. :not() und :is() zaehlen ihr Argument, :where() zaehlt null - Faustregel fuers Projekt: mit Klassen arbeiten, flach bleiben, keine IDs fuer Stil. Dann muss man selten rechnen

- Pro Duell zwei Klicks: erst die Regeln zeigen und tippen lassen, dann den Gewinner aufdecken - Die Farbe im Element ist echt gerendert, nicht behauptet - Acht Duelle: Klasse gegen Typ, Gleichstand (die spaetere gewinnt), ID gegen drei Klassen, Klasse gegen vier Typen, :where() zaehlt null, !important, Inline-Style, Vererbung gegen direkte Regel - Wenn die Zeit knapp ist: nach Duell 4 weiterklicken bis zur naechsten Folie

- Deshalb setzt man Schrift und Textfarbe einmal auf body, nicht auf jeden Absatz - Waere border vererbbar, haette jedes Kind einen eigenen Rahmen. Darum erben Boxen nicht - Formularelemente erben die Schrift nicht von selbst. Darum steht in vielen Stylesheets button, input { font: inherit; }

- height: 200 ohne Einheit: kein Fehler, keine Meldung, die Zeile wird einfach verworfen. Ausser bei 0 braucht jede Laenge eine Einheit. Dazu ein Tippfehler im Eigenschaftsnamen (colour) - Clicker: ein Schritt, zeigt das Pruefergebnis mit drei Problemen - Das Hintergrundbild kommt von http.cat, braucht WLAN - Live in den DevTools zeigen (eigener Browser, z. B. auf der Gaestebuch-Demo): Elements, rechts Styles. Durchgestrichen = verloren gegen eine andere Regel, gelbes Warndreieck = ungueltig. Unter Computed steht der Wert, der am Ende gilt, mit Pfeil zur gewinnenden Regel - Mit Haken im Styles-Panel Regeln an- und ausschalten, Werte live aendern. So probieren Profis

- Handzeichen A oder B, dann aufloesen. Sechs Fragen, vier reichen - Bei der !important-Frage kurz warnen: Wer einmal !important setzt, braucht danach immer mehr davon

- Jedes Element ist ein Rechteck. Wer das verinnerlicht, versteht die meisten Layout-Probleme - Station 3: rund 12 Minuten

- Von innen nach aussen: Inhalt, Innenabstand, Rahmen, Aussenabstand. Genau diese Farben zeigen die DevTools, wenn man ueber ein Element faehrt - Hintergrundfarbe reicht bis zum Rahmen, margin ist immer durchsichtig - Die Stolperfalle: Standardmaessig meint width nur den Inhalt. padding und border kommen obendrauf

- content-box ist ein historischer Standard, border-box rechnet so, wie Menschen denken - 200 + 2 mal 20 + 2 mal 5 = 250. Gleich im Box-Inspektor nachrechnen

- Clicker: width 200, dann padding dazu (die Box waechst), border, margin (Platz aussen), dann border-box (zurueck auf 200), zum Schluss display: inline - Bei inline: width wird ignoriert, vertikaler margin auch. Horizontal schieben padding, border und margin die Nachbarn sehr wohl weg, vertikal ueberlappen sie nur - Typische Elemente: block sind div, p, h1 bis h6, section, ul. Inline sind a, span, strong, em, img

- rem als Standard: Stellt jemand im Browser groessere Schrift ein, waechst die ganze Seite mit. Mit px fuer Schriften geht das kaputt. Das ist eine Frage der Barrierefreiheit - 0 darf ohne Einheit stehen, jede andere Laenge nicht (siehe height: 200 vorhin)

- Keine Farbschreibweise ist "Standard". Hex ist verbreitet, hsl und oklch sind leichter zu variieren - Kontrast pruefen: DevTools zeigen ihn im Farbwaehler an - http.cat liefert zu jedem Statuscode ein Katzenbild, hier 100 Continue. Diesmal mit Einheiten - Google Fonts direkt einbinden schickt die IP-Adresse jedes Besuchers an Google. Das LG Muenchen hat das 2022 als DSGVO-Verstoss gewertet. Datei herunterladen und mit ausliefern

- Zwei Werkzeuge reichen fuer fast alles: Flexbox fuer eine Reihe, Grid fuer Flaechen - Station 4: rund 18 Minuten

- Flex ist eindimensional: eine Reihe oder eine Spalte. Typisch: Navigation, Toolbar, Karte mit Bild und Text, etwas zentrieren - Zentrieren war frueher ein Witz. Heute: display: flex; justify-content: center; align-items: center - flex-direction: column dreht die Achsen. justify-content wirkt dann senkrecht

- Clicker: row, dann justify-content: space-between (Navigation mit Logo links, Links rechts), align-items: center, column, zum Schluss flex-wrap bei schmalem Container - Vor jedem Klick tippen lassen, was passiert - Zum Ueben zuhause: Flexbox Froggy (flexboxfroggy.com)

- Grid legt Zeilen und Spalten zugleich fest. Typisch: Seitenaufbau, Kartenraster, Formulare mit Beschriftung links - fr heisst Anteil am freien Platz: 190px 1fr = feste Seitenleiste, Rest fuer main - grid-template-areas malt das Layout als Text. Die Kinder bekommen grid-area: header usw. - Faustregel: Grid fuer die Seite, Flexbox fuer Dinge in einer Reihe darin

- Clicker: drei gleiche Spalten, 200px 1fr, repeat(auto-fill, minmax(150px, 1fr)), dieselbe Regel bei 420 px (Karten brechen von selbst um, ganz ohne Media Query), dann die Bereiche, dann bei 540 px mit aktiver Media Query. Die Breite laesst sich auch von Hand ziehen - Den letzten Schritt als Ueberleitung nutzen: schmal wird es einspaltig. Das ist responsives Design

- Letzte Woche hiess es bei der viewport-Zeile "Handy: sonst winzig". Hier ist der Grund: Ohne sie tut das Handy so, als waere es ein Desktop, und Media Queries greifen nie - Mobil zuerst, weil die einspaltige Version die einfachere ist. Man fuegt hinzu statt zu entfernen - Live: Gaestebuch-Demo in den DevTools mit Geraete-Modus auf 375 px ziehen

- Wer in alten Tutorials float-Layouts findet: weiterblaettern - absolute: Das Element verlaesst den Fluss, die anderen tun so, als waere es nicht da. Bezugspunkt ist der naechste Vorfahre mit position ungleich static, nicht einfach das Elternelement. Darum setzt man am Eltern-Element oft position: relative - sticky ist das, was Kopfzeilen beim Scrollen oben haelt

- Rund 20 Minuten: Variablen, Zugaenglichkeit, Aktivphase, Aufloesung, Ausblick

- Das ist ein Ausschnitt aus der style.css der Projektvorlage. Sie haben das also schon im Repo - Variablen heissen offiziell Custom Properties. Sie folgen der Kaskade, man kann sie also in einem Bereich ueberschreiben: .warnung { --accent: red; } - Live: System auf Dark Mode umstellen, die Gaestebuch-Demo wechselt mit - Absprache im Team: Palette und Abstaende einmal festlegen, bevor alle losstylen. Spart in P4 Aerger

- Kurz halten, aber einmal gesagt haben. Mit Tab durch die Gaestebuch-Demo gehen: Man sieht immer, wo man ist. Das ist die Fokus-Markierung, die viele wegstylen - Rund acht Prozent der Maenner haben eine Rot-Gruen-Schwaeche - Mehr dazu bei Leif in Benutzerschnittstellen (Di 03.11.)

- Wer die Seite von letzter Woche nicht mehr hat: Die Werkstatt startet mit einer Startseite ohne CSS - Lokal geht genauso: style.css neben die HTML-Datei, link im head - Rumgehen. Typische Fehler: Einheit vergessen, display: flex am Kind statt am Container, Klasse im HTML anders geschrieben als im CSS - Nach 12 Minuten zwei Ergebnisse am Beamer, gern eins in den DevTools aufmachen - Wenn die Zeit knapp ist: 8 Minuten, Punkt 4 streichen

- Mit den Zurufen vom Anfang vergleichen - Jetzt koennen Sie es begruenden: Alle drei Regeln treffen den Button. Die Reihenfolge entscheidet nicht, weil schon die Spezifitaet unterscheidet: 0,2,0 schlaegt 0,1,0 und 0,0,1 - Herausfinden ohne Rechnen: Rechtsklick, Untersuchen, Styles. Oben steht die Gewinnerin, darunter die durchgestrichenen Verliererinnen

- Alles drei laeuft in allen aktuellen Browsern. Erlaubt im Projekt, kein Framework noetig - Nicht Pruefungsstoff, nur damit Sie es erkennen, wenn Sie es sehen - Container Queries passen gut zu Web Components (Mi 04.11.). Sie brauchen ein Eltern-Element mit container-type: inline-size

- Kurz zusammenfassen, nicht nochmal erklaeren - Die eine Sache: Styles-Panel oeffnen, bevor Sie raten

- P2 ist die erste bewertete Abgabe, 100 Punkte. Leifs Termin am Dienstag ist der fachliche Start dazu - Folien und Demos: Lernraum unter Vorlesung Web-Engineering, alle Folien auch unter swe1.mylab.th-luebeck.de/folien - Gleich im Anschluss: Praktikum