Data publikacji: 29 października 2025 r.
Od wersji Chrome 143 możesz używać zapytań o zakotwiczony kontener, aby określić, kiedy zakotwiczony element używa awaryjnego pozycjonowania zakotwiczenia. Z tego posta dowiesz się, jaki problem rozwiązuje ta funkcja.
Interfejs CSS Anchor Positioning API to zaawansowane narzędzie do przywiązywania elementu (np. wyskakującego okienka) do innego elementu (kotwicy) i definiowania zestawu alternatywnych pozycji, które są używane, gdy element nie ma wystarczająco dużo miejsca. Jeśli na przykład element zakotwiczony jest początkowo stylizowany tak, aby znajdował się u góry, ale podczas przewijania dotrze do krawędzi ekranu, przeglądarka może go „przerzucić”, aby utrzymać go w widocznym obszarze.
Poziom 1 specyfikacji pozycjonowania elementu zakotwiczonego pozostawił jednak znaczną lukę: chociaż CSS mógł przesunąć element do pozycji rezerwowej, nie miał możliwości sprawdzenia, która z nich została wybrana. Oznaczało to, że nie można było zastosować różnych stylów w zależności od ostatecznej pozycji. Jeśli etykietka zmieniła położenie z dolnego na górne, strzałka nadal będzie wskazywać w złą stronę, chyba że naprawisz to za pomocą kodu JavaScript.
Zapytania o zakotwiczony kontener (zdefiniowane w specyfikacji CSS Anchor Position Level 2) rozwiązują ten problem, zapewniając pozycjonowaniu zakotwiczenia CSS kontekstową świadomość, której brakowało.
Jak to działa: wysyłanie zapytań do zastępczych wyświetlanych ścieżek
Zapytania o kontenery zakotwiczone umożliwiają stosowanie stylów na podstawie sposobu, w jaki przeglądarka rozwiązała pozycjonowanie elementu zakotwiczonego.
Można to skonfigurować za pomocą 2 nowych funkcji CSS:
container-type: anchored: Zastosuj to do elementu z określonym położeniem (np. etykietki). W ten sposób przekształcisz go w kontener zapytania, który „wie” o stanie pozycjonowania elementu zakotwiczonego.@container anchored(fallback: ...): ta nowa składnia reguły @ pozwala sprawdzać, która opcja właściwości position-try-fallbacks została ostatecznie użyta.
Załóżmy, że chcesz umieścić etykietkę u dołu, ale w razie potrzeby ma ona być wyświetlana u góry. Ten kod:
- Początkowo próbuje umieścić
.tooltipu dołu kotwicy (--my-anchor). - Jeśli się nie mieści, element zastępczy przenosi go na górę.
- Zapytanie
@containerwykrywa tę sytuację. Gdy zostanie zastosowana najwyższa wartość rezerwowa, zapytanieanchored(fallback: top)przyjmie wartość true. - Dzięki temu możesz zmienić zawartość pseudoelementu ::before ze strzałki w górę (▲) na strzałkę w dół (▼) i dostosować jej położenie.
/* The element our tooltip is anchored to */
.anchor {
anchor-name: --my-anchor;
}
/* The positioned element (tooltip) */
.tooltip {
/* Use anchor positioning to set fallbacks */
position: absolute;
margin-top: 1rem;
position-anchor: --my-anchor;
position-area: bottom;
position-try-fallbacks: flip-block; /* Reposition in the block direction */
/* Make it an anchored query container */
container-type: anchored;
/* Add a default "up" arrow */
&::before {
content: '▲';
position: absolute;
bottom: 100%; /* Sits on top of the tooltip, pointing up */
}
}
/* Use the anchored query to check the fallback */
@container anchored(fallback: flip-block) {
.tooltip::before {
/* The 'top' fallback was used, so flip the arrow */
content: '▼';
bottom: auto;
top: 100%; /* Move the arrow below the tooltip */
}
}
Wszystko to odbywa się w całości w CSS – bez JavaScriptu, obserwatorów ani dodatkowych klas. Uwaga: jeśli używasz interfejsu API wyskakującego okienka, nie musisz jawnie nazywać elementów zakotwiczenia, ponieważ tworzona jest niejawna relacja zakotwiczenia.
Obejrzyj poniższe demo, w którym za pomocą triku z obramowaniem tworzymy trójkąt CSS, a następnie zmieniamy jego położenie za pomocą zapytań zakotwiczonych:
Podsumowanie
Zapytania zakotwiczone zapewniają przeglądarce CSS natywną świadomość bieżącej pozycji kotwicy elementu umieszczonego. Oznacza to, że możesz tworzyć znacznie bardziej odporne i uwzględniające kontekst komponenty. Strzałka w dymku to tylko jeden z przykładów. Możesz też:
- Zmień kolor tła menu, gdy jest odwrócone.
- Przesuń styl obramowania na krawędź najbliższą punktu zakotwiczenia.
- Dostosuj promień obramowania wyskakującego okienka, aby „dołączony” róg był kwadratowy.
- Animuj element w różny sposób w zależności od tego, do której pozycji rezerwowej jest on przyciągany.
To ogromna zaleta w przypadku pozycjonowania elementów zakotwiczonych i bibliotek komponentów w ogóle, ponieważ umożliwia tworzenie bardziej niezawodnych i samodzielnych elementów interfejsu z mniejszą ilością kodu.