Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Les bases du web mobile

La leçon complète est à lire ici. Créez un compte gratuit pour la pratiquer dans un labo en direct.

Labo de conteneurs13 min de lecture7 commandes

Pourquoi la page est-elle minuscule sur mon téléphone ?

Tu as déjà ouvert une page web sur un téléphone et dû pincer et zoomer pour lire une seule ligne. La page avait été pensée pour un grand écran et le téléphone l'a dessinée en petit. Quelques lignes de code indiquent au téléphone comment la dessiner correctement, et cette leçon les examine.

À la fin de cette leçon

Remarque

Je peux repérer les éléments d'une page web qui la font fonctionner sur un téléphone.

Mots clés

  • Viewport (zone d'affichage) : la partie de l'écran dans laquelle la page est dessinée.
  • Adaptatif (responsive) : une mise en page qui change selon la largeur de l'écran.
  • Media query : une règle CSS qui ne s'applique que si une condition est vraie, par exemple une largeur minimale.
  • Manifeste : un petit fichier qui donne au téléphone le nom, les icônes et les couleurs d'une application web.
  • Service worker : un script que le navigateur conserve et qui peut répondre aux requêtes à partir d'une copie enregistrée.
  • Cache : un espace où l'on garde des copies de fichiers.

Pour commencer : ce que tu sais déjà

Remarque

Réponds dans ta tête. 1. À quoi sert le CSS dans une page web ? 2. Un doigt est-il plus gros ou plus petit qu'un pointeur de souris ? 3. Que devient une page web quand il n'y a pas de réseau ? Réponses : il règle l'apparence de la page ; plus gros ; en général elle ne se charge pas, et c'est le problème que règle la dernière étape.

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. Le lien JupyterLab ouvre sa page web, sur le port 8888, et le lien Preview (aperçu) montre le suivi d'habitudes, 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.

L'application web est un dossier, et un petit serveur l'affiche

ls app liste l'application web : une page, ses styles, son script, un manifeste, un service worker et deux icônes. Le second script demande trois de ces fichiers au serveur d'aperçu et affiche la réponse. Chacun répond 200, ce qui veut dire qu'il a été trouvé, et le manifeste a son propre type, application/manifest+json. Ouvre maintenant le lien Preview dans ton navigateur, rétrécis la fenêtre et regarde la mise en page changer.

Commande
docker exec jupyter ls app

Affiché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.

Commande
docker exec jupyter python3 steps/serve.py

Affiché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.

La balise viewport dit au téléphone quelle largeur utiliser

Le script lit index.html et cherche une balise meta nommée viewport. Elle est trouvée, avec width=device-width, initial-scale=1 : dessiner la page aussi large que l'écran, à la taille normale. Essaie : supprime cette ligne dans JupyterLab, enregistre, relance le script, et il répond MISSING (absente). Un téléphone dessinerait alors la page comme si l'écran était bien plus large, puis la réduirait.

Commande
docker exec jupyter python3 steps/viewport.py

Affiché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.

Les points de rupture changent la mise en page à une largeur donnée

La feuille de style est mobile d'abord : les règles simples sont celles du téléphone, et les media queries ajoutent des règles quand l'écran s'élargit. Le script en trouve trois. Deux sont des largeurs, 600 px et 900 px, et la troisième n'est pas une largeur mais une préférence pour le mode sombre. Élargis la fenêtre de ton navigateur au-delà de 600 px et le formulaire se met sur une ligne. Au-delà de 900 px, la liste passe sur deux colonnes.

Commande
docker exec jupyter python3 steps/breakpoints.py

Affiché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.

Un pouce a besoin de place

Un bout de doigt couvre bien plus qu'un pointeur de souris, et il cache ce qu'il touche. Ce lab prend 44 pixels comme seuil qu'un bouton doit atteindre. Le script liste toutes les tailles de la feuille de style : le bouton Add (Ajouter) fait 32 px de haut, les boutons de filtre 36 px, et le bouton rond « fait » 30 sur 30, donc quatre tailles sont sous 44. Elles sont volontairement un peu trop petites, et les corriger est ta tâche.

Commande
docker exec jupyter python3 steps/touch.py

Affiché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

Quel point de rupture met la liste sur deux colonnes, et combien de tailles sont sous 44 pixels ? Réponse : 900 px, et quatre.

Un manifeste permet au téléphone de traiter la page comme une application

Le manifeste est un fichier JSON. Le script vérifie sept champs. Six sont présents : le nom, un nom court pour sous l'icône, la page à ouvrir d'abord, le mode d'affichage (standalone, c'est-à-dire sans les barres du navigateur), les icônes et la couleur de la barre du haut. Un est MISSING (absent), background_color, la couleur affichée pendant le démarrage de l'application. Les deux fichiers d'icône existent. Savoir si un téléphone propose d'installer l'application dépend du navigateur : cherche l'option dans le menu de ton propre navigateur.

