RM

RM Partie 4 : Métadonnées et ressources externes

Partie 4 — Métadonnées et ressources externes

1) Objectifs pédagogiques


2) L’élément <head> : rôle et ordre recommandé

Rôle

<head> contient les métadonnées et liens de ressources : rien de ce qui est dans <head> n’est rendu comme contenu principal de la page (sauf effets indirects : titre d’onglet, CSS appliqué…).

Ordre recommandé (pratique et robuste)

  1. <!DOCTYPE html> (hors <head>, rappel)

  2. <html lang="fr"> (rappel)

  3. <head>

    • <meta charset="utf-8">
    • <meta name="viewport" …>
    • <title>…</title>
    • <meta name="description" content="…">
    • Liens icônes (favicons), manifest éventuel
    • Feuilles CSS (<link rel="stylesheet" …>)
    • Scripts critiques si besoin immédiat, sinon defer ou fin de <body>
  4. </head>

Pourquoi cet ordre ?

  • charset doit être le plus tôt possible pour que le navigateur lise correctement le reste du document.
  • viewport très tôt pour le rendu mobile correct.
  • title et description rapidement disponibles pour l’onglet et les moteurs.
  • Puis les ressources (icônes, CSS, JS).

3) Métadonnées essentielles

3.1 Encodage : <meta charset="UTF-8">

<meta charset="utf-8">

Piège fréquent : Dupliquer l’info d’encodage (HTTP header + meta) n’est pas utile, mais acceptable. En HTML5, la forme courte ci-dessus est la bonne pratique.


3.2 Affichage mobile : <meta name="viewport">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

À éviter (accessibilité) :

Variantes utiles (selon cas) :

<!-- Zoom initial légèrement plus grand (rarement nécessaire) -->
<meta name="viewport" content="width=device-width, initial-scale=1.1">

3.3 Titre d’onglet : <title>

<title>Initiation à HTML5 – Cours 1</title>

3.4 Description SEO : <meta name="description">

<meta name="description" content="Découvre les bases de HTML5 : structure de page, balises de texte et bonnes pratiques pour débuter côté front-end.">

Notes :


4.1 Feuille de style CSS

<link rel="stylesheet" href="/assets/css/style.css">

4.2 Favicon (icône d’onglet)

Plusieurs options ; aujourd’hui, PNG et SVG sont courants. Fournir au moins un format supporté par tous :

Option moderne (SVG + PNG de secours) :

<!-- Favicon vectorielle -->
<link rel="icon" href="/assets/icons/favicon.svg" type="image/svg+xml" sizes="any">

<!-- Fallback PNG classique -->
<link rel="icon" href="/assets/icons/favicon-32.png" type="image/png" sizes="32x32">
<link rel="icon" href="/assets/icons/favicon-16.png" type="image/png" sizes="16x16">

Apple touch icon (écran d’accueil iOS) :

<link rel="apple-touch-icon" href="/assets/icons/apple-touch-icon.png" sizes="180x180">

Remarques :

(Tu n’as pas besoin de tout couvrir dans cette séance ; vise au moins une favicon fonctionnelle.)


5) Charger un JavaScript externe avec <script> (aperçu)

5.1 Syntaxe de base

<script src="/assets/js/app.js"></script>

a) defer (recommandé pour scripts classiques)

<script src="/assets/js/app.js" defer></script>

b) async (pour scripts indépendants)

<script src="/assets/js/analytics.js" async></script>

c) Modules ES : type="module"

<script type="module" src="/assets/js/main.js"></script>

5.2 Autres attributs utiles (aperçu)

(Ces points sont avancés ; l’important ici est de connaître defer / async / type="module".)


