# Projet Terrarium Partie 1 : Introduction à HTML

> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
## Quiz avant le cours
[Quiz avant le cours](https://ff-quizzes.netlify.app/web/quiz/15)
> Regardez la vidéo
>
> [](https://www.youtube.com/watch?v=1TvxJKBzhyQ)
### Introduction
HTML, ou HyperText Markup Language, est le 'squelette' du web. Si CSS 'habille' votre HTML et que JavaScript lui donne vie, HTML est le corps de votre application web. La syntaxe de HTML reflète même cette idée, puisqu'elle inclut des balises "head", "body" et "footer".
Dans cette leçon, nous allons utiliser HTML pour structurer le 'squelette' de l'interface de notre terrarium virtuel. Il comportera un titre et trois colonnes : une colonne à gauche et une à droite où se trouveront les plantes déplaçables, et une zone centrale qui représentera le terrarium en verre. À la fin de cette leçon, vous pourrez voir les plantes dans les colonnes, mais l'interface aura un aspect un peu étrange ; ne vous inquiétez pas, dans la section suivante, vous ajouterez des styles CSS pour améliorer l'apparence de l'interface.
### Tâche
Sur votre ordinateur, créez un dossier appelé 'terrarium' et, à l'intérieur, un fichier nommé 'index.html'. Vous pouvez le faire dans Visual Studio Code après avoir créé votre dossier terrarium en ouvrant une nouvelle fenêtre VS Code, en cliquant sur 'ouvrir un dossier', et en naviguant vers votre nouveau dossier. Cliquez sur le petit bouton 'fichier' dans le volet Explorateur et créez le nouveau fichier :

Ou
Utilisez ces commandes dans votre terminal git bash :
* `mkdir terrarium`
* `cd terrarium`
* `touch index.html`
* `code index.html` ou `nano index.html`
> Les fichiers index.html indiquent à un navigateur qu'il s'agit du fichier par défaut dans un dossier ; des URL comme `https://anysite.com/test` peuvent être construites à partir d'une structure de dossier incluant un dossier appelé `test` avec `index.html` à l'intérieur ; `index.html` n'a pas besoin d'apparaître dans l'URL.
---
## Le DocType et les balises html
La première ligne d'un fichier HTML est son doctype. Il est un peu surprenant de devoir inclure cette ligne tout en haut du fichier, mais elle indique aux anciens navigateurs qu'ils doivent rendre la page en mode standard, en suivant la spécification HTML actuelle.
> Astuce : dans VS Code, vous pouvez survoler une balise pour obtenir des informations sur son utilisation à partir des guides de référence MDN.
La deuxième ligne doit être la balise d'ouverture ``, suivie immédiatement de sa balise de fermeture ``. Ces balises sont les éléments racines de votre interface.
### Tâche
Ajoutez ces lignes en haut de votre fichier `index.html` :
```HTML
```
✅ Il existe plusieurs modes qui peuvent être déterminés en définissant le DocType avec une chaîne de requête : [Mode Quirks et Mode Standards](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Ces modes étaient utilisés pour prendre en charge des navigateurs très anciens qui ne sont généralement plus utilisés aujourd'hui (Netscape Navigator 4 et Internet Explorer 5). Vous pouvez vous en tenir à la déclaration standard du doctype.
---
## Le 'head' du document
La zone 'head' du document HTML inclut des informations cruciales sur votre page web, également appelées [métadonnées](https://developer.mozilla.org/docs/Web/HTML/Element/meta). Dans notre cas, nous indiquons au serveur web auquel cette page sera envoyée pour être rendue, ces quatre éléments :
- le titre de la page
- les métadonnées de la page, y compris :
- le 'jeu de caractères', qui indique quel encodage de caractères est utilisé dans la page
- des informations sur le navigateur, y compris `x-ua-compatible` qui indique que le navigateur IE=edge est pris en charge
- des informations sur le comportement du viewport lorsqu'il est chargé. Définir le viewport avec une échelle initiale de 1 contrôle le niveau de zoom lorsque la page est chargée pour la première fois.
### Tâche
Ajoutez un bloc 'head' à votre document entre les balises d'ouverture et de fermeture ``.
```html
Welcome to my Virtual Terrarium
```
✅ Que se passerait-il si vous définissiez une balise meta viewport comme ceci : `` ? Lisez-en plus sur le [viewport](https://developer.mozilla.org/docs/Web/HTML/Viewport_meta_tag).
---
## Le `body` du document
### Balises HTML
En HTML, vous ajoutez des balises à votre fichier .html pour créer des éléments d'une page web. Chaque balise a généralement une balise d'ouverture et de fermeture, comme ceci : `
bonjour
` pour indiquer un paragraphe. Créez le corps de votre interface en ajoutant un ensemble de balises `` à l'intérieur de la paire de balises `` ; votre balisage ressemble maintenant à ceci :
### Tâche
```html
Welcome to my Virtual Terrarium
```
Maintenant, vous pouvez commencer à construire votre page. Normalement, vous utilisez des balises `
` pour créer les différents éléments d'une page. Nous allons créer une série d'éléments `
` qui contiendront des images.
### Images
Une balise HTML qui n'a pas besoin de balise de fermeture est la balise ``, car elle possède un élément `src` qui contient toutes les informations nécessaires à la page pour rendre l'élément.
Créez un dossier dans votre application appelé `images` et ajoutez-y toutes les images du [dossier source](../../../../3-terrarium/solution/images) ; (il y a 14 images de plantes).
### Tâche
Ajoutez ces images de plantes dans deux colonnes entre les balises `` :
```html
```
> Note : Spans vs. Divs. Les Divs sont considérés comme des éléments 'block', et les Spans comme des éléments 'inline'. Que se passerait-il si vous transformiez ces divs en spans ?
Avec ce balisage, les plantes apparaissent maintenant à l'écran. Cela a un aspect assez mauvais, car elles ne sont pas encore stylées avec CSS, ce que nous ferons dans la prochaine leçon.
Chaque image possède un texte alternatif qui apparaîtra même si vous ne pouvez pas voir ou rendre une image. C'est un attribut important à inclure pour l'accessibilité. Vous en apprendrez davantage sur l'accessibilité dans les leçons futures ; pour l'instant, rappelez-vous que l'attribut alt fournit des informations alternatives pour une image si un utilisateur ne peut pas la voir (en raison d'une connexion lente, d'une erreur dans l'attribut src, ou si l'utilisateur utilise un lecteur d'écran).
✅ Avez-vous remarqué que chaque image a le même texte alternatif ? Est-ce une bonne pratique ? Pourquoi ou pourquoi pas ? Pouvez-vous améliorer ce code ?
---
## Balisage sémantique
En général, il est préférable d'utiliser des 'sémantiques' significatives lors de l'écriture de HTML. Qu'est-ce que cela signifie ? Cela signifie que vous utilisez des balises HTML pour représenter le type de données ou d'interaction pour lequel elles ont été conçues. Par exemple, le texte principal d'un titre sur une page devrait utiliser une balise `
`.
Ajoutez la ligne suivante juste en dessous de votre balise d'ouverture `` :
```html
My Terrarium
```
Utiliser un balisage sémantique, comme avoir des en-têtes en `
` et des listes non ordonnées rendues en `
`, aide les lecteurs d'écran à naviguer sur une page. En général, les boutons devraient être écrits comme `
` :
```html
```
✅ Même si vous avez ajouté ce balisage à l'écran, vous ne voyez absolument rien s'afficher. Pourquoi ?
---
## 🚀Défi
Il existe des balises 'anciennes' amusantes en HTML qui sont encore intéressantes à expérimenter, bien que vous ne devriez pas utiliser des balises obsolètes comme [ces balises](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements) dans votre balisage. Cependant, pouvez-vous utiliser l'ancienne balise `