Introduction et fondamentaux du Web¶

Avant d’écrire la moindre ligne de code, il faut comprendre dans quel environnement on travaille. Ce chapitre rĂ©pond Ă  des questions que l’on se pose rarement parce que tout semble « marcher tout seul » : qu’est-ce qu’une page web au juste ? Que se passe-t-il entre le moment oĂč l’on tape une adresse et celui oĂč la page s’affiche ? Et quel est exactement le rĂŽle du navigateur ?

Qu’est-ce qu’une page web ?¶

« Une page web est une unitĂ© de consultation du World Wide Web. Conçue pour ĂȘtre consultĂ©e avec un navigateur web et identifiĂ©e par une adresse web, elle peut ĂȘtre statique ou dynamique. » (Wikipedia)

DerriĂšre cette dĂ©finition un peu formelle se cache quelque chose de trĂšs simple. En pratique, une page web est un fichier — ou plus souvent un ensemble de fichiers — que le navigateur rĂ©cupĂšre via Internet et qu’il « rend » sous forme de texte, d’images, de vidĂ©os ou d’interactions. Le navigateur ne reçoit donc pas une image figĂ©e de la page : il reçoit une description qu’il doit lui-mĂȘme transformer en affichage. Cette distinction est fondamentale, et c’est elle qui explique tout le reste.

Architecture simplifiée du Web¶

Le Web repose sur un échange permanent entre deux acteurs : celui qui demande du contenu et celui qui le fournit. On parle de modÚle client-serveur. Trois éléments suffisent à décrire ce fonctionnement.

ÉlĂ©ment

RĂŽle

Exemple concret

Client

Navigateur qui demande et affiche le contenu

Firefox, Chrome, Safari, Edge

Serveur

Machine qui héberge les fichiers et les renvoie

Serveur web Apache, Nginx

URL

Adresse unique qui identifie la ressource

https://exemple.com/index.html

Le client formule une demande, le serveur y rĂ©pond en envoyant les fichiers correspondants, et l’URL joue le rĂŽle d’adresse postale : elle dĂ©signe sans ambiguĂŻtĂ© la ressource voulue.

Statique ⟷ Dynamique¶

Toutes les pages ne sont pas fabriquĂ©es de la mĂȘme maniĂšre. On distingue deux grandes familles, selon la façon dont leur contenu est produit.

Type

Description

Fichiers

Statique

Le contenu ne change pas sans intervention manuelle

Un fichier index.html + style.css livrés tels quels

Dynamique

Le contenu est généré à la volée

Scripts cÎté serveur (PHP, Node.js, Python)

Une page statique est livrĂ©e telle qu’elle a Ă©tĂ© Ă©crite : le serveur se contente de renvoyer les fichiers. Une page dynamique, Ă  l’inverse, est assemblĂ©e au moment de la demande, souvent Ă  partir d’une base de donnĂ©es — c’est ce qui permet d’afficher votre fil d’actualitĂ© ou votre panier d’achats, diffĂ©rents pour chaque visiteur.

Pour ce cours, nous ne traiterons que le statique : uniquement HTML + CSS. C’est la base indispensable, et tout ce que vous apprendrez ici reste valable lorsque l’on passe au dynamique.

HTML et CSS : décrire la page¶

Des rÎles complémentaires¶

Les deux langages se partagent le travail de maniĂšre Ă©tanche, et c’est prĂ©cisĂ©ment ce qui rend le code propre et maintenable.

  • Le HTML dĂ©crit la structure : titres, paragraphes, images, liens


  • Le CSS dĂ©crit la prĂ©sentation : couleurs, marges, polices, dispositions


L’intĂ©rĂȘt de cette sĂ©paration est qu’on peut entiĂšrement changer l’apparence d’un site sans toucher Ă  son contenu, et inversement. C’est l’un des grands principes du Web moderne, sur lequel nous reviendrons.

Le navigateur interprÚte ces fichiers¶

