---
title: "Les signaux de danger : le triangle qui te prévient 150 mètres avant"
canonical: "https://permis-online.be/cours/theorique/signaux-de-danger/"
source: "https://permis-online.be/cours/theorique/signaux-de-danger/"
author: "Wenceslas Dasnois"
author_role: "Fondateur de Permis Online"
author_credentials: "Fondateur de l'Observatoire du Permis Belge (vérification des statistiques officielles du permis, 3 régions)"
publisher: "Permis Online"
published: "2026-07-09"
modified: "2026-07-12"
language: "fr"
word_count: 3130
---

# Les signaux de danger : le triangle qui te prévient 150 mètres avant

> **Summary:** Triangle rouge = danger annoncé environ 150 m plus loin. Apprends à reconnaître chaque signal de danger belge et la bonne réaction pour l'examen théorique.

---

Les chapitres du cours[0Sommairevue d’ensemble](/cours/theorique/)[1Introduction1 leçon](/cours/theorique/introduction/)[2Les panneauxTu es ici](/cours/theorique/signaux-de-danger/)[3Les usagers4 leçons](/cours/theorique/pietons/)[4Le marquage routier au sol3 leçons](/cours/theorique/lignes-continues-discontinues/)[5Arrêt et stationnement2 leçons](/cours/theorique/arret-ou-stationnement/)[6La vitesse2 leçons](/cours/theorique/limitations-de-vitesse/)[7Les contraventions2 leçons](/cours/theorique/degres-infractions/)[8La voie publique8 leçons](/cours/theorique/chaussee-trottoir-accotement/)[9Croisement et dépassement4 leçons](/cours/theorique/croisement/)[10Les règles de priorité1 leçon](/cours/theorique/regles-de-priorite/)[11L'environnement2 leçons](/cours/theorique/environnement-meteo/)[12Équipements & mécaniques6 leçons](/cours/theorique/types-de-vehicules/)[13Éclairage & visibilité1 leçon](/cours/theorique/eclairage-et-visibilite/)[14Les accidents3 leçons](/cours/theorique/en-etat-de-conduire/)[15Les agents qualifiés1 leçon](/cours/theorique/agents-qualifies/)[16Préparer ton examen1 leçon](/cours/theorique/preparer-ton-examen/)[Voir tout le sommaire →](/cours/theorique/)[0Sommairevue d’ensemble](https://permis-online.be/cours/tpr/)[1Le test décodé3 leçons](/cours/tpr/le-tpr-c-est-quoi/)[2Ton centre, ta région, ton jour J4 leçons](/cours/tpr/passer-le-test-a-bruxelles/)[3Les risques à identifier5 leçons](/cours/tpr/c-est-quoi-un-risque/)[4La stratégie de réussite3 leçons](/cours/tpr/strategie-des-10-clics/)[Voir tout le sommaire →](https://permis-online.be/cours/tpr/)[0Sommairevue d’ensemble](https://permis-online.be/cours/pratique/)[1Ton plan de bataille4 leçons](/cours/pratique/filiere-libre-ou-auto-ecole/)[2Les manœuvres qui tombent vraiment4 leçons](/cours/pratique/controles-prealables/)[3Les minutes de conduite qui décident de tout5 leçons](/cours/pratique/ton-examen-minute-par-minute/)[4Gagner le jour J (et après)3 leçons](/cours/pratique/stress-jour-j/)[Voir tout le sommaire →](https://permis-online.be/cours/pratique/)Les panneaux1Les signaux de danger : le triangle qui te prévient 150 mètres avantTu es ici[2Céder, s'arrêter, passer : les signaux de priorité sans hésiter8 min](/cours/theorique/signaux-de-priorite/)[3Les signaux d'interdiction : ce rond rouge te dit non (et jusqu'où)8 min](/cours/theorique/signaux-interdiction/)[4Rond bleu, ordre clair : les signaux d'obligation6 min](/cours/theorique/signaux-obligation/)[5Arrêt ou stationnement interdit ? La nuance qui sauve des points8 min](/cours/theorique/signaux-arret-stationnement/)[6Les signaux d'indication : la plus grande famille, apprivoisée par groupes8 min](/cours/theorique/signaux-indication/)[7Feux lumineux : rouge, vert, orange et tous leurs pièges8 min](/cours/theorique/feux-lumineux/)[8Panneaux additionnels : les petits panneaux qui changent tout8 min](/cours/theorique/panneaux-additionnels/)[9Signaux à validité zonale : ce qui change quand tu entres dans une zone7 min](/cours/theorique/signaux-validite-zonale/)GARANTIE·41/50
## Ton examen théorique, réussi. C’est garanti.

On ne te vend pas des questions : on s’engage sur ta réussite. Tu suis la méthode, tu réussis ; sinon, ton examen t’est remboursé.

4,6/5 sur Google+100 000 inscritsRéussi, ou ton examen théorique remboursé.Termine le cours, valide les examens blancs, réussis 5 simulations : soit tu réussis, soit on te rembourse ton passage.Réussite garantie
### Simulations d’examen

Tu ne t’inscris pas pour t’entraîner : tu t’inscris pour réussir. L’examen blanc de chaque chapitre, les vraies simulations du jour J, et ta réussite garantie au bout.

