Trois métiers dans une seule page
Un café a une page de menu du midi, avec une liste de plats, une case pour en chercher un et un bouton pour un thème sombre. Il faut que quelqu'un dise ce qu'il y a sur la page, quelqu'un d'autre comment elle se présente, et un troisième ce qu'elle fait quand on appuie sur un bouton. Sur le web, ce sont trois langages, chacun avec son rôle.
À la fin de cette leçon
Remarque
Je peux dire ce que font HTML, CSS et JavaScript dans une page web, et vérifier une page avec un court script.
Mots clés
- HTML : le langage qui dit ce qu'il y a sur une page : titres, listes, liens, formulaires.
- Élément : une partie d'une page, écrite sous forme de balise comme
h2ouli. - CSS : le langage qui dit l'aspect des éléments.
- Sélecteur : la partie d'une règle CSS qui dit pour quels éléments elle vaut.
- Déclaration : un réglage dans une règle, comme
margin: 1rem. - Modèle de boîte : chaque élément est une boîte avec un contenu, une marge intérieure, une bordure et une marge extérieure.
- DOM : la page telle que le navigateur la garde en mémoire, que JavaScript peut lire et modifier.
- Événement : quelque chose qui se passe sur la page, comme un clic.
Pour commencer : ce que tu sais déjà
Remarque
Réponds dans ta tête. 1. Sur quoi cliques-tu pour passer d'une page web à une autre ? 2. Cite deux choses que tu pourrais changer dans un texte sur une page, comme sa couleur. 3. Qu'attends-tu quand tu appuies sur un bouton d'une page ? Réponses : un lien ; sa taille, sa police ou sa couleur ; quelque chose change ou un message apparaît.
Avant de commencer
Remarque
Appuie sur Démarrer le lab dans la barre en haut de la leçon et attends qu'il indique qu'il est en marche. Il y a un seul conteneur, jupyter, et le terminal atteint son Python avec docker exec jupyter, qui lance une commande à l'intérieur. Il a deux liens. JupyterLab, le premier, est l'éditeur, sur le port 8888. Preview (l'aperçu), le second, est la page elle-même, sur le port 8000. Chaque bouton Exécuter ci-dessous tape sa commande dans le terminal de ton lab, l'une après l'autre, dans la même session. Pour suivre les commandes ou taper les tiennes, appuie sur Ouvrir le terminal (nouvel onglet) dans la barre.
Une page, ce sont quelques fichiers simples
ls site liste les trois fichiers de la page : index.html pour ce qu'il y a dessus, style.css pour son aspect et app.js pour ce qu'elle fait. La deuxième commande affiche leur taille : 1373, 1125 et 1093 octets, soit 3591 en tout. C'est une page entière. Ouvre Preview pour la voir, et JupyterLab pour lire les fichiers.
docker exec jupyter ls siteAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
docker exec jupyter python3 steps/sizes.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le HTML donne sa structure à la page
Le script lit index.html comme un navigateur commence à le faire, balise par balise. Il compte 36 balises en tout. a et li apparaissent cinq fois chacun, et section trois fois. Le second script n'affiche que les titres, c'est-à-dire le plan de la page : un h1, Lunch menu, et dessous trois titres h2. Les titres ne servent pas à grossir le texte. C'est ainsi que la page dit de quoi elle parle, et c'est ce qu'un lecteur d'écran utilise pour sauter d'un endroit à un autre.
docker exec jupyter python3 steps/tags.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
docker exec jupyter python3 steps/outline.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Vérifie
Astuce
Combien de titres h2 la page a-t-elle, et quel est le h1 ? Réponse : trois, et le h1 est Lunch menu.
Les règles CSS disent l'aspect, et le modèle de boîte donne les tailles
Une règle CSS, c'est un sélecteur et des déclarations entre accolades. Le script trouve 17 règles et 39 déclarations, et le réglage le plus utilisé est padding, six fois. Chaque élément est une boîte : son contenu, puis une marge intérieure, puis une bordure, puis une marge extérieure. La règle de .dish fixe padding, margin-bottom, border et border-radius, ce qui explique pourquoi chaque plat est une carte bordée avec de l'air autour. Quand deux règles visent un même élément, le sélecteur le plus précis l'emporte, et à égalité la dernière. C'est la cascade. body.dark est plus précis que body, donc une page sombre échange les couleurs. Change une valeur dans style.css, enregistre, recharge la page Preview et relance le script.
docker exec jupyter python3 steps/css.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
JavaScript réagit aux événements en modifiant le DOM
Le script lit app.js pour trouver ce qu'il définit et ce qu'il attend. Il a deux fonctions, filterDishes et toggleTheme, et trois écouteurs : submit et input sur la case de recherche, et click sur le bouton de thème. Quand l'un de ces événements arrive, la fonction modifie le DOM, la page que garde le navigateur. Essaie dans Preview : tape tom dans la case et la liste se réduit aux deux plats qui contiennent ces lettres, puis appuie sur Dark theme. Il n'y a ni bibliothèque ni appel réseau, seulement ce que le navigateur a déjà.
docker exec jupyter python3 steps/js.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Vérifier une page fait partie de la fabriquer
Une page qui a l'air juste peut quand même être cassée. Le premier script liste chaque lien et dit où il mène : trois liens restent sur la page et chacun trouve sa cible, un va vers un fichier d'ici et un vers un autre site. Le second demande la page au serveur de Preview, comme le fait un navigateur, et affiche le statut 200, le titre Lunch menu, et que style.css revient avec le type text/css. Un statut 404 voudrait dire qu'un fichier demandé par la page manque.
docker exec jupyter python3 steps/links.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
docker exec jupyter python3 steps/serve.pyAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
Beaucoup pensent que Preview change dès qu'on tape. Ce n'est pas le cas. Elle montre les fichiers enregistrés : enregistre dans l'éditeur, puis recharge Preview. Si la page semble inchangée, vérifie les deux. Le navigateur peut aussi garder une ancienne copie d'un fichier : un rechargement forcé aide parfois.
Les mêmes vérifications dans un notebook
Ouvre JupyterLab depuis la barre et double-clique sur start.ipynb. Ses cellules lisent les mêmes fichiers en Python : elles comptent les balises, listent les règles CSS et demandent la page à Preview. Clique sur une cellule et appuie sur Maj et Entrée pour l'exécuter. La dernière cellule attend ta propre modification : change style.css, enregistre, puis recompte les règles.
Vérification finale
Astuce
Réponds sans revenir en arrière. 1. Quel langage dit ce qu'il y a sur une page, lequel dit son aspect et lequel dit ce qu'elle fait ? 2. Quelles sont les quatre couches du modèle de boîte, de l'intérieur vers l'extérieur ? 3. Que décide la cascade ? 4. Pourquoi Preview ne change-t-elle pas quand on tape seulement dans l'éditeur ? Réponses : HTML, CSS, JavaScript ; contenu, marge intérieure, bordure, marge extérieure ; quelle règle l'emporte quand deux règles visent un même élément ; Preview montre les fichiers enregistrés, donc il faut enregistrer et recharger.
Pour les enseignants
Astuce
Cette leçon est un petit exemple de leçon travaillée dans un lab : les étapes et les boutons Exécuter sont la leçon, et le lab est la copie de chaque élève. Le lab est un seul service, JupyterLab avec un aperçu en direct d'une petite page, et rien ici ne se corrige tout seul : l'élève rend sa propre version des trois fichiers de site, téléchargés depuis JupyterLab, et une phrase sur un changement et son effet. Points clés : 1. HTML donne la structure, CSS le style, JavaScript le comportement. 2. Chaque élément est une boîte et la cascade décide quelle règle l'emporte. 3. Une page se vérifie, elle ne se contente pas de se regarder. Erreur fréquente : s'attendre à ce que Preview change avant l'enregistrement du fichier. Matériel : le lab et un navigateur. Conseil : demandez aux élèves de prévoir l'effet d'un changement avant de recharger. La page et les scripts sont écrits à partir d'un texte fixe, donc chaque copie donne les mêmes nombres. Copiez-la dans votre propre module et modifiez-la, ou créez-en une de zéro avec le menu Lab du créateur de leçons.