El futuro de CSS
Las nuevas funciones de CSS, como las funciones nativas, el posicionamiento por ancla, el nesting y las capas, están provocando tanto entusiasmo como inquietud entre los desarrolladores web. Muchos celebran la posibilidad de sustituir JavaScript y los frameworks pesados por CSS “vanilla” más potente, pero otros temen que el lenguaje se esté convirtiendo en un lenguaje casi de programación, demasiado complicado, más difícil de razonar, de probar y de mantener interoperable entre navegadores, especialmente con la influencia desproporcionada de Chrome. Bajo los detalles técnicos hay una tensión más amplia sobre si la pila web debería seguir evolucionando sobre sí misma o ser reemplazada por una alternativa más simple y coherente.
Entusiasmo por el CSS moderno
- Muchos comentaristas dicen que CSS se ha vuelto un placer de usar en comparación con hace unos años.
- Las nuevas funciones (grid, flexbox, nesting,
@layer,:has(), variables,light-dark(),clamp(), etc.) hacen que el diseño de maquetación y temas sea mucho más fácil y reducen la necesidad de JavaScript. - Algunos describen cómo sustituyen una cantidad significativa de JS con CSS, y cómo construyen sitios rápidos y adaptables con una estructura HTML cuidadosa y herramientas modernas de maquetación.
Preocupaciones por la complejidad y la proliferación de funciones
- Otros sienten que CSS se está volviendo innecesariamente complejo y “parecido a un lenguaje de programación”, especialmente con funciones y una lógica condicional cada vez mayor.
- La compatibilidad hacia atrás significa que la complejidad solo puede aumentar; algunos desearían que CSS pudiera reducirse a un subconjunto más simple de “las buenas partes”.
- La cascada y la herencia siguen viéndose como problemas centrales; algunos prefieren enfoques basados en clases utilitarias o incluso tablas HTML antes que los sistemas de maquetación modernos.
Funciones, completitud de Turing y “CSS como lenguaje”
- Debate sobre si las funciones deberían formar parte de CSS:
- A favor: ideas similares ya existen en Sass; las funciones pueden reducir duplicación y complejidad, especialmente para patrones como degradados.
- En contra: riesgo de convertir CSS en un entorno de programación torpe; algunos se preocupan por la seguridad, el mantenimiento y la depuración una vez que sea claramente Turing-completo.
- Varios señalan que CSS ya es, en la práctica, un lenguaje de programación atrapado en una sintaxis antigua de hojas de estilo, sin herramientas sólidas como la comprobación estática de tipos.
CSS frente a JavaScript en las responsabilidades
- Algunos argumentan que para lógica compleja debería preferirse la integración con JS; otros responden que la evaluación de CSS es más ligera y tiene menor latencia que JS.
- Se menciona la CSS Painting API y patrones de “reactividad” basados en JS, pero también hay frustración porque la plataforma no ha ofrecido soluciones nativas y ergonómicas para interfaces de usuario con estado.
Interoperabilidad, política de navegadores y dominio de Chrome
- Discusión sobre el programa Interop: pensado para alinear los navegadores, pero muchas de las funciones mostradas son actualmente exclusivas de Chrome o primero de Chrome.
- Hay opiniones divididas sobre si Chrome está “apisonando” los estándares o si realmente está empujando la plataforma hacia delante.
Primitivas ausentes o deseadas
- Deseos comunes: mejor impresión / medios paginados, tooltips nativos de alta calidad, selects y selectores de fecha/hora personalizables, CSS con alcance, formas de esquinas/bordes más sencillas, “relative corners” automáticas.
- Algunos consideran que esto es más valioso que nuevas capacidades decorativas como estilos avanzados para esquinas.
IA y flujo de trabajo de desarrollo
- Varias personas ahora recurren a LLM para escribir o traducir CSS moderno que no entienden del todo, tratando CSS como algo que está bien siempre que rara vez se mire directamente.
- Otros advierten contra el “vibecoding” de frontends, argumentando que la interfaz de usuario visible para el usuario todavía merece un diseño cuidadoso y guiado por humanos.