Statische Marketing-Exporte liefern weiterhin Akkordeons, Filterleisten und Hilfetexte, die sanft zwischen kollabiertem Zustand und natürlicher Inhaltshöhe wechseln sollen. Klassisch scheiterte CSS daran, weil height: auto keinen stabilen numerischen Endpunkt für Transitions besitzt und Browser den Übergang einfach am Ende springen lassen. Mit 2026-Engines gewinnt die Kombination aus interpolate-size: allow-keywords und calc-size() an Bedeutung: Sie erlaubt intrinsische Schlüsselwörter in der Interpolationspipeline, ohne dass Teams wieder auf riesige max-height-Heuristiken oder fragile scrollHeight-Skripte zurückfallen müssen. Der Artikel erklärt das Ausgangsproblem, die neuen Primitive, Absicherung via @supports, Interaktion mit Flex- und Grid-Layouts, Safari-spezifisches Scheduling, Performancefallen, Barrierefreiheit sowie eine Matrix und Checkliste für Releases. Für dokumentenübergreifende Übergänge lesen Sie die View-Transitions-Anleitung für statische MPAs, und wenn Ihre Disclosure-Region Formularfelder mit eigenem Wachstum enthält, ergänzen Sie den Field-Sizing-Leitfaden für statische Formulare.
Ökonomisch zählt, dass Safari- und WebKit-Verhalten am ehesten auf echter Apple-Hardware nachstellbar ist. MacHTML positioniert Cloud-Mac-mini-Mieten um 16,9 USD pro Tag als realistische QA-Budgetgröße für kurzfristige, dedizierte Rehearsals.
Warum height:auto so schmerzhaft war
Transitions benötigen zwei verwendbare Werte derselben Eigenschaft. auto ist jedoch eine Spezialform: Sie wird erst nach dem Layout ermittelt und ist in den meisten Engines nicht interpolierbar. Teams ersetzten sie durch künstliche max-height-Deckel, die Animationen zwar „weich“ wirken lassen, aber die Dauer von der tatsächlichen Textlänge entkoppeln. Übersetzungen ins Deutsche verlängern Zeichenketten oft um ein Drittel, wodurch ein zuvor stimmiger Easing-Graph plötzlich lethargisch wirkt. JavaScript-Lösungen messen DOM-Höhen, führen aber zu Main-Thread-Kopplung, CSP-Herausforderungen und Flackern, wenn Webfonts nachladen. Die neue Pipeline hält Messung und Interpolation im Style-System, reduziert JavaScript-Abhängigkeiten in statischen Bundles und vermeidet doppelte Layoutpasses, solange Autorinnen keine widersprüchlichen Größen auf denselben Boxen animieren.
Zusätzlich spielt overflow: hidden eine Rolle: abgerundete Karten schneiden Inhalte während der Transition. Wenn max-height und border-radius unterschiedliche Trigger besitzen, entstehen sichtbare Kantenartefakte auf Retina-Displays. Intrinsische Interpolation verringert diese Diskrepanz, weil die gemessene Höhe näher am realen Inhalt liegt.
Schließlich betrifft das Problem auch SEO-nahe Landingpages: Akkordeons verbergen oft rechtliche Texte. Wenn Animationen ruckeln, vermuten Stakeholder fälschlich Performance-Regressionen bei Core Web Vitals, obwohl nur die Motion-Schicht betroffen ist. Klar getrennte Metriken verhindern falsche Priorisierung.
interpolate-size: allow-keywords praktisch
Mit interpolate-size: allow-keywords markieren Sie einen Teilbaum, in dem der Browser Schlüsselwörter wie auto in numerische Zwischenwerte übersetzen darf. Setzen Sie die Eigenschaft auf den äußeren Disclosure-Container, nicht global auf body, damit andere Komponenten keine unerwarteten Interpolationskosten tragen. Kombinieren Sie sie mit overflow: clip, wenn abgerundete Masken sauber bleiben sollen, und definieren Sie explizite Start- und Endzustände für height.
.disclosure {
interpolate-size: allow-keywords;
overflow: clip;
transition: height 260ms cubic-bezier(.2,.8,.2,1);
}
Beachten Sie Margin-Kollaps: Ein auf height: 0 gesetztes Element kann dennoch vertikale Lücken zeigen, wenn angrenzende Margins verschmelzen. Innenabstände auf Wrapper-Elementen sind robuster. Die Eigenschaft vererbt sich; verschachtelte Akkordeons profitieren, aber tief verschachtelte Flex-Kinder können zusätzliche Layoutzyklen erzeugen, wenn gleichzeitig flex-basis animiert wird.
Dokumentieren Sie in Ihrem Designsystem, welche Komponenten die Erlaubnis erhalten, und versionieren Sie CSS-Dateien separat von Content-Exporten, damit Support-Teams Änderungen nachvollziehen können.
calc-size(fit-content) als Messbrücke
calc-size() kapselt intrinsische Schlüsselwörter in eine Berechnung, die als Länge interpretiert werden kann. Für Akkordeons lautet ein typisches Muster: kollabiert height: 0, expandiert height: calc-size(fit-content, size), sodass der Browser den Inhalt misst und dennoch eine interpolierbare Kurve erhält. Der Vorteil gegenüber max-height liegt in echten Endpunkten: kurze Antworten animieren schneller, lange Richtlinien länger, was der wahrgenommenen Fairness entspricht.
.panel[data-open="true"] .panel-body {
height: calc-size(fit-content, size);
}
.panel[data-open="false"] .panel-body {
height: 0;
}
Wenn Live-Regionen Text während der Transition einfügen, verschiebt sich das Ziel—das ist korrekt, kann aber UX-seitig irritieren. Für rein statische Seiten sollten Autorinnen DOM-Updates bis transitionend vermeiden. Achten Sie auf box-sizing: border-box, damit Padding nicht unerwartet die Messung verfälscht.
Testen Sie zusätzlich Drucke: PDF-Engines ignorieren manche CSS-Features; stellen Sie sicher, dass Inhalte auch ohne Animation vollständig lesbar bleiben.
Progressive Enhancement mit @supports
Nicht jede Installation aktualisiert Safari sofort. Bieten Sie einen sofortigen Umschaltmodus ohne Transition oder eine max-height-Fallback-Animation an, sobald calc-size() fehlt. Testen Sie die at-Regel gegen die konkrete Deklaration, nicht nur gegen allgemeine Feature-Strings.
@supports (height: calc-size(fit-content, size)) {
.panel-body { transition: height 240ms ease; }
}
@supports not (height: calc-size(fit-content, size)) {
.panel-body { transition: max-height 320ms ease; max-height: 0; }
.panel[data-open="true"] .panel-body { max-height: 80vh; }
}
Halten Sie semantische Strukturen unabhängig von der Motion-Schicht: details/summary oder Buttons mit aria-expanded bleiben die Quelle der Wahrheit.
Grid, Flex und min-height:auto
Flex-Items besitzen standardmäßig min-height: auto, wodurch sie nicht unter ihre Inhaltsminima schrumpfen. Für kollabierende Panels brauchen Sie häufig min-height: 0, damit height: 0 ehrlich bleibt. In CSS Grid wirken min-size:auto und Streck-Alignment ähnlich: ein animiertes Grid-Kind kann scheitern, wenn die Zeilendefinitionen definite Größen erwarten.
Wenn Sie contain: layout einsetzen, prüfen Sie Fokusringe: zu aggressive Isolation schneidet sichtbare Indikatoren ab. Kombinieren Sie keine gleichzeitige Margin- und Höhenanimation auf Geschwistern, um doppelte Layoutläufe zu vermeiden.
Für mehrsprachige Layouts beachten Sie unterschiedliche typografische Standardabstände: Deutsch nutzt längere Wörter, was Zeilenumbrüche verändert und damit intrinsische Messungen beeinflusst.
Safari- und WebKit-Hinweise
WebKit bündelt Stilaktualisierungen, wenn der Main Thread durch Drittanbieter-Skripte blockiert ist. Statische Seiten sollten schlank bleiben, dennoch können Analyse-Tags Mikroruckler erzeugen. Messen Sie mit dem WebInspector-Timeline-Trace und vergleichen Sie stabile Safari-Versionen mit Safari Technology Preview, wenn Ihr Release-Fenster macOS-Updates überschneidet.
Höhenanimationen triggern Layout; sie laufen nicht kostenlos auf dem Compositor. Vermeiden Sie parallele transform- und height-Tweening auf derselben Box ohne Profiling. Achten Sie auf Font-Smoothing-Konsistenz, damit Text nicht „flimmert“, wenn Antialiasing-Profile zwischen Zuständen wechseln.
Für Hardware mit ProMotion variiert die Framezeit; testen Sie nicht nur 60-Hz-Profile, sondern auch 120-Hz, falls Zielhardware das unterstützt.
Performance und Layout-Thrash
Jede zwischengeschaltete Höhe erzwingt Layout. Fünf gleichzeitig öffnende Panels multiplizieren Kosten. Begrenzen Sie Parallelität, staffeln Sie Öffnungen leicht oder markieren Sie nicht sichtbare Bereiche mit content-visibility: auto, nachdem Sie sicher sind, dass Screenreader die Inhalte dennoch erreichen. ResizeObserver-Callbacks sollten keine synchronen Layout-Schreibzugriffe enthalten, solange Transitions laufen.
CPU-Drosselung auf Akku-Geräten kann Animationskurven strecken; vermeiden Sie ultralange Dauern, die Nutzerinnen in Wartestatus versetzen.
Barrierefreiheit und prefers-reduced-motion
Nutzerinnen mit vestibulärer Sensibilität profitieren von reduzierter Bewegung. Respektieren Sie prefers-reduced-motion: reduce, indem Sie Dauern auf nahe null setzen oder auf Opacity-Hinweise ausweichen, ohne Inhalte zu verstecken.
@media (prefers-reduced-motion: reduce) {
.panel-body { transition: none !important; }
}
Aktualisieren Sie aria-expanded zeitgleich mit dem Zustandswechsel, nicht erst nach Abschluss der Animation, es sei denn, Ihre UX-Forschung empfiehlt explizit verzögerte Ankündigungen—was selten der Fall ist.
Muster für statische HTML-Akkordeons
Halten Sie Zustände in data-*-Attributen oder nativen details-Elementen. Vermischen Sie keine doppelten Höhen-Regeln aus Framework-CSS und Marketing-Overrides. Lagern Sie Motion in eine eigene Datei aus, die per Query-String versioniert wird, damit CDN-Caches kontrolliert invalidiert werden können.
Für Export-Pipelines aus Headless-CMS-Systemen: validieren Sie, dass Rich-Text keine geschützten Leerzeichen einfügt, die intrinsische Messungen verfälschen.
Matrix: wann intrinsische Höhen sinnvoll sind
| Szenario | Intrinsische Höhe tweenen? | Anmerkung |
|---|---|---|
| Rechtstexte in Akkordeons | Ja | calc-size folgt echter Texttiefe. |
| Unendliche Feed-Karten | Nein | Virtualisierung vermeidet Scroll-Thrash. |
| Modale Dialoge | Teils | Bevorzugen Sie Transform für Rahmen, Höhe für Inhalt. |
| Sticky-Navigation | Vorsicht | Sticky und Höhe teilen sich Compositor-Entscheidungen. |
Nummerierte QA-Checkliste
- Testen Sie 320-, 390- und 834-Pixel-Breiten mit den längsten Übersetzungen.
- Aktivieren Sie prefers-reduced-motion und prüfen Sie Lesbarkeit.
- Öffnen Sie fünf Panels schnell hintereinander und messen Sie CPU-Spitzen auf M2-Baseline.
- Profilen Sie mit aktivierten Drittanbieter-Skripten wie in Produktion.
- Validieren Sie Fokusreihenfolge während der halben Animationsdauer.
- Vergleichen Sie stabiles Safari und STP bei OS-Upgrade-Fenstern.
- Testen Sie nach Webfont-Preload-Änderungen erneut.
- Erfassen Sie Dark-Mode- und Erhöhter-Kontrast-Screenshots.
FAQ
Ist max-height weiterhin okay?
Ja als Fallback, aber calc-size liefert ehrlichere Zeitkurven bei langen Texten.
Ersetzt das scroll-gestützte Animation?
Nein, unterschiedliche Mechanismen—kombinieren Sie nur mit Profiling.
Gilt das auch für width:auto?
Ähnliche Ideen, aber horizontale Bewegung verursacht mehr Textumbruch-Reflow.
Verlässliche Motion auf statischem HTML braucht echte Safari-Hardware mit produktionsnahen Fonts und Display-Skalierung. Ein Mac mini von MacHTML für rund 16,9 USD pro Tag erlaubt dedizierte Rehearsals, SSH-basierte Screenshots und VNC-Reviews ohne neue Bürohardware.
Intrinsische Höhenanimationen auf Cloud-Mac-mini proben
Laden Sie Ihr statisches Bundle auf Apple-Silicon-Safari, profilieren Sie Layout-Stürme und signieren Sie vor dem Merge.