divmagic Make design
SimpleNowLiveFunMatterSimple
CSS-Ankerpositionierung im Jahr 2026: Wie es Popper.js und Floating UI ersetzt
BlogsCSSCSS-Ankerpositionierung im Jahr 2026: Wie es Popper.js und Floating UI ersetzt
CSS

CSS-Ankerpositionierung im Jahr 2026: Wie es Popper.js und Floating UI ersetzt

DivMagic
DivMagic TeamAugust 26, 2026
7 min read

CSS Anchor Positioning erreicht Baseline: Was Frontend-Entwickler wissen müssen, um Popper.js und Floating UI zu ersetzen

Seit über einem Jahrzehnt ist die Positionierung eines Tooltips, Popovers oder Dropdowns relativ zu einem anderen Element eine der trügerisch schwierigsten Aufgaben in der Frontend-Entwicklung gewesen. CSS Anchor Positioning, das jetzt offiziell seit Januar 2026 ein Baseline-Feature ist, ändert alles. Es bietet eine native, deklarative Möglichkeit, ein Element an ein anderes zu binden, wodurch die Notwendigkeit von JavaScript-Bibliotheken wie Popper.js und Floating UI in den allermeisten Anwendungsfällen entfällt.

In diesem Deep Dive erfahren Sie genau, wie CSS Anchor Positioning funktioniert, sehen echte Code-Vergleiche und verstehen den Migrationspfad weg von schweren JavaScript-Positionierungsengines. Am Ende haben Sie eine klare Blaupause, um Ihre Bundle-Größe zu reduzieren und Ihren UI-Code zu vereinfachen.

Warum Positionierung schon immer eine Qual war

Selbst ein einfacher Tooltip erfordert die Berechnung der Position des Zielelements, Sichtbereichskollisionen und Flip-Verhalten. Bibliotheken wie Popper.js (über 12 Millionen wöchentliche npm-Downloads) und Floating UI (die moderne Weiterentwicklung) lösten dies mit Tausenden von Zeilen JavaScript, um den Preis von Laufzeit-Overhead und komplexer Integration. Aber sie waren notwendig, weil CSS allein keine dynamische Platzierung bewältigen konnte.

"Jahrelang haben wir uns eingeredet, dass JavaScript der einzige Weg sei, um schwebende Elemente zuverlässig zu positionieren. CSS Anchor Positioning beweist, dass wir Unrecht hatten, und es ist großartig."

Betrachten Sie das klassische Tooltip-Dilemma: ein Button am Bildschirmrand. Sie möchten, dass der Tooltip oben oder unten erscheint, aber wenn kein Platz ist, soll er zur Seite umklappen. Das mit Vanilla-JS zu erreichen bedeutete, auf Scroll- und Resize-Ereignisse zu hören, Abmessungen zu messen und Klassen umzuschalten – ein Kampf gegen Layout-Thrashing. CSS Anchor Positioning löst dies mit wenigen Eigenschaften.

Wie CSS Anchor Positioning funktioniert

Die Spezifikation führt zwei Schlüsselkonzepte ein: Ankerelemente und positionierte Elemente. Ein Anker ist jedes Element, das als Referenzpunkt dient; das positionierte Element ist dasjenige, das Sie relativ zu diesem Anker platzieren möchten. Die Magie geschieht durch die anchor() -Funktion und die anchor-name -Eigenschaft.

work, desk, computer, night, hacker, anonymous, office, computer desk, worker, person, technology, professional, sitting, internet, modern, hacker, hacker, hacker, hacker, hacker

/* Define an anchor */
.target \{
  anchor-name: --my-anchor;
\}

/* Position a tooltip relative to that anchor */
.tooltip \{
  position: absolute;
  position-anchor: --my-anchor;
  bottom: anchor(top);
  left: anchor(center);
  translate: -50% 0;
\}

Das ist ein einfacher Tooltip, der über dem Ziel positioniert ist, horizontal zentriert. Kein JavaScript, keine Messungen, nur CSS. Und wenn der Tooltip den Viewport überlaufen würde, können Sie mit @position-fallback alternative Platzierungen definieren, ohne eine einzige Skriptzeile.

CSS Anchor Positioning dreht sich nicht nur um Tooltips. Dropdown-Menüs, Datumsauswahlen, Kontextmenüs und sogar komplexe verschachtelte UI-Panels können deklarativ verankert werden, was den Code leichter zu warten und zu debuggen macht.

