Code, Preview, Block-Pattern.
Jede Component ist hier dokumentiert mit live Preview, kopierbarem HTML, dem zugeordneten Gutenberg-Block-Pattern-Slug und einem Verwendungs-Hinweis. Werte stammen aus tokens.css — nichts hart kodiert.
Buttons
Alle Buttons sind pill-shaped (border-radius 50px), UPPERCASE, weight 700, letter-spacing 0.05em. Hover-Animation: leichtes Translate-Y und Schatten. Default ist btn-primary für die Hauptaktion einer Section.
<a class="btn btn-primary">Jetzt spenden</a>
<a class="btn btn-outline-dark">Mehr erfahren</a>
<a class="btn btn-ghost">Abbrechen</a>
<a class="btn btn-sm btn-primary">Newsletter</a>
<!-- Auf dunkler Section -->
<a class="btn btn-outline">Mehr erfahren</a>
btn-primary pro Section. Sekundäre CTAs als btn-outline-dark. Ghost nur für „Abbrechen"/„Schließen".Section-Label (Eyebrow)
Markenstil-Eyebrow mit Doppelstrich-Präfix (||). Steht oberhalb jeder H2. Magenta auf hell, weiß auf dunkel. Hilft Personas, schnell Sektionen zu scannen.
<div class="section-label">Vorsorge</div>
<div class="section-label sl-white">Spenden</div> <!-- auf dunkel -->
Karten
Drei Varianten: Standard-Card, Card mit Bild, Card mit Icon-Box. Alle weiß, Schatten --shadow-sm, Border-Radius --radius-md (14px). Auf Hover: Translate-Y -3 + Border-Color Magenta-Light.
Behindertentestament
Wie Sie Ihr Vermögen so vererben, dass es Ihrem Kind direkt zugutekommt.
<div class="card">
<h3>Behindertentestament</h3>
<p>Wie Sie Ihr Vermögen so vererben, dass es Ihrem Kind direkt zugutekommt.</p>
</div>
Hero-Patterns (4 Varianten)
Hero ist ACF-gesteuert (Snippet 64 — Hero-Config per ACF Page Meta). Acht Felder: Eyebrow, H1, H1-Highlight (pink), Lead, Primary-CTA-Text, Primary-CTA-Link, Secondary-CTA-Text, Secondary-CTA-Link.
schützt morgen Ihr Kind.
Ein klar geregeltes Behindertentestament ist mehr als ein Dokument. Es ist die Sicherheit, dass Ihr Kind auch dann gut versorgt ist, wenn Sie nicht mehr da sind.
Beratung anfragen Mehr erfahren<section class="hero hero-standard">
<div class="container">
<div class="section-label">Vorsorge</div>
<h1>Was Sie heute regeln,<br>schützt morgen <span class="pink">Ihr Kind.</span></h1>
<p class="lead">Ein klar geregeltes Behindertentestament ist mehr als ein Dokument...</p>
<a class="btn btn-primary">Beratung anfragen</a>
<a class="btn btn-outline-dark">Mehr erfahren</a>
</div>
</section>
hero_eyebrow (Text) "Vorsorge"
hero_h1 (Text) "Was Sie heute regeln,"
hero_h1_highlight (Text) "Ihr Kind."
hero_lead (Textarea) "Ein klar geregeltes Behindertentestament..."
hero_cta_primary (Group) text + link
hero_cta_secondary (Group) text + link
hero_variant (Select) standard | dark | split | blob
hero_image (Image) nur für split + blob
blob nur mit hochwertigem Foto (nie Stockfotos).FAQ-Akkordeon
Native HTML <details>/<summary> — kein JavaScript. FAQ-Schema-JSON-LD wird zwingend mit ausgeliefert (24 FAQs auf 5 Vorsorge-Pages registriert). Plus-Icon dreht 45° auf open.
Was ist ein Behindertentestament?
Ein Behindertentestament ist eine spezielle Testamentsform, mit der Sie Ihr Vermögen so weitergeben, dass es nicht vom Sozialamt verbraucht wird, sondern direkt Ihrem Kind im Autismus-Spektrum zugutekommt.
Brauche ich dafür einen Anwalt?
Wir empfehlen die Erstellung durch eine Fachanwältin oder einen Fachanwalt für Erbrecht. Wir vermitteln gerne erfahrene Ansprechpartnerinnen und Ansprechpartner in Ihrer Region.
Was kostet die Beratung?
Unser Erstgespräch ist immer kostenlos und unverbindlich. Anwaltliche Folgekosten sind transparent und richten sich nach RVG.
<details>
<summary>Was ist ein Behindertentestament?</summary>
<p>Eine spezielle Testamentsform, mit der Sie Ihr Vermögen so weitergeben...</p>
</details>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Was ist ein Behindertentestament?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Eine spezielle Testamentsform, mit der..."
}
}]
}
</script>
Trust-Block
Stats-Grid mit Magenta-Zahlen auf Navy-Deep. Belegt Glaubwürdigkeit mit Zahlen statt Worten. Pflicht für: Spendenseite, „Über uns", Vorsorge-Pages.
<section class="section-dark">
<div class="container">
<div class="trust-grid">
<div><span class="num">9.152 €</span><span class="lbl">in Projekte 2025</span></div>
<div><span class="num">12</span><span class="lbl">Projekte gefördert</span></div>
<div><span class="num">21</span><span class="lbl">Jahre Erfahrung</span></div>
<div><span class="num">100 %</span><span class="lbl">transparent</span></div>
</div>
</div>
</section>
Soft-CTA
Inline-CTA-Karte zwischen Content-Blöcken. Hellpink, dezent, unterbricht den Lesefluss nur sanft. 9× auf der Spenden-Section eingesetzt — jede Seite-Sektion bekommt einen.
Sie haben Fragen?
Wir sind nur einen Anruf entfernt. Persönlich, kostenlos, unverbindlich.
Beratung anfragen<div class="soft-cta">
<h3>Sie haben Fragen?</h3>
<p>Wir sind nur einen Anruf entfernt. Persönlich, kostenlos, unverbindlich.</p>
<a class="btn btn-sm btn-primary" href="/kontakt/">Beratung anfragen</a>
</div>
Persona-Trio
Drei Cards nebeneinander, je eine pro Persona. Hintergrund mit Persona-Tint-Gradient (oben getintet, unten weiß). Standardbestandteil der Landingpages „Für Eltern" und „Für Angehörige".
Johanna
Lisa
Peter
<div class="persona-trio">
<div class="pc j">
<div class="age">55–75</div>
<h4>Johanna</h4>
<div class="role">Besorgte Mutter im Ruhestand</div>
</div>
<div class="pc l">...</div>
<div class="pc p">...</div>
</div>
.j, .l, .p setzen den Persona-Tint. Reihenfolge: J · L · P (alphabetisch egal, aber konsistent).Newsletter-Form (Form 4)
Multi-Listen-Auswahl: Allgemein (vorausgewählt), Aktuelle Recht-News, Buchtipp des Monats. Pflichtfelder: Vorname, Nachname, E-Mail. Pro angekreuzter Liste feuert ein conditional FluentCRM-Feed → die jeweilige Welcome-Sequenz startet. Spam-Schutz: Cloudflare Turnstile (compact-size, JS lädt MU-Plugin). DOI an alle Listen.
Form ID: 4
Lists (3): Allgemein (default), News, Buchtipp
Tags: Quelle:Newsletter-Footer (auto)
Funnel: Welcome-Sequenz Persona-detected
DOI: an, Wartezeit 30 Tage Auto-Cleanup
Captcha: Turnstile compact (MU-JS lädt nach)
Persona-Bar / Audience-Tags (NICHT Breadcrumb!)
Was es ist: Ein schmaler Tag-Streifen direkt unter dem Header, der zeigt „diese Seite richtet sich an folgende Persona(s)". Klickbar zur jeweiligen Persona-Hub-Page (z.B. /fuer-eltern/).
Was es NICHT ist: Es ist kein Breadcrumb. Breadcrumb zeigt den Navigations-Pfad zur Seite (Home › Vorsorge › Behindertentestament). Persona-Bar zeigt Zielgruppen-Tags. Beide können koexistieren — meist reicht aber eines pro Seite.
Wann benutzen? Optional auf Inhalts-Pages, die klar an 1–2 Personas gerichtet sind (z.B. „Behindertentestament" → Tag „Für Eltern"). Auf Spenden-Conversion-Seiten und im Listing-Bereich (Einrichtungen) eher Breadcrumb verwenden.
<div class="persona-bar">
<a class="persona-tag persona-tag--lisa" href="/fuer-eltern/">Fuer Eltern</a>
<a class="persona-tag persona-tag--peter" href="/fuer-unterstuetzer/">Fuer Unterstuetzer</a>
<a class="persona-tag persona-tag--johanna" href="/vorsorge/">Vorsorge</a>
</div>
Breadcrumb (Navigations-Pfad)
Was es ist: Klassischer Pfad-Breadcrumb (Home › Kategorie › Aktuelle Seite). Hilft Orientierung und SEO. Auf Templates Einrichtung und Buch Pflicht. Auf flachen Hub-Pages (z.B. „Für Eltern") überflüssig.
<nav class="breadcrumb" aria-label="Brotkrümel-Navigation">
<a href="/">Start</a>
<span class="sep">›</span>
<a href="/vorsorge/">Vorsorge</a>
<span class="sep">›</span>
<span class="current" aria-current="page">Behindertentestament</span>
</nav>
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type":"ListItem","position":1,"name":"Start","item":"https://autismusstiftung.de/"},
{"@type":"ListItem","position":2,"name":"Vorsorge","item":"https://autismusstiftung.de/vorsorge/"},
{"@type":"ListItem","position":3,"name":"Behindertentestament"}
]
}
einrichtung + buch. Auf Hub-Pages (Spenden, Vorsorge, Über uns) auslassen — der Header übernimmt die Navigation. Aktuelle Seite ist nicht klickbar (aria-current="page").Values — 1·2·3·4 numbered
Vier Karten mit Magenta-Grosszahl als „Wir lernen / teilen / inspirieren / fordern“-Sequenz. Standard-Block fuer „Ueber uns“-, Mission- und Werte-Sections.
Wir lernen.
Seit 20+ Jahren wachsen wir mit jeder Erfahrung.
Wir teilen.
Wir sprechen aus, was wir gelernt haben.
Wir inspirieren.
Wir feiern Fortschritte und motivieren.
Wir fordern.
Unwissenheit akzeptieren wir nicht.
<section class="values">
<div class="value-card"><div class="value-num">1</div><h3>Wir lernen.</h3><p>...</p></div>
<div class="value-card"><div class="value-num">2</div><h3>Wir teilen.</h3><p>...</p></div>
<div class="value-card"><div class="value-num">3</div><h3>Wir inspirieren.</h3><p>...</p></div>
<div class="value-card"><div class="value-num">4</div><h3>Wir fordern.</h3><p>...</p></div>
</section>
Two-Tiles (zwei nebeneinander)
Zwei gleichgrosse Karten nebeneinander, Bild oben + Text unten. Fuer „Was wir machen“-Sections oder zum Verweisen auf zwei Hauptthemen.
<section class="two-tiles">
<div class="card-img"><img src="..."><div class="card-body"><h3>Foerderung</h3><p>...</p></div></div>
<div class="card-img"><img src="..."><div class="card-body"><h3>Aufklaerung</h3><p>...</p></div></div>
</section>
Image-Text-Split (50/50, 40/60, 60/40)
Klassisches Hero-darunter-Pattern: Foto links, Text rechts (oder umgekehrt). Fuer Geschichten, Projekt-Beschreibungen, „Ueber uns“-Vertiefung.
Wir kaempfen seit 1995 fuer die Rechte autistischer Menschen
Was als Elternverein begann, ist heute eine Stiftung mit 20+ Jahren Erfahrung.
Unsere Geschichte<section class="image-text split-50">
<div class="image-text-img"><img src="..."></div>
<div class="image-text-body">
<div class="section-label">Geschichte</div>
<h2>Wir kaempfen seit 1995...</h2>
<p>...</p>
<a class="btn btn-primary">Unsere Geschichte</a>
</div>
</section>
.split-50 · .split-40-60 (Bild schmal) · .split-60-40 (Bild breit). Bild ist Pflicht — keine Stockfotos.Card-Image
Standard-Card mit Bild oben (16:9), Body unten. Hover-Lift wie Standard-Card. Fuer Blog-Listing, Projekt-Uebersicht, Teaser-Grids.
<article class="card-img">
<img src="hero.jpg" alt="">
<div class="card-body">
<div class="card-eyebrow">Vorsorge</div>
<h3>Behindertentestament richtig gestalten</h3>
<p>Was Sie heute regeln, schuetzt morgen Ihr Kind.</p>
</div>
</article>
Card-Icon
Card mit 52×52px Magenta-Icon-Box oben links. Fuer Features, Vorteile, Service-Uebersicht.
Persoenliche Beratung
Kostenlos, unverbindlich, 20+ Jahre Erfahrung.
<div class="card-icon">
<div class="icon-box"><svg>...</svg></div>
<h3>Persoenliche Beratung</h3>
<p>Kostenlos, unverbindlich, 20+ Jahre Erfahrung.</p>
</div>
Full-CTA (Section auf Magenta)
Volle Section-Breite auf Magenta-HG mit grosser Headline + Primary-CTA. Wird sparsam eingesetzt — maximal 1× pro Seite, vor dem Footer.
<section class="full-cta">
<div class="container">
<div class="section-label sl-white">Spenden</div>
<h2>Jede Spende verbessert das Leben...</h2>
<a class="btn btn-primary-on-magenta">Jetzt spenden</a>
</div>
</section>
CTA-Bar (schmal, vor Footer)
Schmaler CTA-Streifen zwischen letzter Content-Section und Footer. „Nehmen Sie Kontakt auf“-Pattern. Auf JEDER Seite Pflicht — sonst hat der Leser am Ende keinen Anker.
Nehmen Sie Kontakt mit uns auf
Beratung anfragen<div class="cta-bar">
<div class="cta-bar-inner">
<h3>Nehmen Sie Kontakt mit uns auf</h3>
<a class="btn btn-primary" href="/kontakt/">Beratung anfragen</a>
</div>
</div>
Page Anatomy — das universelle Skelett
So sind alle Seiten der Autismus-Stiftung aufgebaut. Abweichungen brauchen eine begruendete Ausnahme. Wer mit dem Skelett startet, baut automatisch on-brand.
+---------------------------------------------------------+ | 1. HEADER (sticky, Logo + Nav + Spenden-CTA) | <-- Locked v2.3 +---------------------------------------------------------+ | 2. PERSONA-BAR (1-3 Tags) | <-- optional +---------------------------------------------------------+ | 3. HERO (Eyebrow + H1 + Lead + 1-2 CTAs) | <-- genau 1 pro Seite +---------------------------------------------------------+ | 4. TRUST-BLOCK (Stats auf Navy) | <-- Pflicht auf Spenden-/Ueber-Pages +---------------------------------------------------------+ | 5. CONTENT (Image-Text * Two-Tiles * Values * Cards) | <-- maximal 5 H2-Sections | Jede Section: Section-Label + H2 + Body | | Soft-CTA pro 600-800 Woerter | +---------------------------------------------------------+ | 6. FAQ-AKKORDEON (3-8 Fragen + JSON-LD-Schema) | <-- Pflicht auf Vorsorge-Pages +---------------------------------------------------------+ | 7. RELATED / CROSS-LINK (3 Cards) | <-- optional +---------------------------------------------------------+ | 8. FULL-CTA oder CTA-BAR | <-- Pflicht: einer von beiden +---------------------------------------------------------+ | 9. FOOTER (4-Spalten + Bottom-Bar) | <-- Locked v2.3 +---------------------------------------------------------+
- Header + Footer sind Locked-Components (v2.3, 2026-04-13). Werden vom Theme injiziert. Niemals neu bauen.
- Genau 1 Hero pro Seite. Variant nach Kontext (Standard / Dark / Split / Blob).
- Maximal 5 H2 pro Seite (Content-Sections). Mehr → Inhalt aufteilen auf mehrere Seiten.
- Soft-CTA pro 600-800 Woerter. Persona-passender Text.
- FAQ wenn die Seite eine Vorsorge-, Beratungs- oder How-To-Page ist (Pflicht inkl. JSON-LD-Schema).
- Pflicht-Abschluss: entweder Full-CTA (Magenta) ODER CTA-Bar (Navy-Mid). Niemals beides, niemals keins.
- Section-BG-Wechsel: Weiss → Gray (#F8F8F8) → Weiss → Navy → Weiss. Creme NUR als Akzent in Cards/Tints.
Page Template — News-Artikel
Standard-Layout fuer Blog-Posts und News-Artikel. Auf single.php automatisch geladen. Neue Posts brauchen keine eigene Block-Anordnung — Featured-Image + Content reicht.
+---------------------------------------------------------+ | HEADER + PERSONA-BAR (Tag = Kategorie + Persona) | +---------------------------------------------------------+ | HERO (variant: standard, mit Featured-Image) | | Eyebrow: Kategorie + Datum | | H1: Artikel-Titel | | Meta: Autor * Lesedauer * Datum | | Featured: 16:9 Foto unter Lead | +---------------------------------------------------------+ | CONTENT (the_content() — Gutenberg-Blocks) | | max. 5 H2 * Soft-CTA pro 600-800 Woerter | | Quote-Block fuer Zitate | +---------------------------------------------------------+ | CTA: NEWSLETTER-FORM (statt FAQ) | | "Diese Themen interessieren Sie? Newsletter abonnieren"| +---------------------------------------------------------+ | RELATED ARTICLES (3 Cards via tax_query) | +---------------------------------------------------------+ | CTA-BAR (Navy-Mid) | +---------------------------------------------------------+ | FOOTER | +---------------------------------------------------------+
post_title— H1, max 70 Zeichen, Person-Firstexcerpt— Lead, 1-2 Saetze, max 160 Zeichen (auch Meta-Description)featured_image— 1600×900 (16:9), authentisch, kein Stockcategory— genau 1 (Vorsorge / Diagnose / Therapie / Inklusion / Stiftung)tags— 3-5, Persona-Tags optionalauthor— sichtbar im Hero-Meta
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "{post_title}",
"image": ["{featured_image}"],
"datePublished": "{post_date}",
"author": {"@type":"Person","name":"{author}"},
"publisher": {"@type":"Organization","name":"Autismus-Stiftung"}
}
single.php ruft dieses Pattern + the_content(). Redakteure muessen nur Blocks reinschreiben — Layout ist fix.Page Template — Einrichtung (Listing)
Standard-Layout fuer die 6.486 Einrichtungs-Detail-Pages. Wird auf single-job_listing.php automatisch geladen. ACF-Felder treiben den Inhalt — Redakteure aendern nur Daten, nie Layout.
+---------------------------------------------------------+ | HEADER + BREADCRUMB (Hessen > Stadt > Einrichtung) | +---------------------------------------------------------+ | HERO (variant: split-50) | | Links: Foto / Logo der Einrichtung | | Rechts: Region-Tag * H1: Einrichtungsname | | Lead: 1-Satz-Beschreibung | | CTAs: "Kontakt" + "Webseite" | +---------------------------------------------------------+ | QUICK-FACTS (Card-Icon-Grid 4-up) | | Traeger * Zielgruppe * Plaetze * Aufnahmealter | +---------------------------------------------------------+ | SERVICES (Two-Tiles oder Card-Grid) | | Was bietet die Einrichtung an? | +---------------------------------------------------------+ | KONTAKT-BLOCK | | Adresse + Telefon + E-Mail (obfuskiert) + OSM-Map | +---------------------------------------------------------+ | RELATED LISTINGS (3 Cards same region/Traeger) | +---------------------------------------------------------+ | CTA-BAR: "Wir vermitteln Ihnen einen Erstkontakt" | +---------------------------------------------------------+ | FOOTER | +---------------------------------------------------------+
einrichtung_name Text (= post_title)
einrichtung_traeger Text "Lebenshilfe Kassel e.V."
einrichtung_region Select Hessen | Bayern | ... (Spur A: Hessen)
einrichtung_stadt Text
einrichtung_strasse Text
einrichtung_plz Text
einrichtung_lat/lng Number fuer Karte
einrichtung_zielgruppe Multi Kinder | Jugendliche | Erwachsene
einrichtung_plaetze Number
einrichtung_telefon Text als tel: erlaubt
einrichtung_email Email wird obfuskiert dargestellt
einrichtung_webseite URL
einrichtung_foto Image 16:9, 1600x900
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "{einrichtung_name}",
"address": {"@type":"PostalAddress","streetAddress":"{einrichtung_strasse}","postalCode":"{einrichtung_plz}","addressLocality":"{einrichtung_stadt}"},
"geo": {"@type":"GeoCoordinates","latitude":"{lat}","longitude":"{lng}"},
"telephone": "{einrichtung_telefon}"
}
Page Template — Buch / Produkt
Standard-Layout fuer Buchempfehlungen und Buch-Verkauf. Wird auf single-product.php in /buchempfehlungen/-Shop automatisch geladen. WooCommerce-Felder + ACF-Buch-Felder treiben den Inhalt.
+---------------------------------------------------------+ | HEADER + BREADCRUMB (Buchempf. > Kategorie > Buch) | +---------------------------------------------------------+ | HERO (variant: split-40-60) | | Links 40%: Buchcover (Aspect 2:3) | | Rechts 60%: Section-Label "Sachbuch / Roman" | | H1: Buchtitel | | Subtitle: Autor:in * Verlag * Jahr | | Stars-Rating + WC-Preis | | CTAs: "In den Warenkorb" + "Leseprobe" | +---------------------------------------------------------+ | BESCHREIBUNG (Content-Block) | | Klappentext + Empfehlung der Stiftung | +---------------------------------------------------------+ | AUTOR-BLOCK (Card-Image) | | Foto + Bio + Link zu Autor:in-Page | +---------------------------------------------------------+ | SPEC-TABELLE (technische Details) | | ISBN * Seiten * Sprache * Format * Erscheinungsdatum | +---------------------------------------------------------+ | ERLOES-HINWEIS (Soft-CTA, Magenta-XLight) | | "Der Erloes fliesst zu 100% in unsere Stiftungsarbeit" | +---------------------------------------------------------+ | RELATED BUECHER (3 Cards same category) | +---------------------------------------------------------+ | CTA-BAR: "Buecher passen zu Ihnen? Newsletter Buchtipp" | +---------------------------------------------------------+ | FOOTER | +---------------------------------------------------------+
// WooCommerce-Standard
product_title Text Buchtitel
product_image Image Cover, 600x900 (2:3)
product_short_desc Text Klappentext, 2-3 Saetze
product_long_desc Editor Volle Beschreibung
product_price Number in EUR
product_categories Taxonomy Sachbuch | Roman | Kinderbuch | ...
// Custom ACF
buch_autor Text "Maria Muster"
buch_autor_foto Image
buch_autor_bio Editor
buch_verlag Text
buch_jahr Number
buch_isbn Text "978-3-00-000000-0"
buch_seiten Number
buch_sprache Text "Deutsch"
buch_format Select Hardcover | Taschenbuch | E-Book
buch_leseprobe_url URL PDF-Link
buch_empfehlung Editor "Wir empfehlen dieses Buch, weil..."
{
"@context": "https://schema.org",
"@type": "Book",
"name": "{product_title}",
"author": {"@type":"Person","name":"{buch_autor}"},
"isbn": "{buch_isbn}",
"publisher": "{buch_verlag}",
"datePublished": "{buch_jahr}",
"offers": {"@type":"Offer","price":"{product_price}","priceCurrency":"EUR"}
}
/buchempfehlungen/. Erloes-Hinweis ist Pflicht — der Buch-Verkauf ist eine Spendenform mit Gegenleistung.Form-Pack — Eingabe-Components
Native HTML-Forms mit ARIA, Keyboard-Navigation, WCAG 2.2 AA. Form-3 (Kontakt) und Form-4 (Newsletter) basieren darauf.
Text-Input
<div class="form-row">
<label for="vorname">Vorname <span style="color:#b01f52" aria-hidden="true">*</span></label>
<input id="vorname" type="text" class="as-input"
required aria-required="true" aria-describedby="vorname-help">
<span id="vorname-help" class="help">So sprechen wir Sie an.</span>
</div>
- WCAG
- 2.2 AA: Label sichtbar,
aria-required, Fehler viaaria-invalid+role="alert" - Tokens
--color-magenta,--radius-sm,--duration-150- Varianten
- type=text · email · tel · password · number · search
Select-Dropdown
<select id="situation" class="as-select">
<option value="">Bitte wählen ...</option>
<option value="elternteil">Elternteil</option>
</select>
- WCAG
- Native
<select>= volle Browser-A11Y, native Mobile-Picker - Erste Option
- Pflicht: leerer Wert „Bitte wählen ..." damit Required validiert
Checkbox
<label class="as-checkbox">
<input type="checkbox" name="newsletter" checked>
<span>Ich möchte den Newsletter abonnieren</span>
</label>
- WCAG
- Native
<input type="checkbox">in<label>— Click auf Text aktiviert - Touch-Target
- ≥ 44px durch Padding
Radio-Group
<fieldset>
<legend>Spendenhäufigkeit</legend>
<div class="as-radio-group" role="radiogroup">
<label class="as-radio"><input type="radio" name="freq"><span>Einmalspende</span></label>
</div>
</fieldset>
- WCAG
<fieldset>/<legend>für Gruppierung. Pfeil-Tasten wechseln Auswahl (Browser nativ).
Date-Picker
<input type="date" class="as-input" min="1900-01-01" max="2026-12-31">
- WCAG
- Native = volle Browser-A11Y, Mobile öffnet System-Date-Picker
- min/max
- Pflicht — verhindert sinnlose Eingaben
UI-Pack — Interaktion
Toast, Modal, Tab — voll-funktional mit Focus-Trap und Keyboard-Navigation.
Toast / Notification
// HTML — globale Live-Region irgendwo im DOM
<div role="status" aria-live="polite" aria-atomic="true" id="toast-region"></div>
// JS
function showToast(msg, type='info', duration=4000) {
const t = document.createElement('div');
t.className = 'as-toast ' + type;
t.setAttribute('role','status');
t.innerHTML = msg + '<button class="close" aria-label="Schließen">×</button>';
document.body.appendChild(t);
const close = () => t.remove();
t.querySelector('.close').onclick = close;
if (duration > 0) setTimeout(close, duration);
}
- WCAG
role="status"+aria-live="polite"+aria-atomic="true"- Auto-Dismiss
- Standard 4s, bei Errors 0 (manuell schließen)
Modal / Dialog
<div class="as-modal-backdrop" role="dialog" aria-modal="true" aria-labelledby="m-title">
<div class="as-modal">
<div class="as-modal-header">
<h2 id="m-title">Titel</h2>
<button class="close" aria-label="Modal schließen">×</button>
</div>
<div class="as-modal-body">...</div>
<div class="as-modal-footer">
<button class="btn btn-outline-dark">Abbrechen</button>
<button class="btn btn-primary">Bestätigen</button>
</div>
</div>
</div>
- WCAG
role="dialog"+aria-modal="true". Focus springt rein beim Open, zurück beim Close.- Keyboard
- ESC schließt. Tab/Shift+Tab loopt im Modal (Focus-Trap).
- Body-Scroll
- Pflicht:
document.body.style.overflow='hidden'beim Open
Tab-Navigation
Einmalspenden helfen sofort — z.B. für Beratungstermine, Druckkosten, akute Familien-Notlagen.
<div class="as-tabs" role="tablist">
<button role="tab" aria-selected="true" aria-controls="p1" id="t1" tabindex="0">Tab 1</button>
<button role="tab" aria-selected="false" aria-controls="p2" id="t2" tabindex="-1">Tab 2</button>
</div>
<div role="tabpanel" id="p1" aria-labelledby="t1" aria-hidden="false">...</div>
- WCAG
- ARIA-Tabs-Pattern: Pfeil-Links/Rechts, Home/End.
tabindex="0"nur auf aktivem Tab.
Status-Pack — Listen & Loading
Pagination, Skeleton, Empty-State — Pflicht für jede Listen-Page.
Pagination
<nav class="as-pagination" aria-label="Seiten-Navigation">
<button disabled>← Zurück</button>
<a href="?page=3" aria-current="page" aria-label="Seite 3, aktuelle Seite">3</a>
<a href="?page=4">Weiter →</a>
</nav>
- WCAG
<nav>+aria-label,aria-current="page"auf aktive Seite
Skeleton-Loader
<div aria-busy="true" aria-label="Inhalte werden geladen">
<div class="as-skeleton box"></div>
<div class="as-skeleton line medium"></div>
<div class="as-skeleton line short"></div>
</div>
- WCAG
aria-busy="true"auf Container- Reduced-Motion
- Pulse-Animation respektiert
prefers-reduced-motion - Varianten
.line,.line.short,.line.medium,.box,.circle
Empty-State
Keine Einrichtungen gefunden
Wir haben für Ihre Suche „autismus kassel kinder" keine passenden Einrichtungen. Probieren Sie weniger Filter oder eine andere PLZ.
Filter zurücksetzen<div class="as-empty">
<div class="as-empty-icon" aria-hidden="true"><svg>...</svg></div>
<h3>Keine Ergebnisse</h3>
<p>Erklärung + Lösungs-Vorschlag</p>
<a class="btn btn-primary" href="#">Aktion</a>
</div>
- Pflicht-Inhalte
- 1. Icon (Lucide), 2. Headline, 3. Erklärung + Lösung, 4. CTA
- Voice
- Niemals „Hoppla!" oder „Ups!" — sachlich