UI & Design Systems
StretchTextMicro-InteractionsUI & UXInline ExpansionReacta11y

Explainable Text – Interaktive Inline-Erklärungen im Lesefluss

Praxis-Leitfaden für Explainable Text & StretchText: Fachbegriffe und Messwerte direkt im Satzfluss per Klick entfalten – ohne störende Popovers oder Layout-Jumps.

LKLukas Kopischke
Zuletzt aktualisiert am

Du liest ein Hardware-Datenblatt über 3D-Drucker oder ein Architektur-Whitepaper über Web-Performance und stolperst über Fachbegriffe: Was genau bedeutet das , welcher Dezibel-Wert verbirgt sich hinter und warum verlangt die Frontend-Architektur ein ? Bisher gab es nur schlechte Kompromisse: Entweder überlädt der Autor den Text mit endlosen Klammern, versteckt Details in Tooltips, die auf Smartphones nicht funktionieren, oder zwingt dich per Link zum Tab-Wechsel. Der Lesefluss bricht ab, der Fokus ist verloren.

Explainable Text (historisch als StretchText von Hypertext-Pionier Ted Nelson 1967 geprägt) ist ein progressives Interaktionsmuster für digitale Typografie. Fachbegriffe, Kennzahlen oder Abkürzungen erhalten interaktive Inline-Trigger: Ein Klick entfaltet die vertiefende Erklärung nahtlos direkt im Fließtext – wahlweise als weicher Einschub oder flüssiges Zeichen-Streaming –, ohne Popovers, Modal-Dialoge oder ablenkende Kontextwechsel zu erzwingen.

Die goldene Regel

Explainable Text respektiert den Lesefokus: Tiefergehendes Wissen entfaltet sich exakt dort, wo die Frage entsteht – direkt im Satzfluss, bedarfsgerecht und ohne störende Popups.

Warum herkömmliche Erklär-Muster im Web scheitern

Klassische Benutzeroberflächen trennen Leseebene und Erklärebene durch künstliche UI-Schranken. Dieses Dilemma beschrieb Jakob Nielsen (Nielsen Norman Group) bereits in seinen Grundsätzen zum Progressive Disclosure: Nutzer fordern Übersichtlichkeit und einfache Scannbarkeit, benötigen in Spezialfällen aber tiefere Detailinformationen. Herkömmliche Muster lösen diesen Zielkonflikt nur unzureichend:

1. Tooltips & Hovercards

Mobile-Blindflug

Auf Touchscreens existiert kein nativer Hover-State. Tooltips verdecken die Folgezeilen, verschwinden beim kleinsten Fingerzucken und sind für motorisch eingeschränkte Nutzer schwer zu fixieren.

2. Modale Dialoge

Kognitiver Bruch

Popups reißen den Leser komplett aus der mentalen Textumgebung. Man schließt das Modal und muss die genaue Lesestelle im Satz mühsam neu suchen.

3. Accordions & Fußnoten

Layout-Sprung

Akkordeons zerschneiden zusammenhängende Sätze in grobe Blöcke. Fußnoten zwingen zum Scroll-Marathon ans Seitenende und brechen den Lesefluss ab.

Die drei Stufen adaptiver Informationstiefe

Explainable Text löst das Grunddilemma technischer Texte: Für wen schreiben wir? Für den eiligen Experten oder den wissbegierigen Einsteiger? Durch gestufte Enthüllung (Progressive Disclosure) direkt im Satz bedient ein einziger Text beide Zielgruppen:

Stufe 1: Der Scanner

Kompakter Lead

Liest den Text in 15 Sekunden linear durch. Erfasst prägnante Sätze und die Hauptaussage ohne kognitiven Ballast oder störende Fußnoten.

Stufe 2: Der Prüfer

Selektive Tiefe

Klickt gezielt auf zwei unklare Werte (z. B. Geräuschpegel oder FDM-Verfahren) und erhält sofort den Kontext, ohne den Tab zu wechseln.

Stufe 3: Mehrstufig verschachtelt

Rekursive Details

Öffnet vertiefende Untererklärungen (z. B. Druckgeschwindigkeit ➔ 600 mm/s ➔ Vergleich mit 50 mm/s Standard) direkt inline im geöffneten Text.


Voraussetzungen und technische Implementierung

Was braucht eine robuste Implementierung im modernen Web-Stack? Ein semantischer HTML-Trigger, typsichere Token-Parser und eine performante Animations-Engine bilden das Fundament:

  • Frontend-Framework: React 19 / Next.js mit TypeScript für typsichere Token-Parser und rekursive Baumstrukturen.
  • Animations-Engine: CSS Transitions, Framer Motion oder leichtgewichtiges Zeichen-Streaming per requestAnimationFrame / setTimeout.
  • Semantisches HTML: Accessible Button-Trigger (<button type="button">) mit synchronisierten ARIA-Attributen für Screenreader.

