BookinglyTech News
Software

CSS añade named-feature() para detectar comportamientos, no solo sintaxis

La propuesta permite a los navegadores declarar soporte para bugs corrigidos o nuevas interacciones entre propiedades sin recurrir a JavaScript.

2 min de lecturaDev.to0 vistas

El CSS Working Group está barajando una nueva función para @supports llamada named-feature(). A diferencia de las pruebas actuales, que verifican si un navegador puede parsear una propiedad, un valor o un selector, esta nueva forma pregunta si el motor de renderizado reconoce un comportamiento específico definido en la especificación.

El problema que resuelve es estructural. Hoy en día, dos navegadores pueden aceptar sintaxis idéntica, por ejemplo, para posicionamiento de anclas con transformaciones, pero resolverla de maneras distintas debido a bugs de interoperabilidad o falta de composición. Las pruebas estándar de @supports son ciegas ante esto porque solo evalúan la sintaxis. named-feature() permite ramificar el hojarasca sobre cómo funciona el motor, no sobre qué lee.

Una lista de palabras clave controlada

La sintaxis es mínima: @supports named-feature(single-axis-scroll-container). No hay propiedades ni valores que analizar. El navegador devuelve verdadero o falso según si reconoce ese identificador.

Bramus, quien detalla la propuesta, señala que la lista de palabras clave es intencionalmente pequeña para evitar saturar la especificación. Por ahora, solo dos candidatos están en la mesa: anchor-position-follows-transforms y single-axis-scroll-container. El grupo de trabajo solo acuñará un nombre cuando un comportamiento sea lo suficientemente relevante para ser nombrado en la spec. Esto mantiene el ruido al mínimo y reservando la función para casos donde la diferencia de comportamiento es real y medible.

Hasta ahora, los desarrolladores han tenido que recurrir a dos malas opciones para distinguir estos casos: el sniffing de user-agent, que es frágil y lento, o sondas en JavaScript que miden valores calculados en elementos ocultos y los comparan con tablas estáticas. Ambos enfoques se rompen cuando un navegador lanza una corrección y obligan a mover la lógica de ramificación fuera del CSS hacia scripts, complicando el mantenimiento.

named-feature() devuelve esa lógica al cascade, en tiempo de parseo, justo al lado de las propiedades que guarda. Es una solución nativa para una pregunta que el lenguaje no podía formular hasta ahora: no solo existe la propiedad, ¿sino que funciona como la especificación actual dice que debe?

El primitivo es simple, pero su utilidad dependerá de la agilidad del Working Group para nombrar nuevos comportamientos a medida que se resuelvan bugs de interop o aparezcan nuevas composiciones entre features existentes. Para quien escribe CSS hoy, la lección es práctica: si estás usando JavaScript para detectar capacidades de renderizado, revisa si ya existe una palabra clave para ese caso. Si no, puede ser el momento de proponer una.