Os realces coloridos que aparecem quando você pesquisa ou seleciona texto em uma página web não precisam mais ser os padrões do navegador! Com o suporte oficial do ::search-text no Chrome 144 e outros pseudo-elementos como ::selection e ::target-text, agora você tem controle total via CSS. Este guia diferencia claramente o que cada elemento seleciona e introduz técnicas de estilização práticas, pensando em acessibilidade e usabilidade. Confira mais detalhes no material de referência.

Web development code editor with CSS syntax Technical Structure Concept

Tabela Comparativa dos Pseudo-elementos de Destaque

Uma tabela rápida ajuda a esclarecer a função de cada pseudo-elemento.

Pseudo-seletorSeleciona…Observações
::search-textResultados da busca na página (Ctrl+F)::search-text:current seleciona o alvo atual
::target-textDestaques de fragmentos de texto via URLMuito usado em links de mecanismos de busca
::selectionTexto selecionado com o ponteiro
::highlight()Destaques personalizados via JavaScript API
::spelling-errorErros de ortografia (sublinhado)Principalmente em conteúdo editável
::grammar-errorErros gramaticais (sublinhado)Principalmente em conteúdo editável

Laptop displaying browser developer tools IT Technology Image

Na Prática: Estilização Flexível com Sintaxe de Cor Relativa

Se o amarelo padrão do destaque não tem contraste suficiente com o fundo da sua página, use a Sintaxe de Cor Relativa (Relative Color Syntax) para criar realces que reagem à cor de fundo. O segredo é inverter os valores dos canais RGB para garantir um contraste forte.

body {
  --background: #38003c;
  background: var(--background);
}

::selection,
::target-text,
::search-text {
  /* Faz a cor do texto combinar com o fundo */
  color: var(--background);
  /* Inverte a cor de fundo subtraindo cada canal RGB de 255 */
  background: rgb(from var(--background) calc(255 - r) calc(255 - g) calc(255 - b));
}

/* Distingue visualmente cada tipo de destaque (mantendo um canal RGB) */
::selection {
  background: rgb(from var(--background) r calc(255 - g) calc(255 - b) / 70%);
}
::target-text {
  background: rgb(from var(--background) calc(255 - r) g calc(255 - b) / 70%);
}
::search-text {
  background: rgb(from var(--background) calc(255 - r) calc(255 - g) b / 70%);
}
::search-text:current {
  background: rgb(from var(--background) calc(255 - r) calc(255 - g) b / 100%);
}

Nesse código, r, g, b representam os valores dos canais RGB da cor --background. A fórmula calc(255 - r) inverte a cor, e a opacidade (/ 70%) permite que sobreposições permaneçam distinguíveis.

Modern developer desk setup with multiple monitors Development Concept Image

Insights Principais e Considerações

A necessidade dessa estilização não é só estética — é para garantir acessibilidade (contraste de cor) e usabilidade (ênfase). Destaques como ::search-text e ::target-text representam informações que o usuário buscou ativamente, então precisam ser visualmente proeminentes.

Um alerta importante: uma cor totalmente invertida nem sempre garante bom contraste. Por exemplo, o cinza (#808080) se inverte para o mesmo cinza. Então, enquanto aguardamos futuras funcionalidades do CSS como color-contrast(), é crucial testar sempre com ferramentas de verificação de contraste de cores.

Às vezes, os destaques precisam 'chocar' funcionalmente, em vez de se harmonizar com a paleta de design. Seu trabalho principal é capturar a atenção do usuário e transmitir informações precisas. Começando com o novo ::search-text, dominar esses seletores fornecidos pelo navegador é um passo para projetar experiências de usuário melhores. Vamos lá!