Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m291:learningunits:lu01:aufgaben:a_landingpage [2026/01/24 16:14] – gkoch | de:modul:m291:learningunits:lu01:aufgaben:a_landingpage [2026/01/26 00:06] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Projekt 1: Landingpage Hero Section (Light/Dark Mode) ====== | + | ====== Projekt 1: Landingpage Hero Section |
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| {{ : | {{ : | ||
| \\ | \\ | ||
| - | **Projektziel: | + | **Projektziel |
| + | \\ | ||
| + | **Fokus LU01:** __Zuerst HTML-Struktur__, | ||
| </ | </ | ||
| - | + | ==== Lernziele | |
| - | [[m291: | + | * Sie bauen eine saubere |
| - | + | * Sie gruppieren UI-Teile in sinnvolle Wrapper (z.B. '' | |
| - | ==== Lernziele ==== | + | * Sie setzen ein Grundlayout mit Flexbox |
| - | * HTML-Struktur mit '' | + | * Sie nutzen relative Einheiten sinnvoll (%, vh, rem) und zentrieren einen Container mit '' |
| - | * CSS: Variablen, Typografie, Flexbox, Responsive | + | |
| - | * JS: DOM-Elemente abfragen, EventListener, Klassen toggeln | + | |
| ==== Material ==== | ==== Material ==== | ||
| * Figma-Design + Assets (SVG/PNG) | * Figma-Design + Assets (SVG/PNG) | ||
| - | * Starter-Ordner ('' | + | * Starter-Template |
| - | * Live Server | + | * Browser + DevTools + Live Server |
| + | <WRAP center round download 60%> | ||
| + | Laden Sie hier das Material herunter: | ||
| + | {{ : | ||
| + | </ | ||
| + | |||
| + | |||
| + | <WRAP center round important 80%> | ||
| + | **Wichtig: | ||
| + | \\ | ||
| + | In LU01 machen Sie nur, was mit **TODO in LU01** beschriftet ist. (Google Font, Favicon, Farben/ | ||
| + | </ | ||
| + | |||
| + | ==== Schrittweiser Aufbau (LU01) ==== | ||
| + | |||
| + | ===== 1) HTML zuerst: Struktur & Gruppen von Elementen ===== | ||
| + | |||
| + | === 1.1 Header: Logo + Navigation + Switch-Platzhalter === | ||
| + | <WRAP center round box 80%> | ||
| + | {{ : | ||
| + | \\ | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | **Aufgabe: | ||
| + | * Logo als '' | ||
| + | * Navigation als '' | ||
| + | * Switch als Platzhalter einfügen (nur '' | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Repetition: | ||
| + | \\ | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | </WRAP> | ||
| + | |||
| + | <WRAP center round tip 60%> | ||
| + | Mehr Infos zum ''< | ||
| + | </ | ||
| + | |||
| + | |||
| + | {{: | ||
| + | \\ | ||
| + | //Beispiel einer Navigation mit ''< | ||
| + | |||
| + | **Checkliste** | ||
| + | * Ist die Navigation eine Liste ('' | ||
| + | * Gibt es pro Link ein '' | ||
| + | * Hat das Logo einen passenden '' | ||
| + | |||
| + | === 1.2 Hero Section: Inhalt links, Bild rechts === | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | {{ : | ||
| + | \\ | ||
| + | // | ||
| + | </ | ||
| + | **Aufgabe: | ||
| + | * Textblock: '' | ||
| + | * Buttons in '' | ||
| + | * Features/ | ||
| + | |||
| + | |||
| + | **Checkliste** | ||
| + | * Sind Buttons in einem Wrapper gruppiert? | ||
| + | * Sind “Features” in einem Wrapper gruppiert? | ||
| + | * Ist die Struktur logisch lesbar, auch ohne CSS? | ||
| + | |||
| + | |||
| + | === 1.3 Hero-Bild === | ||
| + | **Aufgabe: | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Repetition: | ||
| + | \\ | ||
| + | Mit '' | ||
| + | \\ | ||
| + | Sie liefern mehrere Varianten – der Browser entscheidet. | ||
| + | </ | ||
| + | |||
| + | **Beispiel: Bild mit '' | ||
| + | <code html> | ||
| + | <img | ||
| + | class=" | ||
| + | src=" | ||
| + | srcset=" | ||
| + | ./ | ||
| + | alt=" | ||
| + | /> | ||
| + | </ | ||
| + | |||
| + | **Checkliste** | ||
| + | * Stimmt der Pfad ('' | ||
| + | * Haben Sie einen sinnvollen '' | ||
| + | |||
| + | ===== 2) CSS: Grundlayout ===== | ||
| + | |||
| + | === 2.1 Container zentrieren: '' | ||
| + | **Aufgabe: | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Repetition: | ||
| + | \\ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| + | |||
| + | **Beispiel: | ||
| + | <code css> | ||
| + | .main-wrapper { | ||
| + | max-width: 1100px; | ||
| + | margin: 0 auto; | ||
| + | padding: 24px; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === 2.2 Header mit Flexbox === | ||
| + | <WRAP center round box 80%> | ||
| + | {{ : | ||
| + | \\ | ||
| + | // | ||
| + | |||
| + | </ | ||
| + | <WRAP center round tip 60%> | ||
| + | Eine gute Übersicht zur Flexbox gibt es hier: [[https:// | ||
| + | </ | ||
| + | |||
| + | |||
| + | **Aufgabe: | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Repetition: | ||
| + | \\ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | === 2.3 Navigation: Menu-Items als Flex-Reihe === | ||
| + | **Aufgabe: | ||
| + | |||
| + | |||
| + | === 2.4 Hero Section: 2-Spalten Flexbox === | ||
| + | **Aufgabe: | ||
| + | |||
| + | |||
| + | === 2.5 Bild soll responsiv schrumpfen === | ||
| + | **Aufgabe: | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | {{ : | ||
| + | \\ | ||
| + | **Hinweis: | ||
| + | </ | ||
| + | |||
| + | <WRAP center round box 80%> | ||
| + | **Repetition: | ||
| + | \\ | ||
| + | * '' | ||
| + | * '' | ||
| + | </ | ||
| - | ==== Ablauf in Etappen ==== | + | === 2.6 Buttons: als Gruppe mit Flexbox |
| + | **Aufgabe: | ||
| - | === Etappe A: Design analysieren (15 Min.) === | + | {{:de:modul: |
| - | - Identifizieren Sie: **Header**, **Navigation**, | + | |
| - | - Messen Sie Abstände und Font-Sizes genau (nicht raten). | + | |
| - | - Legen Sie eine Farbpalette fest → als CSS-Variablen. | + | |
| - | === Etappe B: HTML-Struktur (30–40 Min.) === | ||
| - | - ''< | ||
| - | - ''< | ||
| - | - Textblock ('' | ||
| - | - Hero-Bild mit '' | ||
| - | **Check:** Wenn CSS/JS aus ist, ist die Seite trotzdem logisch lesbar. | + | === 2.7 Hamburger-Buttons (für LU01: ausblenden) === |
| + | **Aufgabe:** Im Desktop sollen Hamburger-Buttons unsichtbar sein (damit nichts “stört”). | ||
| - | === Etappe C: CSS-Basics (30–45 Min.) === | + | <code css> |
| - | | + | .hamburger-button, |
| - | | + | .hamburger-button-close { |
| - | - Typografie: font-family, | + | |
| - | - Max-Width + Padding in '' | + | } |
| + | </ | ||
| - | === Etappe D: Layout mit Flexbox (45 Min.) === | ||
| - | - Header: Logo links, Navigation mittig, Switch rechts | ||
| - | - Hero: 2 Spalten (Text links, Bild rechts) | ||
| - | - Buttons als Gruppe ('' | ||
| - | === Etappe E: Responsive (30–45 Min.) === | ||
| - | - Ab einer Breite (z.B. < 1024px): | ||
| - | - Hero wird '' | ||
| - | - Abstände/ | ||
| - | === Etappe F: JS Interaktivität (30–45 Min.) === | ||
| - | 1. Elemente holen: | ||
| - | - '' | ||
| - | - '' | ||
| - | 2. Funktion '' | ||
| - | - Klasse '' | ||
| - | - Logo-Datei wechseln | ||
| - | 3. EventListener: | ||
| - | - '' | ||
| + | ==== Checkliste “LU01 fertig” ==== | ||
| + | * HTML: Logo + Nav-Liste + Switch-Platzhalter sind vorhanden | ||
| + | * HTML: Hero-Text, Button-Gruppe, | ||
| + | * HTML: Bild mit '' | ||
| + | * CSS: '' | ||
| + | * CSS: Header als Flexbox (3 Bereiche verteilt) | ||
| + | * CSS: Hero als Flexbox (2 Spalten) | ||
| + | * CSS: Bild schrumpft responsiv ('' | ||
| ==== Debugging-Checkliste ==== | ==== Debugging-Checkliste ==== | ||
| - | * Öffnen Sie DevTools → Console | + | * Öffnen Sie DevTools → Console (gibt es rote Fehlermeldungen? |
| - | * Prüfen Sie, ob Selektoren etwas finden | + | * Prüfen Sie Pfade zu '' |
| - | * Prüfen Sie Pfade zu '' | + | * Prüfen Sie im Elements-Tab: |
| + | * Test: Browserfenster kleiner ziehen → Bild bleibt proportional | ||
| - | ==== Abgabe-Kriterien ==== | ||
| - | - Struktur semantisch (nav als Liste) | ||
| - | - Layout desktop + mobile korrekt | ||
| - | - Switch funktioniert und wechselt Farben + Logo | ||
| - | - Code lesbar: sprechende Namen, wenig “magische” Selektoren | ||
| - | ==== Stretch Goals ==== | + | ==== Ausblick (LU02 / LU03) ==== |
| - | | + | |
| - | - “prefers-color-scheme” als Default berücksichtigen | + | |
| - | | + | |