Resumen
- Un borrador del W3C de febrero de 2018 ya contemplaba una pseudoclase sin nombre y sin especificidad; en noviembre apareció bautizada como
:where(). - La función conserva el filtro de elementos y aporta cero especificidad por sí misma y por sus argumentos. Lo que quede fuera de los paréntesis sigue sumando puntos.
Pongamos sobre la mesa dos líneas. a:not(:hover) quita el subrayado a los enlaces cuando el puntero no los toca. nav a quiere devolvérselo a los del menú. La segunda orden puede estar más abajo en el archivo y aun así perder: la primera contiene una pseudoclase y un elemento; la segunda, dos elementos. Antes de que alguien escriba !important como quien saca un martillo para abrir una aceituna, conviene preguntar por qué un estilo general tiene tanto poder sobre un rincón concreto.
El borrador Selectors Level 4 del 21 de noviembre de 2018 plantea precisamente este caso. Propone a:where(:not(:hover)) para la norma general. Los enlaces sin pasar el puntero siguen seleccionados. La condición de :not(:hover) deja de aportar peso porque vive dentro de :where(); el a exterior conserva el suyo. nav a gana en la barra de navegación. El autor del estilo común mantiene el comportamiento que buscaba y entrega al autor del menú el margen para corregirlo allí donde conoce mejor el contexto.
La idea llegó a la especificación antes que su nombre. El texto del 2 de febrero de 2018 mencionaba una pseudoclase del tipo :matches() con especificidad cero y dejaba el nombre pendiente. La edición de noviembre presentó :where(); el anuncio del grupo de trabajo CSS destacó tanto ese bautizo como el cambio de :matches() a :is(). No faltaba una manera de buscar elementos. Faltaba una manera de decir que encontrarlos con exactitud no daba derecho a imponerse siempre después.
Los selectores resuelven dos asuntos distintos: identificar elementos y desempatar declaraciones. :where() permite conservar el primer trabajo y reducir a cero el peso de las condiciones encerradas en la función. El borrador del 7 de mayo de 2022 lo hace visible con .qux:where(em, #foo#bar#baz): su especificidad es (0,1,0). La fila de identificadores dentro de los paréntesis puede participar en la búsqueda; la clase .qux, fuera, es lo único que pesa. El cero tiene límites claros, una virtud bastante útil cuando se escribe CSS en equipo.
Una biblioteca de interfaz puede así describir con precisión qué enlaces o controles reciben un aspecto inicial. Las páginas que usan la biblioteca no necesitan fabricar selectores cada vez más largos para cambiar un menú o un formulario. El navegador aplica un cálculo compartido, y cada autor decide cuánto peso merece su norma por defecto. Esa pequeña elección distribuye el trabajo con más sensatez que una competición de trucos de sintaxis.
El borrador del 11 de noviembre de 2022 también explica el tratamiento de listas tolerantes de selectores: ciertos elementos inválidos se descartan mientras los válidos permanecen. Es una regla de análisis concreta, no una amnistía para cualquier cosa que se escriba entre paréntesis. La cronología de publicaciones del W3C sitúa los hitos públicos entre 2018 y 2022. Al final, la lección cabe en la raya que el menú quería recuperar: la regla que sabe dónde actuar puede, voluntariamente, dejar que otra tenga la última palabra.
Informe para miembros
Contexto ampliado del perfil
Inicia sesión con el nivel de membresía adecuado para desbloquear el informe completo y las notas de las fuentes.
Solo para Strategic Circle
Strategic Circle
Abierto a todos los lectores. Desbloquea informes de perfil después de unirte e iniciar sesión.
Únete a Strategic CircleSolo para Leadership Alliance
Leadership Alliance
Para propietarios y directivos cualificados de activos de propiedad intelectual; inicia sesión para desbloquear los informes de la alianza.
Unirse a Leadership Alliance