Quand le navigateur reçoit ces fichiers, il les traite en plusieurs étapes :

  1. Il analyse (parse) le HTML et en construit le DOM (Document Object Model), une représentation arborescente de la structure.

  2. Il analyse le CSS et en construit le CSSOM (CSS Object Model), l’équivalent pour les styles.

  3. Il combine DOM + CSSOM pour produire le Render Tree, l’arbre de ce qui sera rĂ©ellement affichĂ©.

  4. Il calcule le layout (positions et tailles), puis procùde au paint (la peinture des pixels) et enfin à l’affichage.

Vous n’avez pas besoin de retenir ce mĂ©canisme dans le dĂ©tail dĂšs maintenant, mais gardez en tĂȘte cette idĂ©e : le navigateur reconstruit la page Ă  partir d’une description. C’est cette reconstruction que nous allons apprendre Ă  piloter.

Le navigateur : un exécutant¶

Le navigateur agit comme un exĂ©cutant d’une description. On lui fournit un plan — voici les Ă©lĂ©ments, voici leur apparence — et il le rĂ©alise fidĂšlement.

⚠ Point important : il n’y a pas de contrĂŽle de flux (boucles, conditions) comme dans un programme classique. On ne dit pas au navigateur « tant que
 fais
 », on lui dĂ©crit un Ă©tat final.

C’est pourquoi HTML et CSS sont des langages dĂ©claratifs, et non impĂ©ratifs : on dĂ©clare ce que l’on veut obtenir au lieu de dĂ©tailler la suite d’instructions pour y parvenir. La logique de programmation, avec ses boucles et ses conditions, viendra plus tard avec JavaScript.

Cycle de vie d’une page web¶

On peut maintenant relier tout ce qui prĂ©cĂšde en suivant le parcours complet, depuis le clic de l’utilisateur jusqu’à l’affichage.

1. Utilisateur demande une page (URL)
   ↓
2. Navigateur contacte le serveur (DNS → IP)
   ↓
3. RequĂȘte HTTP envoyĂ©e
   ↓
4. Serveur renvoie la réponse (HTML)
   ↓
5. Téléchargement des ressources (CSS, images, JS)
   ↓
6. Construction du DOM et du CSSOM
   ↓
7. Création du Render Tree
   ↓
8. Calcul du layout (positions, tailles)
   ↓
9. Peinture (painting) → Affichage final

L’étape 2 mĂ©rite un mot : l’URL contient un nom de domaine (comme exemple.com), mais le rĂ©seau, lui, fonctionne avec des adresses numĂ©riques (les adresses IP). Le DNS est l’annuaire qui fait la traduction de l’un vers l’autre, Ă  la maniĂšre d’un rĂ©pertoire tĂ©lĂ©phonique.

Les langages du Web¶

Le HTML et le CSS ne travaillent pas seuls. Ils s’inscrivent dans un petit Ă©cosystĂšme de langages, chacun avec un rĂŽle bien dĂ©fini.

Catégorie

Langage(s)

RĂŽle

Langage de balisage

HTML

Décrit la structure du document

Langage de feuille de style

CSS

Décrit la présentation

Langage de script cÎté client

JavaScript

Ajoute de la logique interactive

Langage de description de données

JSON, XML

Transporte des données structurées

Une comparaison classique aide Ă  fixer les idĂ©es : si une page web Ă©tait une maison, le HTML en serait les murs et la charpente, le CSS la peinture et la dĂ©coration, et JavaScript l’électricitĂ© et la plomberie — tout ce qui rĂ©agit quand on appuie sur un interrupteur.

Les standards du W3C¶

Qu’est-ce que le W3C ?¶

Le W3C (World Wide Web Consortium) est une organisation internationale fondĂ©e en 1994 par Tim Berners-Lee, l’inventeur du Web lui-mĂȘme. Sa mission : dĂ©velopper des standards ouverts pour le Web, afin que celui-ci reste un espace commun et interopĂ©rable plutĂŽt qu’une collection de technologies propriĂ©taires incompatibles.

Pourquoi respecter les standards ?¶

Écrire du code conforme aux standards n’est pas une coquetterie : c’est ce qui garantit que votre travail fonctionnera partout et durera dans le temps.

  • CompatibilitĂ© entre navigateurs : votre page s’affiche de la mĂȘme façon sous Firefox, Chrome ou Safari.

  • PĂ©rennitĂ© du code : un code standard reste lisible et fonctionnel des annĂ©es plus tard.

  • AccessibilitĂ© pour tous et toutes, y compris les personnes utilisant des technologies d’assistance.

  • SEO amĂ©liorĂ© : les moteurs de recherche comprennent mieux un code propre.

  • Maintenance facilitĂ©e, pour vous comme pour celles et ceux qui reprendront le projet.

