Voltar ao Blog
    UI/UX
    Frontend

    CSS Anchor Positioning Chegou ao Baseline: Hora de Apagar Sua Lib de Tooltip

    Com Firefox 147 em janeiro, CSS Anchor Positioning fechou o ciclo de interoperabilidade nos três motores. Junto com Trusted Types (Baseline em fevereiro), são duas features nativas que substituem bibliotecas inteiras.

    Publicado em ·9 min de leitura·por Bernardo Gomes

    Baseline é a forma que a web.dev e o web-platform-dx adotaram para dizer 'essa feature é segura de usar em produção sem polyfill' — Widely Available significa suporte consistente nos três motores principais por pelo menos 30 meses. Em janeiro de 2026, o Firefox 147 embarcou CSS Anchor Positioning sem flag, fechando o ciclo que Chrome e Safari já haviam completado. Resultado prático: dá pra apagar a biblioteca de posicionamento de tooltip/popover do seu bundle.

    ℹ️

    Fonte: web.dev/baseline e cobertura da comunidade sobre o Firefox 147 (lançado 13/01/2026). Cobertura estimada de ~91% dos navegadores globais em uso, segundo levantamentos de suporte publicados após o lançamento.

    O que o CSS Anchor Positioning resolve

    Antes: para posicionar um tooltip, dropdown ou popover relativo a outro elemento — inclusive com flip automático quando bate na borda da viewport — você dependia de bibliotecas como Popper.js/Floating UI, calculando posição via JavaScript a cada scroll e resize. Agora, isso é CSS puro: você ancora um elemento a outro via anchor-name e position-anchor, e o navegador cuida do posicionamento e do flip de borda nativamente, sem listener de scroll, sem reflow forçado por JS.

    css
    /* Elemento âncora */
    .botao-info {
      anchor-name: --info-anchor;
    }
    
    /* Tooltip posicionado relativo à âncora, com fallback nativo de borda */
    .tooltip {
      position: absolute;
      position-anchor: --info-anchor;
      top: anchor(bottom);
      left: anchor(center);
      position-try-fallbacks: flip-block, flip-inline;
    }

    Trusted Types: Baseline em fevereiro, DOM XSS de graça

    Trusted Types chegou ao status Baseline Newly Available em fevereiro de 2026 — um pouco menos badalado que o Anchor Positioning, mas com impacto de segurança direto. A API bloqueia, no nível do navegador, atribuições perigosas a sinks de DOM (innerHTML, document.write, eval) a menos que passem por uma política explícita — fechando de forma estrutural a classe mais comum de XSS baseado em DOM, sem depender só de escaping manual espalhado pelo código.

    • Anchor Positioning: elimina a dependência de JS para posicionar tooltips/popovers/dropdowns com flip de borda
    • Trusted Types: bloqueia sinks de DOM perigosos por política, reduzindo XSS estrutural sem reescrever toda a base de código
    • Ambos são 'newly available' — funcionam nos três motores, mas ainda vale checar a versão mínima suportada se seu público usa navegadores desatualizados
    • Nenhum dos dois exige polyfill para o caso comum; o fallback gracioso (sem posicionamento inteligente, sem bloqueio de sink) já é aceitável em navegadores muito antigos

    Quando ainda vale manter a biblioteca JS

    Se seu produto depende de suporte a navegadores legados fora da janela de Baseline, ou se você precisa de lógica de posicionamento muito além do que anchor()/position-try-fallbacks cobre (por exemplo, posicionamento relativo a múltiplas âncoras dinâmicas simultâneas), a biblioteca ainda tem lugar. Para o caso comum — 90%+ dos tooltips, dropdowns e popovers de qualquer aplicação — CSS nativo já resolve com menos JavaScript, menos reflow e menos superfície de bug.

    💡

    Audite seu bundle: se a única razão pra carregar Floating UI ou Popper é um tooltip simples, esse é o candidato mais barato de remoção de dependência que você vai encontrar este trimestre. Menos JS no caminho crítico é ganho direto de performance sem tocar em lógica de negócio.