{ "$schema": "../schemas/code-crispies-module-schema.json", "id": "css-filters", "title": "CSS Filters", "description": "Apply visual effects like blur, brightness, and shadows with CSS filters.", "difficulty": "intermediate", "lessons": [ { "id": "filters-1", "title": "Blur Filter", "description": "The filter property applies visual effects to elements. The blur() function creates a Gaussian blur effect.

filter: blur(4px);

Higher values create more blur. This is great for backgrounds or creating depth.", "task": "Blur the background image using filter: blur(4px).", "previewHTML": "

Welcome

", "previewBaseCSS": "body { font-family: system-ui, sans-serif; margin: 0; height: 200px; position: relative; overflow: hidden; } .bg { position: absolute; inset: 0; background: linear-gradient(45deg, coral, gold, steelblue); } .content { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; height: 100%; } .content h2 { color: white; text-shadow: 0 2px 8px rgba(0,0,0,0.3); margin: 0; }", "sandboxCSS": "", "codePrefix": ".bg {\n ", "initialCode": "", "codeSuffix": "\n}", "solution": "filter: blur(4px);", "previewContainer": "preview-area", "validations": [ { "type": "property_value", "value": { "property": "filter", "expected": "blur(4px)" }, "message": "Set filter: blur(4px)" } ] }, { "id": "filters-2", "title": "Grayscale Filter", "description": "The grayscale() function removes color from an element. Use values from 0% (full color) to 100% (fully grayscale).

filter: grayscale(100%);

Great for hover effects or disabled states.", "task": "Make the image grayscale with filter: grayscale(100%).", "previewHTML": "
", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 1rem; } .photo { width: 200px; height: 150px; background: linear-gradient(135deg, coral 0%, gold 50%, steelblue 100%); border-radius: 8px; }", "sandboxCSS": "", "codePrefix": ".photo {\n ", "initialCode": "", "codeSuffix": "\n}", "solution": "filter: grayscale(100%);", "previewContainer": "preview-area", "validations": [ { "type": "contains", "value": "grayscale", "message": "Use grayscale() filter" }, { "type": "contains", "value": "100%", "message": "Set to 100% for full grayscale" } ] }, { "id": "filters-3", "title": "Brightness Filter", "description": "The brightness() function adjusts how bright an element appears. Values below 100% darken, above 100% brighten.

filter: brightness(150%);
", "task": "Brighten the card with filter: brightness(120%).", "previewHTML": "
Featured
", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 1rem; background: #1a1a2e; } .card { padding: 2rem; background: linear-gradient(135deg, #4a4a6a, #2a2a4a); border-radius: 12px; text-align: center; } .card span { color: gold; font-weight: 600; text-transform: uppercase; letter-spacing: 2px; }", "sandboxCSS": "", "codePrefix": ".card {\n ", "initialCode": "", "codeSuffix": "\n}", "solution": "filter: brightness(120%);", "previewContainer": "preview-area", "validations": [ { "type": "contains", "value": "brightness", "message": "Use brightness() filter" }, { "type": "contains", "value": "120%", "message": "Set to 120%" } ] }, { "id": "filters-4", "title": "Drop Shadow", "description": "The drop-shadow() filter creates a shadow that follows the shape of the element, including transparency. Unlike box-shadow, it works on images with transparent backgrounds.

filter: drop-shadow(2px 4px 6px black);
", "task": "Add a drop shadow with filter: drop-shadow(4px 4px 8px gray).", "previewHTML": "
", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 2rem; display: flex; justify-content: center; } .icon { font-size: 4rem; color: gold; }", "sandboxCSS": "", "codePrefix": ".icon {\n ", "initialCode": "", "codeSuffix": "\n}", "solution": "filter: drop-shadow(4px 4px 8px gray);", "previewContainer": "preview-area", "validations": [ { "type": "contains", "value": "drop-shadow", "message": "Use drop-shadow() filter" }, { "type": "contains", "value": "4px 4px 8px", "message": "Set shadow offset and blur" } ] } ] }