Validation : vous pouvez vĂ©rifier la conformitĂ© de vos pages avec l’outil officiel, https://validator.w3.org/.

Historique rapide — HTML & CSS¶

ConnaĂźtre les grandes Ă©tapes aide Ă  comprendre pourquoi certaines pratiques sont aujourd’hui dĂ©couragĂ©es et d’autres recommandĂ©es.

HTML :

  • HTML 1.0 (1991) : 18 balises de base, le strict minimum pour relier des documents.

  • HTML 4.01 (1999) : on commence Ă  sĂ©parer structure et prĂ©sentation.

  • HTML5 (2014) : arrivĂ©e des balises sĂ©mantiques et de la vidĂ©o/audio natifs, sans plug-in.

  • HTML Living Standard (2019+) : le standard Ă©volue dĂ©sormais en continu, sans numĂ©ro de version.

CSS :

  • CSS 1 (1996) : les propriĂ©tĂ©s de base.

  • CSS 2 (1998) : le positionnement.

  • CSS 3 (2011+) : une organisation en modules (Flexbox, Grid, animations
) qui continuent d’évoluer indĂ©pendamment.

💡 Aujourd’hui : plutĂŽt qu’une grande version monolithique, le Web progresse par Ă©volutions modulaires et continues. C’est une bonne nouvelle : les nouveautĂ©s arrivent rĂ©guliĂšrement, sans tout casser.

Protocoles HTTP vs HTTPS¶

L’échange entre le client et le serveur suit un protocole : un ensemble de rĂšgles de communication. Il en existe deux variantes, dont une seule est aujourd’hui acceptable.

Caractéristique

HTTP

HTTPS

Sécurité

Données en clair

Données chiffrées (TLS/SSL)

Port

80

443

Certificat

Aucun

Certificat SSL/TLS requis

Usage

⚠ DĂ©prĂ©ciĂ©

✅ Standard actuel

Navigateur

« Non sécurisé »

Cadenas 🔒

La diffĂ©rence tient en un mot : le chiffrement. En HTTP, les donnĂ©es circulent en clair et peuvent ĂȘtre interceptĂ©es et lues ; en HTTPS, elles sont chiffrĂ©es de bout en bout. C’est pourquoi les navigateurs signalent dĂ©sormais les sites en HTTP comme « non sĂ©curisĂ©s » et affichent un cadenas pour ceux en HTTPS.

Structure d’un document HTML¶

Tout document HTML repose sur le mĂȘme squelette. Le voici dans sa forme minimale, celle que vous recopierez au dĂ©but de chaque nouvelle page :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Mon titre</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    
</body>
</html>

Ce gabarit n’a rien d’arbitraire : chaque ligne a une fonction prĂ©cise, que nous dĂ©taillons ci-dessous.

Décryptage de la structure HTML¶

  • <!DOCTYPE html> indique au navigateur qu’il a affaire au standard HTML5. Cette ligne se place toujours en tĂȘte de fichier.

  • <html lang="fr"> est le conteneur racine : tout le document tient Ă  l’intĂ©rieur. L’attribut lang prĂ©cise la langue, ce qui aide les lecteurs d’écran et les moteurs de recherche.

  • <head> regroupe les mĂ©tadonnĂ©es : le titre, l’encodage, les liens vers les feuilles de style. Rien de ce qui s’y trouve n’apparaĂźt directement dans la page.

  • <meta charset="UTF-8"> fixe l’encodage des caractĂšres. UTF-8 gĂšre les accents et la quasi-totalitĂ© des alphabets : sans lui, vos « Ă© » et « Ă  » risquent de s’afficher de travers.

  • <title> donne le titre affichĂ© dans l’onglet du navigateur (et repris dans les rĂ©sultats de recherche).

  • <link rel="stylesheet"> relie la feuille de style CSS au document.

  • <body> contient enfin le contenu visible : tout ce que verra l’internaute.