Dezente Typografie und nicht-lineare Anrampung

Ein dezent gestrichelter Rahmen mit nach rechts zeigendem Pfeil (ChevronRight) sorgt für minimale optische Unruhe. Über eine nicht-lineare Anrampung (Accelerating Easing) startet die Tipp-Animation mit sanften 32 Millisekunden und beschleunigt dynamisch auf 4 Millisekunden:

TSX
1import React, { useState, useEffect } from "react";
2import { ChevronRight } from "lucide-react";
3
4export function ExplainableInline({
5 term,
6 explanation,
7 variant = "subtle",
8}: {
9 term: string;
10 explanation: string;
11 variant?: "subtle" | "badge";
12}) {
13 const [isExpanded, setIsExpanded] = useState(false);
14 const [displayed, setDisplayed] = useState("");
15 const fullText = ` (${explanation})`;
16
17 useEffect(() => {
18 if (!isExpanded) {
19 setDisplayed("");
20 return;
21 }
22 let cur = 0;
23 // Anrampung: Startet wahrnehmbar und beschleunigt rasant
24 const scheduleNext = () => {
25 cur++;
26 setDisplayed(fullText.slice(0, cur));
27 if (cur < fullText.length) {
28 const progress = cur / fullText.length;
29 const delay = Math.max(4, Math.round(32 - Math.pow(progress, 0.5) * 28));
30 setTimeout(scheduleNext, delay);
31 }
32 };
33 scheduleNext();
34 }, [isExpanded, fullText]);
35
36 return (
37 <span className="inline">
38 <button
39 type="button"
40 onClick={() => setIsExpanded(!isExpanded)}
41 aria-expanded={isExpanded}
42 className={
43 variant === "subtle"
44 ? "inline-flex items-center gap-1 border-b-2 border-rose-500 font-semibold text-neutral-900 dark:text-white hover:text-rose-600 transition-colors cursor-pointer mx-0.5 px-0.5"
45 : "inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 mx-0.5 font-semibold text-rose-700 bg-rose-500/10 border border-rose-500/25 transition-all cursor-pointer"
46 }
47 >
48 <span>{term}</span>
49 <ChevronRight
50 className={`h-3 w-3 text-rose-500 transition-transform duration-200 ${
51 isExpanded ? "rotate-180 text-rose-600 dark:text-rose-400" : ""
52 }`}
53 />
54 </button>
55
56 {isExpanded && (
57 <span className="inline text-neutral-750 dark:text-neutral-250 font-normal">
58 {displayed}
59 </span>
60 )}
61 </span>
62 );
63}
Rendering-Performance & 60 FPS

Beim Zeichen-Streaming führt jedes Zeichen zu einem Re-Render. Halte den State strikt lokal in der ExplainableInline-Komponente, damit nicht der gesamte Absatz oder übergeordnete DOM-Baum neu berechnet wird. So bleibt die INP-Reaktionszeit unter 16 Millisekunden.


Interaktives Studio: Explainable Text in der Praxis ausprobieren

Wie fühlt sich Explainable Text bei realen Inhalten an? Die folgende Werkbank ermöglicht es, das Zusammenspiel aus Streaming-Geschwindigkeit, Easing-Kurven und mehrstufig verschachtelten Begriffen direkt zu testen. Wähle ein Branchen-Preset (3D-Druck, Web-Performance oder KI-Synthese) oder editiere eigenen Text im Markdown-Format [Begriff](Erklärung):

Explainable Text Studio & Inline-SimulatorLive Werkbank
Erlebe interaktive Text-Erweiterungen mit flüssigem Zeichen-Streaming, teste verschiedene Branchen-Presets oder probiere eigenen Fließtext in der Markdown-Sandbox aus.
Darstellung:
Modus:
Timing:
3D-Drucker (Verschachtelt)Mehrstufig verschachteltKlicke auf unterstrichene Begriffe ▸ (auch in geöffneten Texten!)
Der Anycubic Kobra 3 basiert auf dem und überzeugt im Home-Office durch sein sowie eine . Dank gelingen Bauteile ab fehlerfrei.
Erkundungstiefe
0 / 7 aktiv
0% geöffnet
Streaming-Easing
Anrampung (32➔4ms)
Keine Wartezeit bei langen Texten
Ergonomie
Zero Popups
Pfeil nach rechts ▸ rotiert nach unten
INP / Re-Render
< 16 ms
Atomarer State / 60 FPS

