# TP Introduction au langage HTML5
**Spécialité NSI - Première**
---
## Objectifs du TP
- Comprendre l'architecture client-serveur et le protocole HTTP
- Découvrir la structure d'une page HTML5
- Maîtriser les balises HTML essentielles
- Créer une page web complète
**Matériel** : PC + Navigateur (Firefox, Chrome) + Éditeur de code (VS Code, Notepad++)
---
## Partie A : Comment fonctionne le Web ?
### A.1 L'architecture client-serveur
Quand vous tapez une adresse web dans votre navigateur, que se passe-t-il ?
```
┌─────────────┐ ┌─────────────┐
│ │ (1) Requête HTTP │ │
│ NAVIGATEUR │ ─────────────────────────► │ SERVEUR │
│ (Client) │ │ WEB │
│ │ ◄───────────────────────── │ │
│ │ (2) Réponse (code HTML) │ │
└─────────────┘ └─────────────┘
```
1. **Le client (navigateur)** envoie une **requête HTTP** au serveur
2. **Le serveur** renvoie le **code HTML** de la page demandée
3. **Le navigateur interprète** le code et affiche la page
### A.2 Le protocole HTTP
**HTTP** (*HyperText Transfer Protocol*) est le protocole utilisé sur Internet depuis 1990 pour transférer des pages web.
Une **URL** (*Uniform Resource Locator*) est l'adresse d'une ressource sur le web :
```
https://www.wikipedia.org/wiki/HTML
└─┬─┘ └──────┬──────┘ └────┬────┘
protocole serveur chemin
```
### A.3 Le HTML
**HTML** (*HyperText Markup Language*) est un langage de **balisage** qui permet de structurer le contenu d'une page web : texte, images, liens...
> **Important** : HTML structure le contenu (le fond), CSS gère l'apparence (la forme).
**Exercice A.1** : Ouvrez n'importe quelle page web, faites un clic droit → "Afficher le code source". Observez la structure du code HTML.
---
## Partie B : Structure d'une page HTML5
### B.1 Les balises
Les pages HTML sont composées de **balises** entourées de chevrons `< >`.
Il existe deux types de balises :
**Balises en paires** (ouvrante + fermante) :
```html
Ceci est un titre
```
**Balises orphelines** (auto-fermantes) :
```html
```
### B.2 Les attributs
Les attributs complètent les balises avec des informations supplémentaires :
```html
Contenu
```
Exemple :
```html
```
### B.3 Structure de base d'une page HTML5
Créez un fichier `page.html` avec le code suivant :
```html
Ma première page
```
| Élément | Rôle |
|---------|------|
| `` | Indique qu'il s'agit d'une page HTML5 |
| `` | Balise racine, englobe tout le contenu |
| `` | En-tête (métadonnées, titre, liens CSS) |
| `` | Encodage des caractères (accents) |
| `` | Titre affiché dans l'onglet du navigateur |
| `` | Corps de la page (contenu visible) |
| `` | Commentaire (non affiché) |
**Exercice B.1** : Créez le fichier `page.html`, ouvrez-le dans votre navigateur. Que voyez-vous ?
---
## Partie C : Organiser le contenu
### C.1 Les paragraphes
```html
Ceci est un paragraphe.
Ceci est un autre paragraphe.
```
Pour un simple retour à la ligne dans un paragraphe : ` `
### C.2 Les titres
HTML propose 6 niveaux de titres, de `
` (le plus important) à `
` :
```html
Titre principal
Sous-titre
Sous-sous-titre
```
> **Attention** : Ne confondez pas `` (titre de l'onglet) et `
` (titre dans la page).
**Exercice C.1** : Dans votre fichier, ajoutez un titre `
` et deux paragraphes dans le ``.
### C.3 Mettre en valeur le texte
```html
Ce mot est important.
Ce mot est mis en valeur.
Ce mot est surligné.
```
| Balise | Signification | Rendu par défaut |
|--------|---------------|------------------|
| `` | Important | **gras** |
| `` | Emphase | *italique* |
| `` | Marqué | surligné |
> **Note** : Ces balises indiquent le **sens** du texte, pas son apparence. L'apparence peut être modifiée en CSS.
### C.4 Les listes
**Liste non ordonnée** (à puces) :
```html
Premier élément
Deuxième élément
Troisième élément
```
**Liste ordonnée** (numérotée) :
```html
Première étape
Deuxième étape
Troisième étape
```
**Exercice C.2** : Ajoutez une liste de vos 3 langages de programmation préférés.
---
## Partie D : Les liens
### D.1 Lien vers un autre site (lien absolu)
```html
```
### D.2 Lien vers une page de votre site (lien relatif)
Si `page2.html` est dans le même dossier :
```html
Aller à la page 2
```
Si `page2.html` est dans un sous-dossier `pages/` :
```html
Aller à la page 2
```
Si `page2.html` est dans le dossier parent :
```html
Aller à la page 2
```
### D.3 Lien vers une ancre (même page)
Pour créer un sommaire cliquable sur une longue page :
```html
Aller à la section 2
Section 2
```
**Exercice D.1** : Créez deux fichiers HTML qui se lient mutuellement.
---
## Partie E : Les images
### E.1 Insérer une image
```html
```
| Attribut | Rôle | Obligatoire |
|----------|------|-------------|
| `src` | Chemin vers l'image | Oui |
| `alt` | Texte alternatif (accessibilité) | Oui |
| `width` | Largeur en pixels | Non |
| `height` | Hauteur en pixels | Non |
### E.2 Formats d'images pour le web
| Format | Usage |
|--------|-------|
| **JPEG** (.jpg) | Photos |
| **PNG** (.png) | Illustrations, logos, transparence |
| **GIF** (.gif) | Animations simples |
| **SVG** (.svg) | Icônes, logos vectoriels |
| **WebP** (.webp) | Format moderne, bonne compression |
### E.3 Image cliquable
```html
```
**Exercice E.1** : Téléchargez une image, placez-la dans un dossier `images/` et insérez-la dans votre page.
---
## Partie F : Les tableaux
### F.1 Structure de base
```html
```
**Exercice F.1** : Créez un tableau de votre emploi du temps (une journée).
---
## Partie G : Balises sémantiques HTML5
HTML5 introduit des balises pour structurer une page de manière sémantique :
```
┌─────────────────────────────────────┐
│ │
├─────────┬───────────────────────────┤
│ │ │
│