La rùgle à retenir : le <head> concerne le navigateur et les machines, le <body> concerne l’humain qui consulte la page.

Balises de base¶

Quelques balises reviennent dans presque toutes les pages. En voici les plus courantes.

Balise

Usage

Exemple

<h1> Ă  <h6>

Titres hiérarchisés

<h1>Bienvenue</h1>

<p>

Paragraphe

<p>Texte...</p>

<ul> / <ol>

Listes non ordonnées / ordonnées

<ul><li>Item</li></ul>

<a>

Lien hypertexte

<a href="https://exemple.fr">Site</a>

<img>

Image

<img src="photo.jpg" alt="Description">

Deux rĂšgles importantes mĂ©ritent qu’on s’y arrĂȘte dĂšs maintenant, car elles touchent Ă  l’accessibilitĂ© :

  • L’attribut alt de <img> est obligatoire. Il dĂ©crit l’image pour les personnes qui ne peuvent pas la voir et s’affiche si l’image ne charge pas. Une image sans alt est une image muette.

  • Il faut respecter la hiĂ©rarchie des titres (h1, puis h2, puis h3
), sans sauter de niveau. Cette hiĂ©rarchie n’est pas qu’une question de taille de texte : c’est le plan du document, celui que suivent les lecteurs d’écran et les moteurs de recherche.

Introduction au CSS¶

Une page constituée uniquement de HTML est parfaitement fonctionnelle, mais austÚre : texte noir sur fond blanc, tout aligné à gauche. Le CSS entre en jeu pour la mettre en forme. Voici un premier exemple, lié au HTML précédent par la balise <link> :

/* style.css */
body {
    font-family: Arial, sans-serif;
    background-color: #fafafa;
    margin: 20px;
}

h1 {
    color: #2c3e50;
}

p {
    line-height: 1.5;
}

Lisez ce fichier comme une suite de consignes : « pour le body, utilise telle police, tel fond, telle marge ; pour les h1, applique telle couleur ; pour les p, tel interligne ». Le navigateur applique ces consignes à chaque élément concerné.

Structure d’une rĂšgle CSS¶

Toute rĂšgle CSS suit le mĂȘme moule, qu’il faut bien avoir en tĂȘte car on le retrouvera des centaines de fois :

sélecteur {
    propriété: valeur;
}
  • Le sĂ©lecteur cible les Ă©lĂ©ments HTML Ă  styliser (body, h1, p
).

  • La propriĂ©tĂ© dĂ©signe l’aspect que l’on veut modifier (color, margin
).

  • La valeur prĂ©cise ce que l’on applique (#2c3e50, 20px
).

Une rÚgle peut contenir autant de couples propriété : valeur que nécessaire, chacun terminé par un point-virgule. Cette simplicité apparente est la force du CSS : tout repose sur cette brique élémentaire.

Mise en forme simple¶

Pour commencer à donner du caractÚre à une page, quelques propriétés suffisent.

Propriété

Exemple

Effet

color

color: #333;

Couleur du texte

background-color

background-color: #e0e0e0;

Couleur de fond

margin

margin: 10px;

Espaces externes

padding

padding: 10px;

Espaces internes

text-align

text-align: center;

Alignement du texte

La distinction entre margin et padding est une source classique de confusion, alors fixons-la tout de suite : la frontiĂšre de rĂ©fĂ©rence est la bordure de l’élĂ©ment.

  • Margin : l’espace Ă  l’extĂ©rieur de la bordure, qui Ă©loigne l’élĂ©ment de ses voisins.

  • Padding : l’espace Ă  l’intĂ©rieur de la bordure, qui Ă©loigne le contenu de cette bordure.

Nous y reviendrons longuement avec le Box Model : ces notions sont au cƓur de la mise en page.

En résumé¶

Vous savez dĂ©sormais ce qu’est une page web, comment elle circule sur le rĂ©seau, et quel est le rĂŽle respectif du HTML et du CSS. Vous avez aussi rencontrĂ© vos premiĂšres balises et vos premiĂšres rĂšgles de style. La suite consiste Ă  approfondir le HTML, en commençant par une question essentielle : comment structurer un document pour qu’il ait du sens, pour les humains comme pour les machines.