Das Experiment demonstriert zwei zentrale Eigenschaften: Die nicht-lineare Beschleunigung lässt das Auge intuitiv dem Textfluss folgen, während die Zeilenumbrüche flüssig mitwachsen – ohne dass die umgebenden Absätze ruckartig verschoben werden.


Barrierefreiheit & Web-Standards: WAI-ARIA APG und WCAG 2.2

Für barrierefreie Software (BITV 2.0 / European Accessibility Act BFSG) muss Explainable Text strenge Zugänglichkeitskriterien nach dem W3C WAI-ARIA Authoring Practices Guide (APG) Disclosure Pattern erfüllen:

WCAG Kriterium 1.4.13 (Inhalt bei Hover/Fokus)

a11y Level AA

Der Inhalt darf nicht rein bei Hover aufpoppen. Ein expliziter Klick- oder Tastatur-Trigger ([Enter]/[Leertaste]) stellt sicher, dass Nutzer den Text in ihrem eigenen Tempo erfassen können.

WCAG Kriterium 2.5.5 / 2.5.8 (Zielgröße Touch)

Ergonomie

Trotz kompakter Typografie muss die klickbare Trefferfläche mindestens 24 × 24 Pixel (Level AA), idealerweise 44 × 44 Pixel (Level AAA) betragen (über unsichtbares Pseudo-Padding via before:absolute), um Fehltipps auf Smartphones zu verhindern.

Darüber hinaus muss die CSS-Präferenz prefers-reduced-motion respektiert werden: Nutzer, die Systemanimationen deaktiviert haben, erhalten die Erklärung unmittelbar ohne Typewriter-Animation.


SEO, GEO & Crawlability: Werden Inline-Erklärungen indexiert?

Werden hinter Klicks verborgene Texte von Suchmaschinen (Googlebot) oder KI-Suchmaschinen (Perplexity, ChatGPT, Claude) überhaupt gefunden – oder drohen Ranking-Verluste durch unvollständigen Index oder Cloaking-Verdacht? Das Zusammenspiel aus Google Mobile-First Indexing und Generative Engine Optimization (GEO) verlangt eine saubere technische Trennung zwischen Darstellungslogik und Crawling-Inhalten:

Googlebot & Mobile-First Indexing

SEO Standard

Seit Googles Mobile-First Indexing werden Akkordeon- und Klappinhalte vollwertig indexiert. Google Search Central stellte klar: Solange der Text im DOM liegt und für Nutzer bei Interaktion sichtbar wird, erfährt er keine Abwertung. Voraussetzung ist, dass der Inhalt bereits im statischen HTML (SSR/SSG) existiert und nicht erst per dynamischem API-Call nachgeladen wird.

GEO & RAG-Pipelines (LLMs)

KI-Suche

KI-Crawler (wie GPTBot, PerplexityBot oder Claude) simulieren im Regelfall keine Klick-Events auf Inline-Buttons. Um zu verhindern, dass vertiefende Erklärungen in Vektordatenbanken fehlen, wandelt unsere Build-Pipeline jedes <ExplainableInline>-Tag automatisiert in lineares Markdown Begriff (Erklärung) für llms.txt und llms-full.txt um.

Das DOM-Vorhalten: Warum reines Client-Side-Hiding scheitert

Ein typischer Architekturfehler in React-Apps ist das bedingte Rendern: {isExpanded && <span>{text}</span>}. Im serverseitig generierten HTML (SSR/SSG) existiert der Text dann beim initialen Crawling schlichtweg nicht.

Die Lösung orientiert sich am HTML5-Akkordeon-Muster: Der Erklärungstext wird von Sekunde 0 an im DOM vorgehalten – im eingeklappten Zustand über aria-hidden="true" und ein unsichtbares Element (data-seo-content="true"), verknüpft mit der aria-controls-ID des Buttons. Sobald der Nutzer den Trigger betätigt, übernimmt die interaktive Typewriter-Komponente nahtlos die visuelle Darstellung:

HTML
1<!-- Im statischen HTML (SSR/SSG) vorgerendert: Sofort im Index für Googlebot -->
2<button type="button" aria-expanded="false" aria-controls="exp-fdm">
3 FDM-Verfahren
4</button>
5<span id="exp-fdm" class="hidden" aria-hidden="true" data-seo-content="true">
6 (Schmelzschichtverfahren: Thermoplastisches Filament wird schichtweise geschmolzen...)
7</span>

Inline-Expansion vs. Block-Akkordeon: Wann welches Muster?

