Este artículo explora una idea inusual: usar CSS como un lenguaje de consulta o incluso como un lenguaje de programación general, más allá de su función principal de diseñar páginas web. La pregunta central es por qué alguien querría hacer esto, dado que CSS es notoriamente complejo y existen lenguajes de consulta más adecuados como SQL. La respuesta, según el autor, es la curiosidad y la exploración: 'porque está ahí'.
El artículo desglosa los principios básicos de cómo CSS podría extenderse para lograr esto. Primero, existen 'Cosas', que son entidades o elementos, como elementos HTML. Luego, se pueden definir selectores para describir conjuntos de estas 'Cosas' con características comunes (por ejemplo, todos los elementos div, todos los elementos con una clase específica). Finalmente, se pueden aplicar reglas que asocian selectores con declaraciones, que definen acciones a realizar sobre esos conjuntos de elementos (por ejemplo, cambiar el color de texto de los elementos div con la clase 'awesome').
El artículo ilustra un caso de uso práctico: la creación de un sistema de diseño con componentes 'dark mode'. En CSS estándar, lograr estilos de foco consistentes en componentes anidados requiere reglas CSS complejas y repetitivas. El artículo introduce 'CSSLog', una versión hipotética de CSS que permitiría definir reglas recursivas y más expresivas, como la propagación de un tema 'dark' a través de elementos anidados, evitando reglas redundantes. En CSSLog, los selectores podrían modificar propiedades que a su vez afectan la coincidencia de otros selectores, permitiendo la creación de elementos y la manipulación de la estructura del DOM.
La analogía clave es con Datalog, un lenguaje de programación lógico que utiliza relaciones y reglas para definir y consultar datos. Datalog, al igual que CSSLog, permite definir relaciones y reglas que se aplican recursivamente, lo que lo hace adecuado para expresar lógica compleja. El artículo concluye que, aunque la idea de usar CSS como un lenguaje de programación general es inusual, tiene precedentes y podría abrir nuevas posibilidades para la manipulación y el diseño de interfaces web, aunque con limitaciones y posibles complicaciones.
