Moderní tvorba webových aplikací
O webu

CSS Anchor Positioning – posicování elementů relativně k jiným

Jak pomocí anchor-name, position-anchor a funkce anchor() posicovat elementy relativně k jiným bez JavaScriptu.

6 minut

CSS Anchor Positioning je nová CSS funkce, která umožňuje posicovat elementy relativně k jiným elementům bez nutnosti JavaScriptu nebo složitých výpočtů. Hodí se pro tooltipy, popovery, kontextové nabídky, spojovací čáry mezi prvky a další UI vzory.

Základní princip

Anchor positioning zavádí tři klíčové části:

  • anchor-name – označí element jako referenční bod (kotvu)
  • position-anchor – propojí posicovaný element s kotvou
  • anchor() – funkce vracející posici hrany kotvy

Základní příklad

Kotvu definujeme pomocí anchor-name s vlastním identifikátorem (jako CSS proměnná, začíná --):

.button {
  anchor-name: --my-button;
}

.tooltip {
  position: absolute;
  position-anchor: --my-button;
  top: anchor(bottom);
  left: anchor(center);
}

Tooltip se automaticky umístí pod tlačítko a vycentruje se vůči němu. Hodnota anchor(bottom) vrací posici spodní hrany kotvy, anchor(center) vrací střed.

Tooltip pod tlačítkem

Funkce anchor()

Funkce anchor() vrací posici hrany kotvy. Syntaxe:

anchor(<anchor-name> <anchor-side>, <fallback>)
  • anchor-name – identifikátor kotvy, volitelný pokud je nastaveno position-anchor
  • anchor-sidetop, right, bottom, left, center, start, end, nebo procenta (0%–100%)
  • fallback – záložní hodnota, pokud kotva neexistuje (volitelné)

Mezi názvem kotvy a stranou je mezera, před fallbackem je čárka:

.popup {
  position: absolute;
  top: anchor(--menu-item bottom, 50%);
  left: anchor(--menu-item left);
}

Posicování k více kotvám

Element lze posicovat relativně k více kotvám současně. Každá vlastnost může odkazovat na jinou kotvu:

.connector {
  position: absolute;
  top: anchor(--start center);
  left: anchor(--start right);
  bottom: anchor(--end top);
  right: anchor(--end center);
  border: 2px solid gray;
  border-bottom: none;
  border-left: none;
}

Tímto způsobem lze vytvářet spojovací čáry mezi prvky bez JavaScriptu.

Start
End

Spojovací čára (.conn-line) se automaticky přizpůsobí posici obou boxů. Stačí změnit posici kteréhokoli z nich a čára se překreslí.

Omezení scope pomocí anchor-scope

Vlastnost anchor-scope omezuje, které elementy mohou kotvu používat. Užitečné pro komponenty s více instancemi:

.card {
  anchor-scope: --card-anchor;
}

.card .trigger {
  anchor-name: --card-anchor;
}

.card .dropdown {
  position-anchor: --card-anchor;
}

Každá karta má vlastní kotvu, kterou vidí pouze její potomci.

Zjednodušení pomocí position-area

Vlastnost position-area umožňuje umístit element do jedné z devíti oblastí kolem kotvy:

.tooltip {
  position: absolute;
  position-anchor: --trigger;
  position-area: block-end center;
}

Možné hodnoty zahrnují kombinace block-start, block-end, inline-start, inline-end, center, top, bottom, left, right.

Fallback posice

Pokud se tooltip nevejde do viewportu, lze definovat záložní posice:

.tooltip {
  position-anchor: --trigger;
  position-area: block-start center;
  position-try-fallbacks: block-end center, inline-end center;
}

Prohlížeč automaticky vybere první posici, kam se element vejde.

Praktické využití

  • Tooltipy a popovery – automatické umístění bez JS
  • Kontextové nabídky – posice relativně k triggeru
  • Spojovací čáry – visuální propojení souvisejících prvků
  • Komentáře a anotace – napojení na konkrétní části obsahu
  • Dropdown menu – přesné zarovnání pod tlačítko

Podpora v prohlížečích

Od ledna 2026 funguje CSS Anchor Positioning ve všech moderních prohlížečích (Chrome, Edge, Safari, Firefox). Pro starší prohlížeče je vhodné použít jako progresivní vylepšení nebo fallback v JavaScriptu.

Odkazy

Co si myslíte o tomto článku?

Diskuse

Související články

CSS Stacking Context – jak funguje vrstvení elementů a z-index

Jak stacking context v CSS ovlivňuje z-index, co vytváří nový kontext vrstvení a jak řešit problémy s překrýváním elementů.

7 minut

Jeden sloupec fixní, druhý proměnlivý

Jak vytvořit dvousloupcové rozvržení, kde je jeden sloupec s pevnou šířkou a druhý se přizpůsobuje šířce okna.

6 minut

Převod sloupců na procenta

Jak převést fixní sloupcové rozložení na procenta, která se budou přizpůsobovat šířce okna.

3 minuty

Části webu přes celou šířku

Jak jen některé části webu roztáhnout přes celou šířku.

3 minuty

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků · Témata · Zkratky
2013–2026