6) Exemple complet de <head> minimal et propre

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>HTML5 — Métadonnées et ressources</title>

    <meta name="description" content="Configurer le head d’une page : charset UTF-8, viewport mobile, title, description SEO, lien vers CSS, favicon, et chargement de scripts.">

    <!-- Favicon (SVG + fallback PNG) -->
    <link rel="icon" href="/assets/icons/favicon.svg" type="image/svg+xml" sizes="any">
    <link rel="icon" href="/assets/icons/favicon-32.png" type="image/png" sizes="32x32">
    <link rel="icon" href="/assets/icons/favicon-16.png" type="image/png" sizes="16x16">

    <!-- CSS principal -->
    <link rel="stylesheet" href="/assets/css/style.css">

    <!-- Script de la page (différé pour ne pas bloquer le parsing) -->
    <script src="/assets/js/app.js" defer></script>
  </head>
  <body>
    <!-- … -->
  </body>
</html>

Remarques :


7) Pièges fréquents


8) Exercice (avec énoncé clair)

But : Ajouter un titre d’onglet, une description SEO et une favicon.

Consignes

  1. Pars d’un fichier index.html minimal (doctype, html lang, head, body).

  2. Dans <head>, ajoute :

    • <meta charset="utf-8">
    • <meta name="viewport" content="width=device-width, initial-scale=1.0">
    • Un <title> descriptif (50–60 caractères environ)
    • Une <meta name="description" …> pertinente (~150–160 caractères)
    • Une favicon fonctionnelle : au choix
      1. un PNG 32×32 (avec link rel="icon" … sizes="32x32"),
      2. un SVG + fallback PNG (recommandé).
  3. Place un <link rel="stylesheet" href="assets/css/style.css"> (même vide pour l’instant).

  4. (Optionnel) Ajoute un script externe avec defer.

Arborescence suggérée

/index.html
/assets/css/style.css
/assets/icons/favicon-32.png
/assets/icons/favicon.svg (optionnel)

9) Corrigé possible

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Découvrir HTML5 — Métadonnées, CSS et favicon</title>

    <meta name="description" content="Apprends à configurer le head d’une page HTML5 : encodage UTF-8, viewport pour mobiles, titre d’onglet, description SEO, favicon et lien vers la feuille de styles.">

    <!-- Favicon : SVG + fallback PNG -->
    <link rel="icon" href="assets/icons/favicon.svg" type="image/svg+xml" sizes="any">
    <link rel="icon" href="assets/icons/favicon-32.png" type="image/png" sizes="32x32">

    <!-- CSS principal -->
    <link rel="stylesheet" href="assets/css/style.css">

    <!-- (Optionnel) Script non bloquant -->
    <script src="assets/js/app.js" defer></script>
  </head>
  <body>
    <h1>Page de démonstration</h1>
    <p>Cette page teste le titre, la description et la favicon.</p>
  </body>
</html>

10) Mini-quiz

  1. Pourquoi <meta charset="utf-8"> doit-il être placé au début du <head> ?
  2. Donne une configuration viewport correcte et explique les deux paramètres principaux.
  3. Quelles sont les caractéristiques d’un bon <title> ?
  4. À quoi sert <meta name="description"> et quelle longueur viser ?
  5. Donne deux façons valides de déclarer une favicon.
  6. Différence entre <script defer> et <script async> ?
  7. Que fait type="module" sur une balise <script> ?

Corrigé bref

  1. Pour garantir l’interprétation correcte des caractères dès le parsing.
  2. width=device-width, initial-scale=1.0 : largeur logique = écran ; zoom initial à 100 %.
  3. Unique, descriptif, concis (~50–60 caractères), pertinent pour la page.
  4. Fournir un résumé pour le snippet ; ~150–160 caractères, informatif et unique.
  5. link rel="icon" href="favicon.svg" type="image/svg+xml" + fallback PNG 32x32, ou favicon.ico à la racine (avec/ou sans <link> explicite).
  6. defer : exécution après parsing, ordre préservé ; async : exécution dès disponibilité, ordre non garanti.
  7. Active les modules ES (imports), comportement de chargement de type defer par défaut.

11) Fiche-mémo