CSS-Sweeper — Quando CSS se Torna uma Linguagem de Programação
Lembra quando CSS era considerado puramente uma linguagem de estilização? O projeto CSS-Sweeper de PropJockey quebra esse estereótipo, demonstrando que você pode implementar um jogo de lógica com estado usando CSS puro. Sim, é um Campo Minado totalmente funcional sem JavaScript!
Como funciona?
O projeto é construído sobre uma técnica inteligente chamada Space Toggle. A ideia é que variáveis CSS podem conter um espaço (;) ou o valor initial. Isso permite criar construções lógicas diretamente em folhas de estilo.
Princípios fundamentais do Space Toggle:
- Se uma variável contém um espaço (
--var: ;), é considerada "verdadeira" - Se uma variável contém
initial(--var: initial;), é "falsa" - Combinando essas variáveis, você pode implementar lógica AND/OR
/* Пример AND логики */
--red-if-both-true: var(--tog1) var(--tog2) red;
background: var(--red-if-both-true, blue);
Recursos do jogo
- Jogabilidade completa — bandeiras, contagem de minas, detecção de células vazias
- 16 níveis de dificuldade — cada um com um layout único de minas
- Condições de vitória adaptadas — você precisa marcar todas as minas sem cometer erros

Detalhes técnicos
O autor usou checkboxes para controlar os estados das células. Quando clicado, o checkbox muda as variáveis CSS, que por sua vez afetam a exibição do tabuleiro do jogo. A geração de minas acontece via JavaScript no momento da construção, mas o jogo em si roda sem ele.
// Пример генерации уровня
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 que os desenvolvedores precisam disso?
- Aprendendo capacidades do CSS — o projeto mostra do que tecnologias CSS modernas são capazes
- Abordagem alternativa para estado — útil para elementos interativos simples
- Inspiração para experimentos — quem sabe o que mais pode ser implementado em CSS puro?
Limitações
Como o próprio autor reconhece, o jogo pode ter lentidão em dispositivos de baixa potência — CSS não é otimizado para tais cálculos. As condições de vitória também são simplificadas devido à incapacidade de implementar abertura recursiva de células sem JavaScript.
CSS-Sweeper não é apenas um projeto de demonstração técnica, é um verdadeiro desafio à separação tradicional entre "lógica" e "estilos". Tente jogar você mesmo e veja que CSS pode ser uma ferramenta surpreendentemente poderosa!
Para quem quer se aprofundar no Space Toggle, o autor recomenda seus outros projetos e tweets explicativos.
Projetos relacionados