Un DOM s'affiche, ciblez l'élément avec le sélecteur CSS le plus court : 20 défis progressifs (balises, classes, pseudo-classes et combinateurs).
CSS Selector Quest
FacilePrêt à tester vos sélecteurs CSS ?
Un DOM s'affiche — tapez le sélecteur CSS le plus court pour cibler l'élément mis en évidence. Plus votre sélecteur est précis et court, plus vous marquez de points.
Entrée — valider | Échap — effacer
Qu'est-ce que CSS Selector Quest ?
CSS Selector Quest est un jeu de logique interactif conçu pour les développeurs, les étudiants en développement web et toute personne souhaitant maîtriser les sélecteurs CSS de manière ludique et efficace. Le principe est simple mais stimulant : un arbre DOM s'affiche à l'écran, un élément est mis en évidence, et vous devez taper le sélecteur CSS le plus court qui cible uniquement cet élément.
L'originalité du jeu réside dans son système de scoring basé sur la longueur du sélecteur. Écrire a rapporte bien plus de points qu'écrire footer > nav > ul > li > a — même si les deux sont techniquement corrects. Cela pousse à développer une connaissance fine de la spécificité CSS et à identifier le sélecteur minimal qui fonctionne.
Pourquoi apprendre les sélecteurs CSS par le jeu ?
Les sélecteurs CSS sont l'un des fondements du développement front-end. On les retrouve dans les feuilles de style, dans les frameworks JavaScript (querySelector, querySelectorAll), dans les outils de test end-to-end (Cypress, Playwright), dans les scrapers web, et même dans les DevTools du navigateur. Maîtriser les sélecteurs CSS, c'est gagner en efficacité sur tous ces outils simultanément.
L'apprentissage par la pratique répétée — sous contrainte de temps et avec feedback immédiat — est scientifiquement plus efficace que la lecture passive. CSS Selector Quest crée exactement ces conditions : un problème concret, une réponse immédiate, et une pression légère qui maintient l'attention.
Guide des sélecteurs CSS couverts
Le jeu couvre 5 familles de sélecteurs, du plus simple au plus avancé. Ce guide vous servira de référence pendant les premières parties.
1. Sélecteurs simples
Ce sont les briques de base. Ils ciblent directement les éléments par leur type, leur classe ou leur identifiant.
| Syntaxe | Ce qu'il cible | Exemple |
|---|---|---|
balise | Tous les éléments de ce type | h1, p, img |
.classe | Éléments avec cette classe CSS | .lead, .active |
#id | L'élément avec cet identifiant unique | #main-nav, #logo |
2. Sélecteurs d'attribut
Ces sélecteurs ciblent les éléments selon la valeur d'un attribut HTML — une syntaxe très puissante que beaucoup de développeurs sous-utilisent.
/* Attribut avec valeur exacte */
input[type="email"] → champs email
[for="email"] → label associé au champ "email"
[data-role="admin"] → éléments avec data-role admin
[target="_blank"] → liens qui s'ouvrent dans un nouvel onglet
3. Pseudo-classes de position
Ces sélecteurs permettent de cibler un élément selon sa position parmi ses frères et sœurs dans le DOM.
| Pseudo-classe | Cible |
|---|---|
:first-child | Premier enfant de son parent |
:last-child | Dernier enfant de son parent |
:nth-child(3) | Le 3e enfant de son parent |
:not([disabled]) | Éléments qui n'ont PAS l'attribut disabled |
4. Combinateurs
Les combinateurs expriment une relation structurelle entre deux éléments dans le DOM. Ce sont les sélecteurs les plus précis pour éviter les effets de bord.
/* Descendant (n'importe où dans l'arbre) */
nav a → tous les liens à l'intérieur d'une nav
/* Enfant direct uniquement */
article > p → les <p> directement enfants d'<article>
(pas les <p> dans un div imbriqué)
/* Adjacent (immédiatement après) */
h2 + p → le premier <p> juste après un h2
> et + permettent souvent d'atteindre la cible en moins de caractères qu'un sélecteur de classe inventé. Maîtrisez-les et vous dominerez les niveaux difficiles.
5. Sélecteurs universels et héritage
Parfois, la balise seule suffit si elle est unique dans le DOM affiché. Avant de taper un sélecteur complexe, demandez-vous : "Y a-t-il un seul img dans ce DOM ? Un seul button ?" Si oui, la balise seule est le sélecteur optimal.
Système de score et stratégies
Calcul détaillé du score par round
Score = 100 (base)
+ max(0, 30 - longueur_sans_espaces) × 3 ← bonus longueur (max +90)
+ temps_restant ← bonus temps (max +30)
- tentatives_incorrectes × 15 ← pénalités
Exemple : sélecteur "a" (1 char), 25s restantes, 0 erreur
→ 100 + (30-1)×3 + 25 - 0 = 100 + 87 + 25 = 212 pts
Exemple : sélecteur "[data-role="admin"]" (17 chars), 10s restantes, 1 erreur
→ 100 + (30-17)×3 + 10 - 15 = 100 + 39 + 10 - 15 = 134 pts
Stratégies pour maximiser le score
- Testez toujours le sélecteur minimal — balise seule, classe seule — avant d'ajouter des combinateurs
- Identifiez les classes uniques dans l'arbre DOM :
.featuredou.activesont souvent les sélecteurs les plus courts pour les niveaux intermédiaires - Utilisez :first-child / :last-child plutôt que :nth-child(1) quand c'est possible (moins de caractères)
- Les attributs id sont toujours uniques —
#navest toujours plus court queheader nav.main-navigation - Ne perdez pas de temps à chercher la perfection — un sélecteur correct en 5 secondes vaut mieux que le sélecteur optimal en 28 secondes
Bénéfices cognitifs
CSS Selector Quest n'est pas qu'un exercice technique — il sollicite plusieurs compétences cognitives de haut niveau qui se transfèrent directement dans le travail de développeur.
1. Reconnaissance de patterns
Après quelques parties, le cerveau commence à associer des structures DOM typiques à leurs sélecteurs optimaux. Cette reconnaissance de patterns réduit le temps de réflexion et améliore la qualité du CSS écrit au quotidien. Les mêmes patterns réapparaissent dans les bibliothèques, les frameworks et les codebases réels.
2. Pensée analytique sous contrainte de temps
Le timer de 30 secondes crée une légère pression cognitive qui oblige à hiérarchiser l'information : "Quelle propriété de cet élément est la plus distinctive ?" Cette capacité à identifier l'essentiel rapidement est précieuse lors des sessions de debugging CSS ou d'écriture de tests end-to-end.
3. Compréhension de la structure DOM
Pour cibler correctement un élément, il faut comprendre sa position dans l'arbre — est-il un enfant direct ou un descendant indirect ? A-t-il des frères et sœurs ? Cette lecture active du DOM renforce la compréhension de la structure HTML et de la spécificité CSS, deux notions fondamentales que beaucoup de développeurs maîtrisent superficiellement.
4. Mémoire de travail et flexibilité
Trouver le sélecteur minimal implique de garder en tête simultanément plusieurs informations : la structure de l'arbre, les règles de spécificité, la syntaxe des pseudo-classes. Ce type d'exercice de mémoire de travail multi-source est un entraînement cognitif documenté.
querySelector, cy.get() (Cypress), page.locator() (Playwright), et les animations CSS avec :host et ::ng-deep. Une compétence, de multiples applications.
Questions fréquentes
Conclusion
Les sélecteurs CSS sont l'un de ces sujets qu'on croit maîtriser après avoir lu la documentation — jusqu'au jour où un sélecteur :not([disabled]) ou un article > p échappe à votre débogueur. CSS Selector Quest transforme cet apprentissage en challenge, en ajoutant la dimension du score pour rendre chaque progrès visible et motivant.
Que vous visiez à comprendre les bases ou à affûter vos réflexes pour écrire des tests Cypress plus solides, chaque partie de 20 rounds est une session d'entraînement qui paie sur le long terme. Lancez une partie dès maintenant — votre prochain querySelector sera plus précis.
Comment jouer
Le déroulement d'un défi
Les retours en temps réel