CSS-Sweeper — Cuando CSS se convierte en un lenguaje de programación
¿Recuerdas cuando CSS se consideraba puramente un lenguaje de estilos? El proyecto CSS-Sweeper de PropJockey rompe con este estereotipo, demostrando que puedes implementar un juego de lógica con estado usando CSS puro. ¡Sí, un Buscaminas completamente funcional sin JavaScript!
¿Cómo funciona?
El proyecto se basa en una técnica inteligente llamada Space Toggle. La idea es que las variables CSS pueden contener un espacio (;) o el valor initial. Esto te permite crear construcciones lógicas directamente en las hojas de estilos.
Principios fundamentales de Space Toggle:
- Si una variable contiene un espacio (
--var: ;), se considera "true" - Si una variable contiene
initial(--var: initial;), es "false" - Al combinar estas variables, puedes implementar lógica AND/OR
/* Пример AND логики */
--red-if-both-true: var(--tog1) var(--tog2) red;
background: var(--red-if-both-true, blue);
Características del juego
- Gameplay completo — banderas, conteo de minas, detección de celdas vacías
- 16 niveles de dificultad — cada uno con una distribución única de minas
- Condiciones de victoria adaptadas — necesitas marcar todas las minas sin cometer errores

Detalles técnicos
El autor utilizó casillas de verificación para controlar los estados de las celdas. Al hacer clic, la casilla modifica las variables CSS, que a su vez afectan la visualización del tablero de juego. La generación de minas ocurre mediante JavaScript en tiempo de compilación, pero el juego en sí se ejecuta sin él.
// Пример генерации уровня
var levels = [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}];
levels.forEach(lvl => {
while (Object.keys(lvl).length < 99) {
var y = ~~(Math.random() * 16);
var x = ~~(Math.random() * 30);
lvl[`bomb-${y}-${x}`] = `--bomb-${y}-${x}: ; --not-bomb-${y}-${x}: initial;`;
}
});
¿Por qué necesitan esto los desarrolladores?
- Aprender las capacidades de CSS — el proyecto muestra lo que pueden lograr las tecnologías CSS modernas
- Enfoque alternativo para el estado — útil para elementos interactivos simples
- Inspiración para experimentos — ¿quién sabe qué más se puede implementar en CSS puro?
Limitaciones
Como el propio autor reconoce, el juego puede experimentar lentitud en dispositivos de bajo rendimiento — CSS no está optimizado para este tipo de cálculos. Las condiciones de victoria también están simplificadas debido a la imposibilidad de implementar la apertura recursiva de celdas sin JavaScript.
CSS-Sweeper no es solo un proyecto de demostración técnica, es un verdadero desafío a la separación tradicional entre "lógica" y "estilos". Prueba jugando tú mismo y descubre que CSS puede ser una herramienta sorprendentemente poderosa.
Para quienes quieran profundizar en Space Toggle, el autor recomienda sus otros proyectos y tweets explicativos.
Proyectos relacionados