9,99 €/sem.***1500 questions différentes**Mises à jour selon l’examen officiel**15 examens blancs + simulations complètes**Un par chapitre, puis le format exact du jour J : 50 questions, 41/50**Corrections & explications**Comprends chaque erreur[Je réussis mon examen](https://belgique.permis.online/commande/?add-to-cart=19749113)Accès immédiat · ta réussite est garantie* Accès hebdomadaire flexible : tu l’adaptes ou l’arrêtes quand tu veux, en deux clics, depuis ton espace membre.

Meilleur choix · Tout inclus
### Premium : Tout inclus

La réussite garantie de ton examen théorique et de ton test de perception des risques, plus tout le reste : parcours pratique, moniteur. Ton permis de A à Z.

119,88 €24,99 €/mois*−79%**Tous les modules inclus**Examens blancs, simulations, perception des risques, parcours pratique**Fonctionnalités IA avancées**Révision personnalisée et intelligente**Accompagnement par un moniteur agréé**Un vrai moniteur te suit sur toute la plateforme[Je réussis tout, de A à Z](https://belgique.permis.online/commande/?add-to-cart=19702281)Jusqu’à 79 % d’économie · tout débloqué* Économie calculée face à l’achat séparé des 3 modules à 9,99 €/sem. (≈ 119,88 €/mois). Accès mensuel flexible : tu peux l’arrêter à tout moment depuis ton espace membre.

La garantie « réussi ou remboursé », concrètement(Offres Simulations et Premium) : termine les 50 leçons du cours, valide les 15 examens blancs et réussis au moins 5 simulations (41 sur 50 ou plus), en étudiant sur au moins 5 jours et avec ton accès actif le jour de ton examen théorique. Si tu échoues quand même, on te rembourse ton passage au prix officiel de ta région, sur preuve d’échec, une fois par personne.Sans engagement · accès immédiat
# Les signaux de danger : le triangle qui te prévient 150 mètres avant

**7 min** de lectureChapitre : **Les panneaux**Gratuit, sans inscriptionMis à jour en **septembre 2026**Pas envie de lire ? Écoute le résumé

L’essentiel en 30 secondes- **Triangle à bord rouge** sur fond blanc = danger annoncé.
- Le danger se trouve **environ 150 m plus loin** (sauf passages à niveau).
- Panneau placé **à droite** en général.
- Ta réaction : **ralentir** et adapter ta conduite à la météo, à la luminosité et à l’état de la route.
- Exceptions de forme : les panneaux de **passage à niveau**.

Les panneaux un par un, les images et les pièges : c’est juste en dessous.

**150 mètres. C’est l’avance que la route te donne.** Un triangle à bord rouge surgit sur le bas-côté, et environ 150 mètres plus loin, un virage serré, une chaussée glissante ou une intersection compliquée t’attend. Ceux qui savent lire ces triangles ne sont jamais pris de court : ni sur la route, ni devant une question d’examen. Dans 7 minutes, tu en fais partie.

## À quoi ressemble un signal de danger ?

**Définition.** Un signal de danger est un panneau **triangulaire à bord rouge sur fond blanc** qui annonce un **danger potentiel** sur la route, environ 150 m plus loin. Deux exceptions de forme : les panneaux annonçant un **passage à niveau** à voie unique ou à plusieurs voies.Tu les as déjà croisés des centaines de fois sans forcément les décoder : un triangle, un bord rouge, un fond blanc, un pictogramme au centre. Chaque pictogramme annonce un problème précis qui arrive : un virage dangereux, une intersection compliquée, une route glissante. Le message est toujours le même : sois prudent, quelque chose t’attend un peu plus loin.

Côté placement, ces signaux sont **généralement placés à droite** de la route, sauf si la configuration des lieux ne le permet pas.

**Aide-mémoire.** Le trio à retenir : **triangle + bord rouge = danger** ; environ **150 m** avant l’endroit dangereux (sauf passages à niveau) ; placé **à droite** en général.
## À quelle distance du danger le panneau est-il placé ?

Retiens le chiffre une bonne fois pour toutes : le signal de danger est placé à **environ 150 mètres avant l’endroit dangereux**. Une seule exception à cette règle de distance : **les passages à niveau**, qu’on garde pour la fin de la leçon.

Le mot « environ » a son importance : la distance est approximative, pas mesurée au mètre près. Ces 150 mètres, c’est la marge que la route te donne pour ralentir avant d’arriver sur le problème.

Vite : un triangle à bord rouge annonce un danger. Il se trouve en général à quelle distance ?

## Comment je dois réagir quand j’en vois un ?

Prenons l’exemple le plus classique : le **virage dangereux à gauche**. Ce signal t’indique qu’un virage dangereux à gauche va suivre dans approximativement 150 mètres. Ta réaction : **ralentir** et adopter une conduite prudente pour prévenir tout accident.

![Signal de danger annonçant un virage dangereux à gauche, en situation réelle sur une route de campagne](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a1a-situation-reelle.jpg)

*Le virage dangereux à gauche : annoncé environ 150 m avant, à toi de ralentir.*

Ralentir, oui, mais de combien ? Ça dépend de tout ce qui t’entoure. Tu adaptes ta vitesse :

- aux **conditions météo** : pluie, neige, brouillard ;
- à la **luminosité** : nuit, aurores, soirée ;
- à l’**état de la route** : dénivellations, mauvais état du carrossable, substances sur la chaussée.

La règle d’or : **plus les risques sont nombreux, plus tu diminues ta vitesse et plus tu augmentes ton attention**. Et garde un œil sur les autres usagers : voitures, camions, piétons et cyclistes constituent autant de risques supplémentaires.

**À l’examen.** Les questions sur un signal de danger tournent toujours autour des mêmes angles : sa **signification**, la **distance** (environ 150 m) et la **réaction attendue** (ralentir, adapter la vitesse aux conditions). Si tu sais répondre à ces trois questions pour chaque triangle, tu es paré.![Wenceslas Dasnois](https://permis-online.be/wp-content/uploads/2026/02/wen_80x80.png)

Mon astucePour chaque triangle, pose-toi trois questions : il annonce quoi, à quelle distance, et qu’est-ce que je change dans ma conduite. Si tu réponds aux trois, aucune question d’examen sur ce panneau ne peut te surprendre.

[Wenceslas Dasnois](/auteur/wenceslas-dasnois/) · Fondateur de Permis Online

## Virages, pentes et surprises de la chaussée

Premier groupe de triangles : ceux qui parlent de la route elle-même, de son tracé et de son revêtement. Au programme :

- **Virage dangereux** à droite ou à gauche ;
- **Double virage ou succession de plus de deux virages**, dont le premier est à gauche ou à droite ;
- **Descente dangereuse** et **montée à forte inclinaison** ;
- **Rétrécissement de la chaussée** ;
- **Pont mobile** et **débouché sur un quai ou une berge** ;
- **Cassis ou dos d’âne** et **dispositif(s) surélevé(s)** ;
- **Chaussée glissante**, **projection de gravillons**, **chutes de pierres**.

![Signal de danger : virage dangereux à droite](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a1b-officiel.png)

*Virage dangereux à droite : attention et conduite adaptée.*

![Signal de danger : double virage ou succession de virages dont le premier est à gauche](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a1c-officiel.png)

*Double virage ou succession de plus de deux virages, dont le premier est à gauche.*

**Piège classique.** Double virage : c’est le **premier virage dessiné** qui compte. Deux panneaux quasi identiques existent : l’un annonce que le premier virage est à gauche, l’autre à droite. Vérifie toujours le sens du premier virage avant de répondre.![Signal de danger : descente dangereuse](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a3-officiel.png)

*Descente dangereuse : un classique des questions de réaction.*

![Signal de danger : chaussée glissante](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a15-officiel.png)

*Chaussée glissante : encore plus sérieux sous la pluie ou la neige.*

Descente dangereuse + pluie battante. Tu fais quoi ?

## Piétons, enfants, animaux, travaux : qui peut surgir ?

Deuxième groupe : les triangles qui annoncent que quelqu’un, ou quelque chose, peut surgir sur ta trajectoire :

- **Passage pour piétons** ;
- **Endroit fréquenté par des enfants** ;
- **Passage pour bicyclettes et cyclomoteurs à deux roues**, ou endroit où ils débouchent d’une piste cyclable sur la chaussée ;
- **Traversée de gros gibier** et **traversée de bétail** ;
- **Travaux** ;
- **Signaux lumineux de circulation** ;
- **Survol d’avions à basse altitude** et **vent latéral** ;
- **Circulation dans les deux sens** après une section à sens unique.

![Signal de danger annonçant un passage pour piétons](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a21-officiel.png)

*Annonce d’un passage pour piétons : le triangle prévient, le panneau bleu F49 marque le passage lui-même.*

![Signal de danger : endroit fréquenté par des enfants](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a23-officiel.png)

*Endroit fréquenté par des enfants : ralentis et redouble d’attention.*

![Signal de danger : traversée de gros gibier](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a27-officiel.png)

*Traversée de gros gibier : un animal peut débouler à tout moment.*

![Signal de danger : travaux](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a31-officiel.png)

*Travaux : ralentis et adapte ta conduite.*

![Signal de danger : circulation admise dans les deux sens](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a39-officiel.png)

*Circulation dans les deux sens : la fin du sens unique, on peut désormais arriver en face.*

Face à chacun de ces panneaux, même logique que pour le virage : tu ralentis, tu observes, et tu te tiens prêt à réagir à ce que le pictogramme annonce.

## Passages à niveau : les triangles qui changent de forme

Les passages à niveau cumulent les deux exceptions de la famille. D’abord la distance : la règle des 150 mètres **ne s’applique pas** aux passages à niveau. Ensuite la forme : deux panneaux de cette série abandonnent carrément le triangle.

En version triangle classique, tu trouves le **passage à niveau avec barrières** et le **passage à niveau sans barrières**.

![Signal de danger : passage à niveau avec barrières](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a41-officiel.png)

*Passage à niveau avec barrières : la barrière à claire-voie dans le triangle.*

![Signal de danger : passage à niveau sans barrières](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a43-officiel.png)

*Passage à niveau sans barrières : la locomotive dans le triangle. Rien ne s’abaissera pour t’arrêter.*

Puis viennent les deux exceptions de forme : le **passage à niveau à voie unique** et le **passage à niveau à deux ou plusieurs voies**. Là, plus de triangle du tout : la silhouette du panneau change complètement.

![Croix de Saint-André : passage à niveau à voie unique](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a45-officiel.png)

*Voie unique : la croix de Saint-André remplace le triangle.*

![Croix de Saint-André à deux croisillons : passage à niveau à deux ou plusieurs voies](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a47-officiel.png)

*Deux ou plusieurs voies : la croix se dédouble. Un train peut en cacher un autre.*

Tous les signaux de danger sont triangulaires ?

Dernière paire à connaître : à gauche sur l’image ci-dessous, le signal de **croisement de la chaussée par une ou plusieurs voies ferrées établies sur la chaussée** ; à droite, le signal de **danger non défini par un symbole spécial**, accompagné d’un panneau additionnel qui indique la nature du danger.

![À gauche, croisement de la chaussée par une ou plusieurs voies ferrées ; à droite, danger non défini par un symbole spécial](/wp-content/plugins/po-permis-cours/assets/cours/lecons/signaux-de-danger/a49-a51-officiel.png)

*À gauche : voies ferrées sur la chaussée. À droite : danger non défini, précisé par un panneau additionnel placé dessous.*

**Piège classique.** Le triangle **sans symbole spécial** n’est pas une erreur d’impression : il annonce un **danger non défini**, et c’est le **panneau additionnel** placé en dessous qui te dit de quoi il s’agit.Tu sais maintenant lire tous les triangles de la route. Prochaine étape logique : savoir **qui passe en premier** quand plusieurs conducteurs arrivent au même endroit. C’est tout l’enjeu de la leçon suivante, **Les signaux de priorité**.

Les panneaux de cette leçon*Ton mémo de révision : la forme + la signification, avant le quiz*30![Signal A1a : Virage dangereux vers la gauche](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a1a.png?v=1786785498)**A1a**Virage dangereux vers la gauche![Signal A1c : Double virage, le premier à gauche](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a1c.png?v=1786785498)**A1c**Double virage, le premier à gauche![Signal A3 : Descente dangereuse](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a3.png?v=1786785498)**A3**Descente dangereuse![Signal A15 : Chaussée glissante](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a15.png?v=1786785498)**A15**Chaussée glissante![Signal A21 : Annonce d'un passage pour piétons](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a21.png?v=1786785498)**A21**Annonce d'un passage pour piétons![Signal A23 : Endroit spécialement fréquenté par des enfants](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a23.png?v=1786785498)**A23**Endroit spécialement fréquenté par des enfants![Signal A27 : Traversée de gros gibier](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a27.png?v=1786785498)**A27**Traversée de gros gibier![Signal A31 : Travaux](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a31.png?v=1786785498)**A31**Travaux![Signal A39 : Circulation admise dans les deux sens](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a39.png?v=1786785498)**A39**Circulation admise dans les deux sens![Signal A43 : Passage à niveau sans barrières](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a43.png?v=1786785498)**A43**Passage à niveau sans barrières![Signal A45 : Croix de Saint-André : voie ferrée unique](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a45.png?v=1786785498)**A45**Croix de Saint-André : voie ferrée unique![Signal A47 : Croix de Saint-André : deux voies ou plus](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a47.png?v=1786785498)**A47**Croix de Saint-André : deux voies ou plus![Signal A49 : Traversée de la chaussée par des trams](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a49.png?v=1786785498)**A49**Traversée de la chaussée par des trams![Signal A51 : Danger non défini par un symbole](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a51.png?v=1786785498)**A51**Danger non défini par un symbole![Signal A1b : Virage dangereux vers la droite](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a1b.png?v=1786785498)**A1b**Virage dangereux vers la droite![Signal A1d : Double virage, le premier à droite](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a1d.png?v=1786785498)**A1d**Double virage, le premier à droite![Signal A5 : Montée à forte inclinaison](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a5.png?v=1786785498)**A5**Montée à forte inclinaison![Signal A7a : Rétrécissement de la chaussée](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a7a.png?v=1786785498)**A7a**Rétrécissement de la chaussée![Signal A9 : Pont mobile](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a9.png?v=1786785498)**A9**Pont mobile![Signal A11 : Débouché sur un quai ou une berge](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a11.png?v=1786785498)**A11**Débouché sur un quai ou une berge![Signal A13 : Cassis ou dos d'âne](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a13.png?v=1786785498)**A13**Cassis ou dos d'âne![Signal A14 : Dispositif surélevé](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a14.png?v=1786785498)**A14**Dispositif surélevé![Signal A17 : Projection de gravillons](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a17.png?v=1786785498)**A17**Projection de gravillons![Signal A19 : Chutes de pierres](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a19.png?v=1786785498)**A19**Chutes de pierres![Signal A25 : Passage pour bicyclettes et cyclomoteurs](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a25.png?v=1786785498)**A25**Passage pour bicyclettes et cyclomoteurs![Signal A29 : Traversée de bétail](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a29.png?v=1786785498)**A29**Traversée de bétail![Signal A33 : Annonce de signaux lumineux tricolores](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a33.png?v=1786785498)**A33**Annonce de signaux lumineux tricolores![Signal A35 : Survol d'avions à basse altitude](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a35.png?v=1786785498)**A35**Survol d'avions à basse altitude![Signal A37 : Vent latéral](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a37.png?v=1786785498)**A37**Vent latéral![Signal A41 : Passage à niveau avec barrières](https://permis-online.be/wp-content/plugins/po-permis-cours/assets/cours/signaux/a41.png?v=1786785498)**A41**Passage à niveau avec barrièresReproductions officielles des signaux routiers belges. Chaque signal est expliqué en détail dans sa leçon du chapitre 2 du [cours théorique](/cours/theorique/#chapitre-2).`; } class Instance { constructor(el, opts) { this.el = el; this.phase = opts.phase || "complet"; this.tool = opts.tool || (this.phase === "atelier" ? "familles" : "decodeur"); this.store = this.tool === "familles" ? STORE_FAM : STORE_DEC; this.nom = this.tool === "familles" ? "Les familles" : "Le Décodeur"; this.base = (opts.base || "./decodeur").replace(/\/$/, ""); this.leconId = opts.lecon; this.pack = null; this.view = "boot"; this.held = null; this.syncEv = this.tool === "familles" ? "po-familles:sync" : "po-decodeur:sync"; this._onSync = (e) => { if (e.detail.id === this.leconId) this.onSync(e.detail.state); }; bus.addEventListener(this.syncEv, this._onSync); } frame(it) { return ` ${it.signal ? root.POSignaux.render(it.signal) : ""} ${it.signalSous ? root.POSignaux.render(it.signalSous) : ""} `; } start() { this.el.classList.add("pod"); if (this.tool === "familles") this.el.classList.add("pod-familles"); this.el.setAttribute("data-decodeur-root", "1"); if (root.POSignaux) root.POSignaux.base = root.PO_DECODEUR_BASE || ""; this.el.innerHTML = `${plate({ chapitre: "…" }, "Chargement")}On prépare ta cabine.

`; this.pack = (root.PO_DECODEUR_PACKS || {})[this.leconId]; if (!this.pack) { this.el.innerHTML = `Impossible de charger cette leçon.

`; return; } if (!this._bound) { this._bound = true; this.el.addEventListener("click", (e) => this.onClick(e)); this.el.addEventListener("dragstart", (e) => { if (e.target.closest(".pod-screen, .pod-booth")) e.preventDefault(); }); } this.etape = "intro"; this.ignoreUntil = 0; this.route(); } state() { return loadState(this.store, this.pack.id); } route() { const st = this.state(); const phase = this.phase; if (phase === "atelier") return this.beginAtelier(); if (phase === "avant") { if (st.avant && st.avant.done) return this.renderAvantDone(st); return this.beginSerie("avant"); } if (phase === "suite") { if (!(st.avant && st.avant.done)) return this.renderWaitAvant(); if (!(st.apres && st.apres.done)) return this.beginSerie("apres"); return this.renderFiche(st); } if (st.avant && st.avant.done && st.apres && st.apres.done) { return this.renderFiche(st); } if (!(st.avant && st.avant.done)) return this.beginSerie("avant"); return this.beginSerie("apres"); } onSync() { if (this.locked && this.view !== "wait-avant" && this.view !== "avant-done" && this.view !== "fiche") return; if (this.phase === "suite" && (this.view === "wait-avant" || this.view === "fiche" || this.view === "boot")) this.route(); if (this.phase === "avant" && (this.view === "avant-done" || this.view === "boot")) this.route(); } beginSerie(which) { const items = this.pack.map((it) => ({ ...it, choices: shuffle(it.choices), })); this.serie = { which, items, index: 0, results: [], times: [], started: 0, }; this.view = which; if (which === "avant") this.renderIntroAvant(); else this.renderIntroApres(); } teaserSign() { const first = (this.pack.avant && this.pack.avant) || {}; return first.signal ? root.POSignaux.render(first.signal) : ""; } booth(inner, extra = "") { return `Centre d’examen · BelgiqueCabine 12${inner} ${extra} `; } renderIntroAvant() { this.etape = "intro"; const p = this.pack; this.el.innerHTML = `  ${this.booth( `${this.teaserSign()}
## T’as déjà l’œil ?
Ou tu crois l’avoir.

${p.promesse} Trois images, trois secondes chacune, comme si l’écran du centre venait de s’allumer. Pas de piège pour l’instant : on mesure juste d’où tu pars.

`, `3 secondes · 3 images` )} `; } renderIntroApres() { this.etape = "intro"; const st = this.state(); const a = st.avant || { score: 0, total: 3 }; this.el.innerHTML = `  ${this.booth( `${this.teaserSign()}
## On remesure ton œil.

Tout à l’heure : **${a.score}/${a.total}**. Maintenant, les pièges de cette leçon : la bande, le mot « panneau », la forme, le petit en dessous.

`, `3 secondes · les pièges` )} `; } renderWaitAvant() { this.view = "wait-avant"; this.el.innerHTML = ` ${plate(this.pack, "En attente")} Deuxième passage

## D’abord les 3 flashes, en haut de la leçon.

Sans le point de départ, on ne peut pas te montrer ce que la leçon a changé. Fais-les (moins d’une minute), puis reviens ici.

`; } renderAvantDone(st) { this.view = "avant-done"; const a = st.avant; const msg = a.score <= 1 ? "Normal. Tu n’avais pas encore la méthode. Lis la leçon en pensant forme + couleur, puis redescends." : a.score === a.total ? "L’œil est déjà là. Lis quand même : les pièges de cette leçon ne sont pas dans ces 3 images." : "Pas mal. La leçon va transformer tes hésitations en réflexe. On se retrouve en bas."; this.el.innerHTML = ` ${plate(this.pack, "À toi de lire")} Départ enregistré · ${a.score}/${a.total}

## Lis la leçon. Ton 2e passage t’attend plus bas.

${msg}

- Temps moyen **${fmtSec(avg(a.times))}**
- Prochaine étape : l’atelier, puis les pièges

`; } startFlash() { this.etape = "flash"; this.showItem(); } current() { return this.serie.items[this.serie.index]; } showItem() { const it = this.current(); const n = this.serie.items.length; const i = this.serie.index; const reduce = root.matchMedia("(prefers-reduced-motion: reduce)").matches; const label = this.serie.which === "avant" ? "Avant la leçon" : "Après la leçon"; if (!it) { this.finishSerie(); return; } if (it.type === "piege") { this.etape = "question"; this.serie.started = performance.now(); this.el.innerHTML = ` ${plate(this.pack, "Les pièges")} Piège de l’examen · ${i + 1}/${n}

 ${progressDots(n, i, this.serie.results)} ${this.frame(it)} ${it.situation ? `${it.situation}

` : ""} ${it.question}

${this.choicesHtml(it)}`; return; } this.etape = "flash"; this.el.innerHTML = `  ${progressDots(n, i, this.serie.results)} ${this.booth( `3`, `Regard 3,0 s` )} ${it.situation ? `${it.situation}

` : ""} Regarde. Ne cherche pas le détail : forme et couleur d’abord.

`; if (reduce) { this.revealSign(it, 0); return; } this.countIn(it); } countIn(it) { const count = $(this.el, ""); let n = 3; const tick = () => { if (!count) return; if (n <= 0) { this.revealSign(it, FLASH_MS); return; } count.textContent = String(n); n -= 1; this._t = setTimeout(tick, 480); }; tick(); } revealSign(it, ms) { const screen = $(this.el, ""); const hint = $(this.el, ""); if (!screen) return; screen.innerHTML = `${this.frame(it)}`; const bar = $(this.el, ""); if (bar && ms) bar.classList.add("run"); if (!ms) { this.etape = "question"; this.ignoreUntil = performance.now() + 400; this.serie.started = performance.now(); this.showQuestion(it, false); return; } const clock = $(this.el, ""); const start = performance.now(); const tick = () => { const left = Math.max(0, ms - (performance.now() - start)); if (clock) clock.textContent = (left / 1000).toFixed(1).replace(".", ",") + " s"; if (left <= 0) { const timer = $(this.el, ".pod-timer"); if (timer) timer.textContent = "Temps écoulé"; this.eteindre(screen); if (hint) hint.textContent = "L’image s’est éteinte. Qu’as-tu vu ?"; this.etape = "question"; this.ignoreUntil = performance.now() + 550; this.serie.started = performance.now(); this.showQuestion(it, true); return; } this._raf = requestAnimationFrame(tick); }; this._raf = requestAnimationFrame(tick); } showQuestion(it, afterBlack) { const body = $(this.el, ".pod-body"); if (!body) return; const q = document.createElement("div"); const sit = it.situation && !$(this.el, ".pod-sit-q") ? `${it.situation}

` : ""; q.innerHTML = ` ${sit} ${it.question}

${this.choicesHtml(it)} ${afterBlack ? `` : ""}`; body.appendChild(q); } choicesHtml(it) { return it.choices .map( (c) => `` ) .join(""); } reveler() { if (this._revoirT) { clearTimeout(this._revoirT); this._revoirT = null; } const screen = $(this.el, ""); if (!screen) return; screen.classList.remove("eteint"); const voile = screen.querySelector(".pod-voile"); if (voile) voile.remove(); const revoir = this.el.querySelector('[data-act="revoir"]'); if (revoir) { const wrap = revoir.closest(".pod-actions"); if (wrap) wrap.remove(); else revoir.remove(); } } answer(btn) { if (this.locked || this.etape !== "question") return; if (performance.now() < this.ignoreUntil) return; this.locked = true; this.etape = "feedback"; this.ignoreUntil = performance.now() + 550; this.reveler(); const ok = btn.getAttribute("data-ok") === "1"; const elapsed = performance.now() - (this.serie.started || performance.now()); this.serie.results.push(ok); this.serie.times.push(elapsed); $$ (this.el, ".pod-choice").forEach((b) => { b.disabled = true; if (b.getAttribute("data-ok") === "1") b.classList.add("ok"); }); if (!ok) btn.classList.add("ko"); const it = this.current(); const box = document.createElement("div"); box.className = `pod-feedback ${ok ? "good" : "bad"}`; box.innerHTML = ` **${ok ? "Vu." : "Passé à côté."}**${it.explain}

${it.astuce}

`; $(this.el, ".pod-body").appendChild(box); } nextItem() { if (this.etape !== "feedback") return; if (performance.now() < this.ignoreUntil) return; if (!this.serie || this.serie.results.length !== this.serie.index + 1) return; this.locked = false; if (this._t) clearTimeout(this._t); if (this._revoirT) clearTimeout(this._revoirT); if (this._raf) cancelAnimationFrame(this._raf); this._t = this._revoirT = this._raf = null; this.serie.index = this.serie.results.length; if (this.serie.index < this.serie.items.length) { this.etape = "flash"; this.ignoreUntil = performance.now() + 400; this.showItem(); return; } this.finishSerie(); } finishSerie() { const s = this.serie; if (!s || s.results.length < s.items.length) return; const score = s.results.filter(Boolean).length; const payload = { score, total: s.items.length, times: s.times, done: true, results: s.results }; if (s.which === "avant") { saveState(this.store, this.pack.id, { avant: payload }); if (this.phase === "avant") return this.renderAvantDone(this.state()); return this.beginSerie("apres"); } saveState(this.store, this.pack.id, { apres: payload }); this.renderFiche(this.state()); } beginAtelier() { this.view = "atelier"; this.etape = "atelier"; this.locked = false; this.held = null; this.atelier = { left: shuffle(this.pack.atelier), placed: {}, errors: 0, }; this.renderAtelier(true); } renderAtelier(intro) { const p = this.pack; const a = this.atelier; const remaining = a.left.filter((s) => !a.placed[s.id]); const done = remaining.length === 0; const rack = remaining .map( (s) => `` ) .join(""); const trays = p.familles .map((f) => { const got = Object.values(a.placed).filter((x) => x.famille === f.id); const good = got.length ? "good" : ""; const slots = got .map((s) => `${root.POSignaux.render(s.id)}${s.code} · ${s.nom}`) .join(""); return ` ${slots || ``} ${f.label}`; }) .join(""); this.el.innerHTML = ` ${plate(p, (p.familles && p.familles.length) + " familles", this.nom)} Forme + couleur · sans réciter

## ${done ? "Les six familles sont en place." : "Range chaque signal dans sa famille."}

${ intro ? "Glisse un panneau dans sa famille, ou touche-le puis touche la case. Tu peux toujours faire défiler." : done ? "C’est la méthode de la leçon, devenue un geste." : this.held ? "Maintenant, la case." : "Encore " + remaining.length + " à ranger." }

 ${remaining.length ? `${rack}` : ""} ${trays} ${ done ? `` : `- ${Object.keys(a.placed).length}/${p.atelier.length} rangés
- ${a.errors} erreur${a.errors > 1 ? "s" : ""}

` } `; this.bindAtelierDnD(); this.syncHoldUi(); } canDrag() { return root.matchMedia("(hover: hover) and (pointer: fine)").matches; } bindAtelierDnD() { const dragOk = this.canDrag(); $$ (this.el, ".pod-sign").forEach((sign) => { sign.draggable = dragOk; if (!dragOk) return; sign.addEventListener("dragstart", (e) => { this._dragging = true; this.held = sign.getAttribute("data-id"); e.dataTransfer.setData("text/plain", this.held); e.dataTransfer.effectAllowed = "move"; this.syncHoldUi(); }); sign.addEventListener("dragend", () => { setTimeout(() => { this._dragging = false; }, 0); }); }); $$ (this.el, ".pod-tray").forEach((tray) => { tray.addEventListener("dragover", (e) => { e.preventDefault(); tray.classList.add("hot"); }); tray.addEventListener("dragleave", () => tray.classList.remove("hot")); tray.addEventListener("drop", (e) => { e.preventDefault(); tray.classList.remove("hot"); const id = e.dataTransfer.getData("text/plain") || this.held; this.place(id, tray.getAttribute("data-tray"), tray); }); }); } syncHoldUi() { this.el.classList.toggle("is-holding", !!this.held); $$ (this.el, ".pod-sign").forEach((el) => { el.classList.toggle("held", el.getAttribute("data-id") === this.held); }); $$ (this.el, ".pod-tray").forEach((el) => { el.classList.toggle("await", !!this.held && !el.classList.contains("good")); }); const lead = $(this.el, ".pod-lead"); if (!lead || !this.atelier) return; const left = this.pack.atelier.length - Object.keys(this.atelier.placed).length; lead.textContent = this.held ? "Pose-le dans sa famille. Tu peux encore faire défiler." : "Encore " + left + " à ranger."; } hold(id) { if (this._dragging) return; this.held = this.held === id ? null : id; this.syncHoldUi(); } place(id, famille, trayEl) { const item = this.pack.atelier.find((s) => s.id === id); if (!item) return; if (item.famille === famille) { const y = window.scrollY; this.atelier.placed = item; this.held = null; if (Object.keys(this.atelier.placed).length === this.pack.atelier.length) { saveState(this.store, this.pack.id, { atelier: { done: true, placed: Object.keys(this.atelier.placed).length, errors: this.atelier.errors, }, }); } this.renderAtelier(false); window.scrollTo(0, y); return; } this.atelier.errors += 1; if (trayEl) { trayEl.classList.add("bad"); setTimeout(() => trayEl.classList.remove("bad"), 420); } const sign = this.el.querySelector(`.pod-sign[data-id="${id}"]`); if (sign) { sign.classList.add("shake"); setTimeout(() => sign.classList.remove("shake"), 420); } } renderFiche(st) { this.view = "fiche"; const a = st.avant || { score: 0, total: 3, times: [] }; const p = st.apres || { score: 0, total: 5, times: [] }; const gain = p.score - a.score; const verdict = p.score === p.total ? "Leçon acquise. Tu ne récites plus : tu décodes. C’est exactement ce que l’écran du jour J demandera." : p.score > a.score ? "Ton œil a bougé. Relis juste les pièges ratés, puis enchaîne sur le quiz de la leçon." : "L’œil n’est pas encore là. Relis la leçon, puis rejoue les pièges."; this.el.innerHTML = ` ${plate(this.pack)}
### Fiche de cabine

Avant la leçon**${a.score}/${a.total}**Après · les pièges**${p.score}/${p.total}**Temps de regard**${fmtSec(avg([...(a.times || []), ...(p.times || [])]))}**Écart**${gain > 0 ? "+" + gain : gain === 0 ? "stable" : gain}**${verdict}

Reproductions officielles des signaux routiers belges.

`; } eteindre(screen) { if (!screen || this.locked) return; if (!screen.querySelector(".pod-voile")) { screen.insertAdjacentHTML( "beforeend", `Qu’as-tu vu ?*Forme + couleur*` ); } screen.classList.add("eteint"); } revoir() { if (this.locked) return; const screen = $(this.el, ""); const it = this.current(); if (!screen) return; if (this._revoirT) clearTimeout(this._revoirT); screen.classList.remove("eteint"); screen.innerHTML = `${this.frame(it)}`; const btn = this.el.querySelector('[data-act="revoir"]'); if (btn) { const wrap = btn.closest(".pod-actions"); if (wrap) wrap.remove(); else btn.remove(); } this._revoirT = setTimeout(() => { this._revoirT = null; if (!this.locked) this.eteindre(screen); }, 1000); } reset() { const st = this.state(); this.locked = false; if (this.tool === "familles" || this.phase === "atelier") { saveState(this.store, this.pack.id, { atelier: null }); this.beginAtelier(); return; } saveState(this.store, this.pack.id, { avant: null, apres: null }); this.route(); } onClick(e) { const t = e.target.closest(""); if (!t) { if (e.target.closest(".pod-screen, .pod-booth")) { e.preventDefault(); e.stopPropagation(); } const tray = e.target.closest(""); if (tray && this.held) this.place(this.held, tray.getAttribute("data-tray"), tray); return; } if (this.etape === "flash") { e.preventDefault(); return; } const act = t.getAttribute("data-act"); if (act === "go-flash") this.startFlash(); else if (act === "answer") this.answer(t); else if (act === "next") this.nextItem(); else if (act === "hold") this.hold(t.getAttribute("data-id")); else if (act === "revoir") this.revoir(); else if (act === "reset") this.reset(); else if (act === "scroll-avant") { const top = root.document.querySelector('[data-phase="avant"]'); if (top) top.scrollIntoView({ behavior: "smooth", block: "start" }); } } } function mount(el, opts) { const inst = new Instance(el, opts); inst.start(); return inst; } function boot() { $$ (document, "").forEach((el) => { if (el.getAttribute("data-decodeur-root")) return; const phase = el.getAttribute("data-phase") || "complet"; if (phase === "atelier") return; mount(el, { lecon: el.getAttribute("data-decodeur"), phase: phase, tool: "decodeur", base: root.PO_DECODEUR_BASE || "", }); }); $$ (document, "").forEach((el) => { if (el.getAttribute("data-decodeur-root")) return; mount(el, { lecon: el.getAttribute("data-familles"), phase: "atelier", tool: "familles", base: root.PO_DECODEUR_BASE || "", }); }); } root.PODecodeur = { mount, boot }; if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", boot); else boot(); })(window);[**La leçon est lue… *vérifie qu’elle est acquise.*** Le quiz d’entraînement de la leçon se lance ici même : **15 questions** au format examen, corrigées une par une avec l’explication à chaque réponse. Il te faut **80 %** pour valider la leçon.    **Correction immédiate****Objectif 80 %****Progression enregistrée** JE M’ENTRAÎNE Gratuit · l’ordre des questions change à chaque essai](#)  [**EXAMEN***RECALÉ*2 FAUTES GRAVES  **La leçon est lue… *l’examen, lui, ne prévient pas.*** 50 questions, minimum **41/50**, et **2 fautes graves = échec automatique** : voilà le vrai examen. Les examens blancs du cours t’y préparent chapitre par chapitre, et la **simulation complète** te note exactement comme au centre d’examen, **5 points en moins** par faute grave comprises.    **Le format officiel du jour J****Questions lues à voix haute****Correction expliquée** JE FAIS UN EXAMEN BLANC Choisis ton offre · réussi ou remboursé](https://permis-online.be/cours/examens-blancs/#theorique)  Aujourd’hui chez les candidats**4***candidats actifs***4***niveaux de plaque*
**Réussis du premier coup.** Ton compte gratuit enregistre ta progression et débloque des quiz et défis en plus, avec les candidats de ton centre qui visent la même date que toi.

[Créer mon compte gratuit](https://permis-online.be/cours/compte-gratuit/?src=vitrine)[Voir les candidats →](https://permis-online.be/cours/candidats/)**Cette leçon t’a aidé ?** Ajoute Permis Online à tes sources préférées Google : nos contenus remonteront dans tes résultats.

[Ajouter sur Google](https://www.google.com/preferences/source?q=permis.online)Références et méthodologieArrêté royal du 1er décembre 1975 portant règlement général sur la police de la circulation routière et de l’usage de la voie publique (le code de la route belge).Leçon rédigée par [Wenceslas Dasnois](/auteur/wenceslas-dasnois/) selon nos [principes éditoriaux](/principes-editoriaux/) et notre [méthodologie de vérification](/methodologie-verification/). Tu repères une imprécision ? Notre [politique de correction](/politique-de-correction/) s’applique.

## Sources & References

- [Je réussis mon examen](https://belgique.permis.online/commande/?add-to-cart=19749113) · belgique.permis.online
- [Je réussis tout, de A à Z](https://belgique.permis.online/commande/?add-to-cart=19702281) · belgique.permis.online
- [Ajouter sur Google](https://www.google.com/preferences/source?q=permis.online) · google.com

---

*Source: [Les signaux de danger : le triangle qui te prévient 150 mètres avant](https://permis-online.be/cours/theorique/signaux-de-danger/) · Published 2026-07-09 · Updated 2026-07-12*
*Author: Wenceslas Dasnois (Fondateur de Permis Online · Fondateur de l'Observatoire du Permis Belge (vérification des statistiques officielles du permis, 3 régions)) · Permis Online*
