--- marp: true theme: gaia paginate: true backgroundColor: #fff header: "Web Engineering – DHBW Stuttgart" footer: "Michael Czechowski – SoSe 2026" --- # Web Engineering **DHBW Stuttgart** · Informatik / Wirtschaftsinformatik **Sommersemester 2026** · Sitzung 2 — HTML & CSS (Frameworks) --- # Inhalt Aufbauend auf den Grundlagen aus Sitzung 1. 1. Attribut-Selektoren 2. Combinators (vertieft) 3. Pseudo-Klassen — erweitert 4. Shorthand Properties 5. Flexbox-Shorthands 6. Custom Properties (Variables) 7. CSS Functions (`calc`, `clamp`, ...) 8. Transition & Animation 9. CSS Frameworks (Tailwind & Co.) --- # CSS: Extended --- # CSS Selectors – Attribut-Selektoren ```css /* presence */ [disabled] { opacity: 0.5; } /* exact value */ [type="email"] { border-color: blue; } /* contains word */ [class~="btn"] { cursor: pointer; } /* starts with */ [href^="https"] { color: green; } /* ends with */ [src$=".png"] { border: 1px solid #ccc; } /* contains substring */ [class*="icon"] { padding-left: 20px; } ``` --- # CSS Combinators ```css /* Child (direkt) */ div > p { margin: 0; } /* Descendant (Nachkomme) */ div p { margin: 0; } /* Next Sibling */ h1 + p { font-size: 1.2em; } /* Subsequent Sibling */ h1 ~ p { color: #666; } /* Selector List */ h1, h2, h3 { font-weight: bold; } ``` --- # Pseudo Classes – Erweitert ```css /* Form States */ :valid { border-color: green; } :invalid { border-color: red; } :placeholder-shown { color: #999; } /* Content */ :before { content: "→ "; } :after { content: " [Wichtig]"; } :first-letter { font-size: 2em; } :first-line { font-weight: bold; } /* NOT */ :not(.disabled) { pointer-events: auto; } :not(:last-child) { border-bottom: 1px solid #ccc; } ``` --- # Shorthand Properties ```css /* margin: top right bottom left */ margin: 10px 20px 10px 20px; /* centering */ margin: 0 auto; /* padding same */ padding: 20px; /* border: width style color */ border: 1px solid #333; /* background: color image position/size repeat */ background: #fff url(logo.png) 0 0 no-repeat; /* font: style variant weight size/line-height family */ font: italic normal bold 16px/1.5 Arial, sans-serif; ``` --- # Flexbox Shorthands ```css /* flex: grow shrink basis */ flex: 1 0 auto; /* place-items: align-items justify-items */ place-items: center stretch; /* place-content: align-content justify-content */ place-content: space-between center; /* gap: row-gap column-gap */ gap: 20px 40px; ``` --- # CSS Custom Properties (Variables) ```css :root { --primary-color: #d63384; --spacing: 20px; --radius: 8px; } .button { background: var(--primary-color); padding: var(--spacing); border-radius: var(--radius); } ``` --- # CSS Functions ```css /* calc */ width: calc(100% - 40px); /* min/max/clamp */ width: min(100%, 600px); font-size: clamp(14px, 2vw, 20px); /* var with fallback */ color: var(--text-color, #333); /* rgb/rgba/hsl/hsla */ color: hsl(200, 100%, 50%); background: rgba(0, 0, 0, 0.5); ``` --- # Transition & Animation ```css /* transition: property duration timing-function */ transition: all 0.3s ease-in-out; transition: background 0.2s, transform 0.1s; /* animation */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .fade-in { animation: fadeIn 0.5s ease-out; } ``` --- # CSS Frameworks | Framework | Stil | |-----------|------| | **Bootstrap** | Komponenten + Grid, opinionated | | **Tailwind CSS** | Utility-First, atomar | | **Bulma** | klassisch, ohne JS | | **shadcn/ui** | kopierbare Komponenten (Tailwind-basiert) | | **Flowbite** | Tailwind-Komponentenbib. | --- # Tailwind CSS – Beispiel ```html ``` - Keine eigenen CSS-Klassen mehr - JIT-Compiler erzeugt nur genutzte Klassen - Design-System via `tailwind.config.js`