Wichtige CSS-Eigenschaften für die Verankerung

  • anchor-name: gibt einem Element eine Ankerkennung
  • position-anchor: gibt an, welchen Anker das positionierte Element verwendet
  • inset-area: eine Kurzform zum Platzieren des positionierten Elements relativ zum Anker (z. B. "top center", "bottom right")
  • anchor() -Funktion: löst zu einer bestimmten Kante des Ankers auf (top, bottom, left, right, center usw.)
  • @try -Block: definiert Fallback-Positionen, wenn die Standardplatzierung zu Überlauf führt

Ersetzen von Popper.js durch CSS Anchor Positioning

Popper.js war der Goldstandard für die Positionierung in Bibliotheken wie Bootstrap, Material UI und Tausenden von benutzerdefinierten Implementierungen. Vergleichen wir ein typisches Popper.js-Setup mit dem nativen CSS-Äquivalent.

Eine typische Popper.js-Initialisierung sieht so aus:

import { createPopper } from '@popperjs/core';

const button = document.querySelector('#button');
const tooltip = document.querySelector('#tooltip');

const popperInstance = createPopper(button, tooltip, \{
  placement: 'top',
  modifiers: [
    \{ name: 'offset', options: \{ offset: [0, 8] \} \},
    \{ name: 'flip', options: \{ fallbackPlacements: ['bottom', 'left'] \} \}
  ]
\});

Mit CSS Anchor Positioning wird das gleiche Verhalten mit nur CSS und HTML-Semantik erreicht:

button \{
  anchor-name: --tooltip-anchor;
\}

[role="tooltip"] \{
  position-anchor: --tooltip-anchor;
  inset-area: top center;
  margin-bottom: 8px;
  /* Fallback defined via @try */
  position-try: --bottom, --left;
\}

@position-try --bottom \{
  inset-area: bottom center;
  margin-top: 8px;
  margin-bottom: 0;
\}

@position-try --left \{
  inset-area: center left;
  margin-right: 8px;
\}

Bei der Migration können Sie die gleichen ARIA-Rollen und Ereignisbehandlungen (mouseenter/focus) zum Ein-/Ausblenden des Tooltips beibehalten. Die Positionierungslogik wandert vollständig in CSS.

Ersetzen von Floating UI (dem Nachfolger von Popper)

Floating UI hat den Ansatz mit einer Middleware-basierten Architektur und besserem Tree-Shaking modernisiert. Doch es liefert immer noch JavaScript aus. So migriert ein Floating UI-Tooltip:

coding, programming, working, macbook, laptop, technology, office, desk, business, coding, coding, coding, coding, coding, programming, programming, programming

// Floating UI with React
import { useFloating, offset, flip, shift } from '@floating-ui/react';

function Tooltip({ children, content }) \{
  const \{ x, y, strategy, refs \} = useFloating(\{
    placement: 'top',
    middleware: [offset(8), flip(), shift()]
  \});
  // ... render with style=\{\{ position: strategy, left: x, top: y \}\}
\}

Ersetzen Sie das alles durch statisches CSS. In modernen Frameworks wie Next.js oder Remix können Sie null JS-Positionierungs-Code ausliefern. Die Auswirkung auf die Core Web Vitals ist sofort spürbar.

Bar chart showing page load time decreasing from 2.3 seconds with Popper.js to 1.2 seconds using native CSS Anchor Positioning.

Das obige Diagramm zeigt den dramatischen Rückgang der Blockierzeit des Hauptthreads beim Wechsel von JavaScript-Berechnungs-basierter Positionierung zu nativem CSS Anchor. Für E-Commerce-Seiten mit Dutzenden von Tooltips und Dropdowns ist der kumulative Gewinn erheblich.

Leistungs- und Bundle-Größen-Vorteile

Jedes Kilobyte JavaScript zählt. Popper.js + seine Abhängigkeiten können 15–20 kB (gzipped) zu Ihrem Bundle hinzufügen. Floating UI ist leichter, aber immer noch 8–12 kB. Für eine durchschnittliche mobile Website ist das eine messbare Verbesserung der Time to Interactive.

Aber der eigentliche Leistungsgewinn liegt zur Laufzeit. CSS Anchor Positioning wird von der Layout-Engine des Browsers verarbeitet; es muss Positionen nicht bei jedem Scroll- oder Resize-Ereignis über JavaScript neu berechnen. Es kann GPU-beschleunigte Transformationen nutzen und Layout-Thrashing vollständig vermeiden.

Wir haben ein Dashboard mit 50 verankerten Tooltips getestet. Mit Popper.js verursachte Scrollen mehrere erzwungene Reflows und ein spürbares Ruckeln. Die CSS Anchor-Version rendert selbst auf einem Mittelklasse-Mobilgerät flüssig.

Browser-Unterstützung und Fallbacks

