CSS Houdini


CSS Houdini es un conjunto de APIs experimentales que permiten a los desarrolladores interactuar directamente con el motor de renderizado de CSS en los navegadores. Su objetivo es abrir la “caja negra” de CSS, permitiendo crear nuevas propiedades, efectos visuales y comportamientos que antes solo eran posibles mediante hacks o esperando soporte nativo.

¿Para qué sirve Houdini?

  • Crear propiedades CSS personalizadas que el navegador entiende y procesa como nativas.
  • Definir animaciones y layouts avanzados con mejor rendimiento.
  • Extender el CSS con nuevas capacidades sin esperar a que los navegadores las implementen oficialmente.

APIs principales de Houdini

  • Paint API: Permite dibujar gráficos personalizados como fondos, bordes o decoraciones usando JavaScript, pero integrados en el flujo de CSS.
  • Layout API: Permite definir nuevos modelos de layout (como un nuevo tipo de grid o masonry) desde JavaScript.
  • Properties & Values API: Permite registrar nuevas propiedades CSS con tipos, herencia y animaciones personalizadas.
  • Typed OM: Proporciona una forma eficiente y tipada de manipular valores CSS desde JavaScript.

Ejemplo básico: Paint Worklet

// archivo paint.js
registerPaint('circulos', class {
  paint(ctx, geom, properties) {
    ctx.fillStyle = '#4f46e5';
    for (let i = 0; i < 10; i++) {
      ctx.beginPath();
      ctx.arc(Math.random() * geom.width, Math.random() * geom.height, 10, 0, 2 * Math.PI);
      ctx.fill();
    }
  }
});
/* En tu CSS */
div {
  background: paint(circulos);
}

Estado actual

Houdini aún no está soportado en todos los navegadores y muchas APIs son experimentales. Sin embargo, representa el futuro de la extensibilidad en CSS y permite a los desarrolladores adelantarse a las capacidades nativas.