Resumo
- Em fevereiro de 2018, o W3C registrou a ideia de uma pseudoclasse com especificidade zero e nome ainda em aberto. Em novembro, o rascunho a chamou de
:where(). - As condições dentro da função continuam selecionando elementos, mas não somam especificidade. Classes e elementos escritos fora dos parênteses seguem pesando normalmente.
O caso começa com a:not(:hover), uma regra que remove o sublinhado de links sem o cursor do mouse por cima. O autor do menu escreve nav a para sublinhar os links de navegação. Coloca a regra depois, confere o resultado e encontra os links ainda sem traço. A pseudoclasse na primeira regra pesa mais do que o segundo nome de elemento na outra. É a hora em que um projeto costuma ganhar uma classe nova só para defender uma linha no rodapé; logo adiante aparece !important, aquele cartaz de protesto que nunca fica pequeno.
O rascunho Selectors Level 4 de 21 de novembro de 2018 apresenta a saída com economia: a:where(:not(:hover)). O filtro continua reconhecendo os mesmos links. Sua contribuição para a especificidade desaparece dentro de :where(), enquanto o a de fora ainda conta. nav a passa a vencer dentro do menu. O estilo compartilhado mantém sua intenção; a equipe que cuida da navegação ganha liberdade para ajustar aquele contexto sem enfrentar a regra geral em uma competição de comprimento.
Antes da solução ter nome, já havia uma cadeira reservada para ela. O texto de 2 de fevereiro de 2018 listava uma pseudoclasse do tipo :matches() e especificidade zero, com a denominação em aberto. A edição de novembro adotou :where(), mudança destacada pela nota da CSS Working Group. O problema nunca foi a falta de maneiras de localizar elementos. Era a dificuldade de escrever uma regra reutilizável sem lhe dar, por acidente, poder demais sobre o trabalho de quem a usaria depois.
Um seletor faz duas tarefas no mesmo fôlego: define onde a declaração se aplica e ajuda a decidir qual declaração vence quando há conflito. :where() mantém a primeira tarefa e zera a pontuação das condições guardadas dentro dele. O rascunho de 7 de maio de 2022 mostra a conta: .qux:where(em, #foo#bar#baz) tem especificidade (0,1,0). Os IDs dentro da função podem ser úteis para o filtro, mas não sobem no pódio. A classe .qux, do lado de fora, continua valendo. É uma fronteira clara entre escolher bem e mandar muito.
Essa fronteira interessa a bibliotecas de componentes. Um estilo inicial pode encontrar controles específicos sem obrigar cada página a produzir um seletor mais armado para mudar uma cor, um sublinhado ou uma borda. O navegador executa a aritmética comum; a biblioteca decide deixar o padrão leve; o produto escolhe a aparência adequada à sua tela. A adoção de um componente deixa de vir acompanhada de uma dívida de especificidade.
O rascunho de 11 de novembro de 2022 descreve ainda listas tolerantes de seletores: itens inválidos podem ser descartados enquanto os válidos permanecem. É uma regra delimitada de análise da sintaxe. A história de publicações do W3C situa os marcos de 2018 e 2022. A ideia continua cabendo no pequeno sublinhado do menu: uma regra compartilhada pode reconhecer o lugar certo e, com toda a educação, deixar a decisão final para quem está ali.
Briefing para membros
Contexto aprofundado do perfil
Faça login com o nível de assinatura correto para desbloquear o briefing completo e as notas das fontes.
Apenas para Strategic Circle
Strategic Circle
Aberto a todos os leitores. Desbloqueie Briefings de perfil após se inscrever e fazer login.
Junte-se ao Strategic CircleSomente para Leadership Alliance
Leadership Alliance
Para proprietários e gestores qualificados de ativos de PI; faça login para desbloquear os briefings da Leadership Alliance.
Junte-se ao Leadership Alliance