Commande
docker exec jupyter python3 steps/manifest.py

Affiché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.

Un service worker permet d'ouvrir l'application sans réseau

Le service worker nomme un cache, habits-v1, et une liste de huit fichiers à enregistrer à l'installation. Le script vérifie que chacun existe, et sept existent. Le huitième, /offline.html, n'existe pas. C'est un vrai défaut : si un seul fichier de la liste ne peut pas être enregistré, toute l'installation échoue et rien ne marche hors ligne. Un navigateur n'autorise les service workers que sur une adresse sécurisée, il peut donc refuser celui-ci sur le lien d'aperçu : la console de ton navigateur le dit.

Commande
docker exec jupyter python3 steps/offline.py

Affiché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 si une page est bien dans une fenêtre étroite sur un ordinateur, elle marche sur un téléphone. Une fenêtre étroite montre seulement la mise en page. Elle ne montre ni la taille d'un pouce, ni la lenteur d'un réseau mobile, ni ce que fait le navigateur du téléphone. Utilise la fenêtre étroite pour vérifier la mise en page, puis ouvre la page sur un vrai téléphone si tu peux.

Une application web mobile face à une application native

Une application native est conçue pour un seul système de téléphone et installée depuis une boutique. Une application web mobile est une page web. Elle a un seul code pour tous les téléphones, elle est à jour dès que tu changes les fichiers, et un lien suffit à l'ouvrir. Elle peut garder des données sur le téléphone, fonctionner hors ligne grâce à un service worker et, dans de nombreux navigateurs, être ajoutée à l'écran d'accueil. Elle accède moins au téléphone : ce qu'elle peut utiliser, comme les notifications ou le travail en arrière-plan, dépend du navigateur et du téléphone, et le navigateur peut effacer ses données. Choisir entre les deux, c'est faire un compromis, pas désigner un gagnant.

Vérification finale

Astuce

Réponds sans revenir en arrière. 1. Quelle balise dit au téléphone de dessiner la page aussi large que l'écran ? 2. Que veut dire mobile d'abord ? 3. Quel fichier donne à une application son nom et ses icônes ? 4. Pourquoi un service worker ne s'installe-t-il pas si un fichier de la liste manque ? Réponses : la balise meta viewport ; les règles simples sont pour le téléphone et les media queries en ajoutent pour les écrans plus larges ; le manifeste ; la liste est enregistrée d'un coup, donc un seul échec arrête toute l'installation.

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 second port qui affiche l'application web de l'élève, et rien ici ne se corrige tout seul : l'élève rend app/style.css avec les petits boutons portés à 44 pixels au moins, et une phrase sur ce qu'il a changé et comment il l'a vérifié dans son navigateur. Points clés : 1. La balise viewport rend une page adaptative sur téléphone. 2. Un CSS mobile d'abord ajoute des media queries à mesure que l'écran s'élargit. 3. Un manifeste et un service worker font une application web installable et utilisable hors ligne. Erreur fréquente : se fier à une fenêtre étroite d'ordinateur comme test sur téléphone. Matériel : le lab, un navigateur et, si possible, un téléphone. Conseil : demandez aux élèves de prévoir chaque résultat avant d'appuyer sur Exécuter. Les fichiers sont écrits à partir d'un texte fixe, donc chaque copie affiche la même chose. 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.

À propos de ce labo et de sa source: Lab web mobile : une application web adaptative et installable à construire dans le navigateur

Vous enseignez à une classe ? Proposez ces leçons à vos élèves avec correction et un labo pour chaque élève.