Ein klassisches HTML-Akkordeon (<details><summary>) ist ein Block-Element. Es bricht den Absatz um und eignet sich hervorragend für FAQs oder separate Abschnitte. Für Fließtexte, Formeln und Fachtermini zerstört ein Block-Akkordeon jedoch den Lesefluss und erzeugt massive vertikale Sprünge. Explainable Text ist das typografische Inline-Pendant zum Akkordeon (Inline Progressive Disclosure) – optimiert für Satzrhythmus, Micro-Interactions und Zero Layout Shift (CLS = 0).

Kein Cloaking-Risiko nach Google Richtlinien

Google straft verborgenen Text nur ab, wenn versucht wird, Suchmaschinen andere Inhalte vorzutäuschen als echten Nutzern (z. B. weißer Text auf weißem Hintergrund oder unsichtbare Keyword-Listen). Da der semantische Button-Trigger den Begriff deklariert und der Klick exakt die im DOM hinterlegte Erklärung anzeigt, entspricht Explainable Text zu 100 % den W3C WAI-ARIA Disclosure Standards und den Google Search Essentials.


KI-Agenten-Prompt: Explainable Text im eigenen Projekt implementieren

Kopiere diesen Prompt in deinen KI-Coding-Assistenten (Claude Code, Cursor, Antigravity), um barrierefreie, performante Explainable-Text-Komponenten nach dem W3C WAI-ARIA Disclosure Standard und mit CLS=0 in dein Frontend einzubinden:

Setup Prompt
Explainable Text Integration PromptZiel: Claude / Cursor / Antigravity
Kopiere diesen Prompt in deinen KI-Coding-Agenten, um barrierefreie Explainable-Text-Komponenten in dein Projekt einzubauen.

Du bist ein erfahrener UI/UX- und Frontend-Architekt. Implementiere eine Explainable-Text-Komponente in React mit Tailwind CSS.

  1. Erstelle eine Komponente ExplainableInline mit nativem button-Trigger, aria-expanded, aria-controls und barrierefreiem Tastatur-Support ([Enter]/[Space]).
  2. Implementiere flüssiges Zeichen-Streaming (14ms Takt) mit optischem Typografie-Cursor und nicht-linearer Beschleunigung.
  3. Stelle sicher, dass bei 'prefers-reduced-motion' der Text sofort ohne Animation eingeblendet wird.
  4. Schütze die umgebenden Komponenten vor unnötigen Re-Renders über React.memo oder atomaren State.
  5. Halte den Text für SEO/Crawler über ein unsichtbares aria-hidden DOM-Element im SSR-Markup vor.

Architektonische Best Practices: Do's & Don'ts

Empfohlen (Best Practice)
  • Den erklärten Begriff vor der Einblendung farblich und semantisch akzentuieren
  • Zeichen-Streaming mit dezentem Cursor für organischen Lesefluss einsetzen
  • 'prefers-reduced-motion' via CSS-Media-Query respektieren und Animation überspringen
  • Touch-Trefferflächen von mindestens 44 Pixeln über unsichtbares Padding sicherstellen
  • Erklärungstext von Beginn an im DOM vorhalten, um SSR-Crawlability zu sichern
Zu vermeiden (Anti-Pattern)
  • Maus-Only-Hover-Trigger nutzen, die auf Tablets und Smartphones nicht funktionieren
  • Ganze Absätze bei jedem Zeichen-Update global re-rendern (Layout-Thrashing)
  • Mehrere Zeilen lange Romane inline einbetten – Text bleibt ein prägnanter Einschub
  • Fehlende Tastaturfokussierbarkeit (div mit onClick statt semantischem button)
  • Reines Client-Side-Hiding, das den Inhalt vor Suchmaschinen und Screenreadern versteckt

Checkliste: Explainable Text in der Praxis

  • Semantischer Button: Trigger nutzt <button type="button"> mit synchronisiertem aria-expanded und aria-controls.
  • Tastatur-Support: Vollständig mit [Tab], [Enter] und [Leertaste] fokussier- und bedienbar.
  • Mobile Ergonomie: Touch-Targets erfüllen die empfohlene Mindestgröße von 44 Pixeln über Pseudo-Hit-Areas.
  • Layout-Stabilität: Expansion fügt sich nahtlos in den Zeilenumbruch ein und verursacht keinen Layout-Shift (CLS = 0).
  • Reduced Motion: System-Präferenz für reduzierte Bewegung wird respektiert und überspringt die Animation.
  • SEO & Crawlability: Inhalt existiert im serverseitig generierten HTML und wird von LLM-RAG-Pipelines erfasst.

Offizielle Spezifikationen & Primärquellen

Für historische Grundlagen, W3C-Standards, Barrierefreiheit und Indexierungs-Richtlinien:


Verwandte Themen im Digital Garden

Diese Konzepte vertiefen progressive Oberflächen, Barrierefreiheit und Frontend-Performance: