{ "$schema": "../../schemas/code-crispies-module-schema.json", "id": "responsive-design", "title": "Responsive Design & Media Queries", "description": "Passe deine Layouts an verschiedene Bildschirmgrößen an mit Media Queries und flüssigen Design-Techniken.", "difficulty": "intermediate", "lessons": [ { "id": "responsive-1", "title": "Einführung in Media Queries", "description": "Verstehe die Syntax und Anwendungsfälle für CSS Media Queries, um Stile bedingt basierend auf Viewport-Eigenschaften anzuwenden.", "task": "Schreibe eine Media Query, die gilt, wenn der Viewport maximal 600px breit ist, und ändere den Hintergrund von .responsive-box auf lightcoral.", "previewHTML": "
Flüssige Typografie
", "previewBaseCSS": "body { font-family: sans-serif; padding: 1rem; }", "sandboxCSS": "", "codePrefix": "/* Wende flüssige Schriftgröße an */\n.fluid-text {", "initialCode": "", "codeSuffix": "}", "previewContainer": "preview-area", "validations": [ { "type": "contains", "value": "font-size", "message": "Verwende die font-size Eigenschaft", "options": { "caseSensitive": false } }, { "type": "contains", "value": "vw", "message": "Verwende vw Einheit für flüssige Größe", "options": { "caseSensitive": false } }, { "type": "property_value", "value": { "property": "font-size", "expected": "5vw" }, "message": "Setze font-size auf 5vw" } ] }, { "id": "responsive-3", "title": "Flexible Raster", "description": "Kombiniere CSS Grid mit auto-fit oder auto-fill für responsive Spaltenlayouts.", "task": "Definiere .grid-responsive mit grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) und einem gap von 1rem.", "previewHTML": "