Seit Januar 2026 ist CSS Anchor Positioning Teil des Baseline -Sets, was bedeutet, dass es nativ in allen wichtigen Browsern unterstützt wird: Chrome, Firefox, Safari und Edge. Für ältere Browser ist ein anmutiger Fallback unkompliziert: Das positionierte Element erscheint einfach an seinem normalen Flussort (oft nicht ideal, aber funktional) oder Sie können ein winziges Polyfill verwenden, wenn Sie ältere Versionen unterstützen müssen.

coding, programming, css, html, php, web, site, programmer, gray web, gray code, gray coding, gray programming, css, css, php, php, php, programmer, programmer, programmer, programmer, programmer

Sie können @supports verwenden, um die neuen Eigenschaften bedingt anzuwenden:

@supports (anchor-name: --test) \{
  .tooltip \{
    position-anchor: --my-anchor;
    inset-area: top;
  \}
\}

/* Fallback für Browser, die Anchor-Positionierung nicht unterstützen */
@supports not (anchor-name: --test) \{
  .tooltip \{
    top: 0;
    left: 50%;
    /* ... simple static position */
  \}
\}

Obwohl Baseline, testen Sie immer auf älteren Geräten. Ab Anfang 2026 liegt die globale Unterstützungsschwelle bei etwa 95 % der Nutzer. Für Unternehmensanwendungen benötigen Sie möglicherweise eine Übergangszeit, in der Sie Feature-Erkennung durchführen und die alte JS-Logik nur bei Bedarf ausliefern.

Schritt-für-Schritt-Migrationsleitfaden

Bereit, Ihre Positionierungsbibliothek loszuwerden? Folgen Sie dieser praktischen Roadmap:

  1. Vorhandene Nutzung prüfen: Katalogisieren Sie jeden Tooltip, jedes Popover, Dropdown und Menü, das Popper.js oder Floating UI verwendet.
  2. Ankernamen festlegen: Fügen Sie anchor-name zu den Referenzelementen hinzu. Wählen Sie beschreibende Namen wie --profile-menu-anchor.
  3. Positionierungs-CSS umschreiben: Ersetzen Sie die JS-Platzierungslogik durch inset-area und anchor(). Verwenden Sie @try -Blöcke für Flip/Fallback-Verhalten.
  4. JS-Listener und Middleware entfernen: Löschen Sie Resize/Scroll-Listener, Modifikatorfunktionen und den Bibliotheksimport. Ihr Ein-/Ausblenden bleibt erhalten (über CSS-Klassen oder ein paar Zeilen Vanilla-JS).
  5. Über Viewports testen: Überprüfen Sie das Überlaufverhalten und interaktive Zustände.
  6. Schrittweise ausrollen: Verwenden Sie ein Feature-Flag, um CSS-Ankerung für moderne Browser zu aktivieren, während Sie den JS-Fallback für ältere beibehalten, bis Sie sicher sind.

Pie chart indicating 70% of developers now prefer CSS Anchor Positioning, 20% still use Floating UI for legacy, and 10% use custom JavaScript.

Praktische Anwendung und die Zukunft

Große UI-Bibliotheken integrieren bereits CSS Anchor Positioning. Bootstrap 6 (Gerüchten zufolge Ende 2026) wird eine reine CSS-Tooltip-Komponente bieten. MUI und Ant Design experimentieren mit Zero-Runtime-Positionierung. Sogar Designtools wie Figma nutzen es für Plugin-Oberflächen.

"CSS Anchor Positioning ist das fehlende Stück, das CSS wirklich zu einer leistungsfähigen Layout-Sprache für alle UI-Muster macht."

Die Produktivitätssteigerungen sind unbestreitbar. Entwickler sparen Stunden, indem sie keine Offsets anpassen oder Flip-Logik debuggen. Der Leistungsschub ist automatisch. Und die langfristige Wartung vereinfacht sich dramatisch.

Fazit

CSS Anchor Positioning ist keine experimentelle Funktion mehr, sondern produktionsreif. Es befähigt Frontend-Entwickler, komplexe, responsive Benutzeroberflächen mit weniger Code und besserer Leistung zu erstellen. Ob Sie ein neues Projekt starten oder eine Legacy-Codebasis warten, jetzt ist der Zeitpunkt, es zu übernehmen.

Begrüßen Sie den Wandel. Werfen Sie die JavaScript-Positionierungsschulden über Bord. Ihre Benutzer (und Ihr Bundle-Analyzer) werden es Ihnen danken.

Beginnen Sie noch heute mit der Erstellung mit DivMagic

Schließen Sie sich über 10.000 Entwicklern, Designern und Geschäftsinhabern an, um Code von jeder Website zu kopieren und ihn in ihren eigenen Projekten zu verwenden.

Get DivMagic for 42% off

Limited time deal for 22:45