CSS Diner

Os jogos salvos ficam apenas neste navegador.

Sobre o jogo

CSS Diner é um jogo de quebra-cabeça para aprender seletores CSS, a parte do CSS que diz a quais elementos de uma página web uma regra se aplica. O cenário é um restaurante: uma mesa posta com pratos, marmitas, maçãs, laranjas e picles, e cada nível é um pedido que diz algo como "selecione as maçãs pequenas" ou "selecione a maçã no prato". Você responde digitando um seletor, e os itens que ele pega começam a pular. Escolha exatamente os certos e o pedido é servido; escolha a mais ou a menos e nada acontece.

O jogo tem 32 níveis, e cada um apresenta um único tipo novo de seletor. Começa pelo básico, o nome da tag, o id e a classe, e segue para escolher coisas dentro de outras (descendentes e filhos diretos), coisas ao lado de outras (irmãos adjacentes e gerais) e vários elementos de uma vez com a vírgula e o seletor universal. A segunda metade trata de posição e estado: primeiro, último e único filho, a família nth-child com números, even e fórmulas como 2n+3, as mesmas ideias por tipo de elemento, elementos vazios, negação com :not() e seletores de atributo que casam o começo, o fim ou o meio de um valor.

Jogando aqui

Clique em Play e o primeiro pedido aparece no alto da coluna da esquerda. Digite o seletor no editor, abaixo da mesa, e aperte Enter ou clique no botão enter. O painel da direita explica o seletor que você está aprendendo, com a sintaxe e alguns exemplos, e vale a leitura quando você empaca; o link "Help, I'm stuck" à esquerda mostra uma introdução aos seletores. O HTML da mesa aparece ao lado do editor, e passar o mouse sobre um item da mesa mostra a marcação dele, que é a pista de que você precisa para escrever o seletor.

Seu progresso fica guardado no navegador, com um visto ao lado de cada nível resolvido, então dá para fechar a página e voltar depois. O jogo está só em inglês.

Controles

Entrada Ação
Teclado digitar um seletor CSS na caixa
Enter tentar o seletor
Mouse sobre um item mostra a marcação HTML dele
Setas e lista de níveis (direita) ir ao nível anterior, ao próximo ou a qualquer um já alcançado
Um número na caixa + Enter ir direto a esse nível
Esc fechar a lista de níveis

Algumas coisas que valem saber

Olhe a marcação. A mesa desenhada na tela é feita de elementos de verdade: o visualizador de HTML os lista e passar o mouse sobre um item mostra a tag e a classe dele. O seletor que você escreve é comparado com essa marcação, não com a imagem.

Mais curto também vale. Vários seletores resolvem a maior parte dos níveis. O jogo só confere se os itens que você pegou são exatamente os certos.

Posições contam de outro jeito. nth-child conta todos os filhos de um pai, enquanto nth-of-type conta só os que têm a mesma tag. Vários níveis são construídos em torno dessa diferença.

Sem pressa com a ordem. Dá para voltar a um nível resolvido e tentar outro seletor, e a lista de níveis permite pular para um assunto que você já conhece.

Créditos e licença

CSS Diner foi criado por Luke Pacholski. Ele é publicado sob a Mozilla Public License 2.0, que cobre o código, os estilos e as imagens do jogo. O jogo é servido como o autor o publicou, a não ser por algumas mudanças nossas: o analytics, os botões de compartilhamento, os links para outros sites e as fontes da web carregadas do Google foram retirados, e um pequeno script (jQuery Mousewheel) agora vem junto com o jogo em vez de ser buscado numa rede de distribuição, para que nada seja pedido a outros sites. Ele também contém jQuery, jQuery Mousewheel e a malihu custom scrollbar (licença MIT) e as fontes Exo 2 (SIL Open Font License) e Satisfy (Apache 2.0). Os textos das licenças, o fonte original e as nossas mudanças estão ligados nesta página.