(web.html1)= # 1. Introduction à l'HTML Le HTML (HyperText Markup Language) a fait son apparition dès 1991 au lancement du Web par Tim Berners-Lee. Son rôle est de **structurer** le contenu d'une page web. Il permet d'ajouter du texte, des liens, des images, des tableaux, etc. ```{panels} :img-top: ../media/berners.jpg Tim Berners-Lee 🇬🇧 ^^^^^ ***Né en 1955*** L'informaticien britannique [**Tim Berners-Lee**](https://fr.wikipedia.org/wiki/Tim_Berners-Lee) est le principal inventeur du Web alors qu'il travaillait au CERN à Genève dans les années 90. Il a inventé les adresses URL, le protocole HTTP et le langage HTML. ---- :img-top: ../media/html.png HTML5 ^^^^^ ***Créé en 1991*** HTML5 (HyperText Markup Language 5) est la dernière révision majeure du [**HTML**](https://fr.wikipedia.org/wiki/HTML5) (format de données conçu pour représenter les pages web). Cette version a été finalisée le 28 octobre 2014. ``` ```{admonition} À retenir :class: attention HTML est un langage de description, pas de programmation ! Il n'est pas possible de faire de logique en HTML. ``` ## Le Web n'est qu'HTML (et quelques autres trucs) Quand vous visitez un site web, le serveur du site vous transmet en réalité un fichier HTML qui sera lu et interprété par votre navigateur. ````{admonition} Micro-activité :class: note Ouvrez Firefox et rendez-vous sur un site web de votre choix, faites un clic droit sur la page et cliquez sur "Enregistrez sous..." pour sauver le fichier html sur votre ordinateur. Vous observez que votre navigateur télécharge un fichier `.html` que vous pouvez ouvrir à nouveau dans votre navigateur (simple doublie clic). La page est-elle identique à tout à l'heure ? A quoi ressemble l'url de la page ? ```{dropdown} Réponse En général, elle sera toute moche ! Car vous ne téléchargez que le fichier `.html` qui contient le contenu et non le fichier `.css` qui contient son style. Pour le contenu, cela dépend de la page que vous avez téléchargée. S'il s'agit d'une page web **statique** (ex: wikipedia), le contenu sera quasi identique après l'avoir téléchargé localement. En revanche, si le site est **dynamique** (ex: youtube), le contenu risque d'être très différent car le serveur n'est plus là pour personaliser le contenu de la page en temps réel pour vous. Concernant l'url, vous pouvez voir qu'il ne pointe plus vers le serveur du site, mais bien vers le fichier `.html` local de votre ordinateur. ``` ```` ## Premier contact avec un code HTML Tout comme n'importe quel autre langage informatique, HTML peut être lu et édité avec n'importe quel éditeur de texte. ````{admonition} Micro-activité :class: note Ouvrez le fichier .html de l'activité précédente avec un éditeur de texte (Visual Studio Code). Il est probable que le fichier ne contienne pas que du code HTML mais également du code Javascript et CSS (nous verrons cela plus tard). Pour trouver le code HTML, cherchez les symboles `<` et `>`. HTML est un langage basé sur des balises représentées par des chevrons `<>`. Voyez-vous des similitudes avec le langage python ? ```{dropdown} Réponse Vous ne devriez retrouver que très peu de similitudes avec python car HTML n'est pas un langage de programmation. La seule similitude pourrait être les indentations (décalage à droite) qui sont présentes dans presque tous les langages informatiques. ``` ```` L'HTML tout seul décrit simplement le contenu, mais pas la forme. Le CSS est un autre langage du Web qui vient compléter le HTML pour rendre les pages plus jolies. Une page HTML sans CSS ne contiendra par exemple aucune couleur (à l'exception des images). ```{admonition} Exercice 1 :class: note Vous allez écrire votre tout premier (simplissime) fichier HTML. Créez un nouveau fichier et changez l'extension du fichier en `.html` (vous devriez pouvoir le faire directement depuis Visual Studio Code). Ouvrez votre fichier, écrivez quelques mots, sauvegardez, puis ouvrez votre fichier avec un navigateur en double-cliquant dessus. Vous devriez voir votre texte s'afficher ! ``` ````{admonition} Exercice 2 :class: note Modifiez le texte de votre fichier `.html`pour ajouter des sauts de lignes (touche `enter`) afin de faire des paragraphes séparés. Est-ce que cela fonctionne ? Les paragraphes sont-ils bien visibles dans le navigateur ? ```{dropdown} Réponse Non, les paragraphes ne seront pas visibles dans le navigateur car il faut utiliser des balises bien spécifiques pour dire que l'on veut faire un paragraphe. C'est ce que nous allons voir dans la prochaine section. ``` ```` ## Un langage de balises Comme évoqué précédemment, le langage HTML utilise ce qu'on appelle des balises. On les écrit entre chevrons `<` et `>`: ```{image} ../media/balises_html.jpg ``` ```{admonition} Touches pour les chevrons :class: hint Sur mac, vous utilisez : - la touche `<` pour faire le chevron ouvrant - et `⇧` + `<` pour le chevron fermant. ``` Les balises indiquent la nature du texte qu'elles encadrent. Elles permettent au navigateur de comprendre ce qu'il faut afficher à l'écran. Voici quelques exemples: - `
...
`: Paragraphe - `` pour créer des paragraphes. Chaque portion de texte entouré de ces balises sera considéré comme un paragraphe séparé. ````{dropdown} Solution ```{code-block} html
Ceci est mon premier paragraphe !
Et en voilà un autre...
``` ```` ````` ```{admonition} Tester facilement son code :class: hint Pour faire des tests rapides, vous pouvez vous rendre sur w3schools qui permet de rapidement voir ce que donne votre code HTML. ``` ## Paramètrer ses balises avec des attributs Dans la section précédente, nous avons vu la balise `Ceci est mon premier paragraphe !
Et en voilà un autre...
Hop encore un paragraphe après l'image !
``` ```` ````` ```{admonition} Pour aller plus loin :class: hint Evidemment, il existe une multitude d'autres attributs associés à la balise `Ceci est mon premier paragraphe !
Et en voilà un autre...
Hop encore un paragraphe après l'image !
``` ```` ````` ```{admonition} Attention :class: attention L'ordre des balises est super **important** ! Elles doivent s'emboiter les unes dans les autres, un peu comme des poupées russes. ``` ```{image} ../media/structure_html.jpg ``` ```{question} Ordre des balises :multi: Parmi les emboîtements suivants, lesquels sont corrects ? * {f}`` * {v}`` * {v}`