HTML est un language balisé (comme le XML)
Il existe un très grand nombre de balises HTML
Une balise peut s'ouvrir et se fermer comme cela
<exemple> </exemple>
Certaines sont auto-fermante (notez la position du /)
<exemple />
L'espace avant le / est optionnel
<exemple/>
Certaines sont auto-fermante sans avoir de / de fermeture
<exemple>
Elles peuvent contenir du texte ou même d'autres balises
<exemple>Salut</exemple>
<exemple>
<exemple />
</exemple>
Elles peuvent contenir des attributs qui auront une fonction particulière selon la balise
<exemple attribut="valeur"> </exemple>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Titre de la page</title>
</head>
<body>
Hello World
</body>
</html>
Code minimum pour une page HTML
Celles-ci doivent toujours être présentes
On parle d'indentation le fait d'ajouter des espaces en début de ligne afin d'améliorer la lisibilité
Dans la majorité des langages, l'indentation n'a pas d'impact sur la logique du code
On peut indenter avec 2 espaces, 4 espaces ou une tabulation
En HTML, la convention veut qu'on indente tout ce qui se trouve entre l'ouverture et la fermeture d'une balise
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Titre de la page</title>
</head>
<body>
Hello World
</body>
</html>
<img src="https://bruno-simon.com/esin/e1-p2026/resources/image-1.jpg">
<img src="image-1.jpg">
La balise img supporte plusieurs attributs
<img src="https://bruno-simon.com/esin/e1-p2026/resources/image-1.jpg" alt="Titre de l'image" width="600" height="400">
<img
src="https://bruno-simon.com/esin/e1-p2026/resources/image-1.jpg"
alt="Titre de l'image"
width="600"
height="400"
>
<h1>Titre principal</h1>
<h2>Titre secondaire</h2>
<h3>Titre tertiaire</h3>
Les titres n'ont pas d'attribut particulier
Le titre le plus important doit se trouver dans un h1. Il faut éviter d'avoir plusieurs h1 dans une même page
h1 > h2 > h3 > h4 > ...
Les moteurs de recherche s'en servent pour comprendre le contenu
Mon text
<br>
<br>
<br>
La suite
Aller à la ligne en HTML n'aura pas pour effet d'aller à la ligne sur la page
Pour cela, il faut utiliser la balise <br> pouvant aussi s'écrire <br />
Liste de courses
<ul>
<li>Tomates</li>
<li>Fromage</li>
<li>Jambon</li>
</ul>
Ordre de passage
<ol>
<li>François</li>
<li>Jacques</li>
<li>Nicolas</li>
</ol>
Chapitres
<ol type="I">
<li>Premier Chapitre</li>
<li>Deuxième Chapitre</li>
<li>Troisième Chapitre</li>
</ol>
Une liste doit se trouver entre les balises ul ou ol et chaque item de la liste doit se trouver entre les balises li
ol permet d'avoir des numéros à la place des puces
La balise ol supporte l'attribut type pouvant avoir comme valeur
<p>Ceci est un paragraphe</p>
<p>Ceci est un autre paragraphe</p>
Les paragraphes servent simplement à délimiter des blocks de texte et à créer une marge en dessous
Il existe de nombreuses balises de texte
<strong> | Texte important |
<em> | Texte d'emphase |
<small> | Texte peu important |
<del> | Texte supprimé |
<sub> | Sous texte |
<sup> | Sur texte |
<a href="page-2.html">Accéder à la page 2</a>
Les liens permettent de diriger l'utilisateur vers une autre page
Ce peut être une autre page du même site ou une page sur un autre site
La balise a supporte plusieurs attributs
<a href="page-2.html" title="Page 2" target="_blank">Accéder à la page 2</a>
<video src="https://bruno-simon.com/esin/e1-p2026/resources/video.mp4"></video>
La balise video permet d'ajouter une vidéo dans la page sans utiliser Flash
Elle accepte plusieurs attributs
<video src="http://bruno-simon.com/video.mp4" autoplay loop controls poster="mon-image.jpg" width="600" height="400"></video>
<video
src="http://bruno-simon.com/video.mp4"
autoplay
loop
controls
poster="mon-image.jpg"
width="600"
height="400"
></video>
<audio src="https://bruno-simon.com/esin/e1-p2026/resources/audio.mp3"></audio>
La balise audio permet d'ajouter un son dans la page sans utiliser Flash
Elle accepte plusieurs attributs
<audio src="http://bruno-simon.com/audio.mp3" autoplay loop controls></audio>
<audio
src="http://bruno-simon.com/audio.mp3"
autoplay
loop
controls
></audio>
<table>
<tr>
<th>Nom</th>
<th>Prénom</th>
</tr>
<tr>
<td>François</td>
<td>Mitterrand</td>
</tr>
<tr>
<td>Jacques</td>
<td>Chirac</td>
</tr>
<tr>
<td>Nicolas</td>
<td>Sarkozy</td>
</tr>
</table>
Un tableau est créé avec la balise table
Une ligne du tableau est créée avec la balise tr
Une colonne du tableau est créée avec la balise td
Cette colonne peut-être une entête avec la balise th
Table accepte plusieurs attributs
tr accepte plusieurs attributs
td et th acceptent plusieurs attributs
<form action="mon-script.php" method="GET">
<input type="text">
</form>
Un formulaire est créé avec la balise form
La majorité des champs sont créés avec la balise input (sauf quelques exceptions) à l'intérieur du form
Form accepte plusieurs attributs
<form action="mon-script.php" method="GET">
<label for="first-name">Nom</label>
<input id="first-name" type="text">
</form>
La balise label permet d'associer un texte avec un champ
Ici, on associe le texte "Nom" avec le champ de texte
Pour qu'un label soit associé à un champ, on utilise la même valeure dans l'attribut for du label et dans l'attribut id du champ
Lorsque le visiteur va cliquer sur le label, ça aura le même effet que s'il avait cliqué sur le champ
<form action="mon-script.php" method="GET">
<input type="text" name="text" value="Mon text">
<br>
<input type="password" name="password" value="password">
<br>
<input type="search" name="search" value="search">
<br>
<input type="color" name="color" value="#ff0000">
<br>
<input type="date" name="date" value="1990-01-17">
<br>
<input type="month" name="month" value="2014-03">
<br>
<input type="week" name="week" value="2014-W12">
<br>
<input type="time" name="time" value="10:25">
<br>
<input type="email" name="email" value="toto@tata.com">
<br>
<input type="tel" name="tel" value="+33631446033">
<br>
<input type="url" name="url" value="http://google.com">
<br>
<input type="number" name="number" value="1337">
<br>
<input type="checkbox" name="checkbox" value="1">
<br>
<input type="radio" name="radio" value="value">
<br>
<input type="range" name="range" value="60" max="100" max="20">
<br>
<input type="file" name="file">
<br>
<select name="select" multiple>
<option value="1">Toto</option>
<option value="2">Tata</option>
<option value="3">Tutu</option>
</select>
<br>
<textarea name="textarea" cols="30" rows="10">Mon text</textarea>
<br>
<input type="hidden" name="hidden" value="value">
<br>
<input type="reset" name="reset" value="reset">
<br>
<input type="submit" name="submit" value="submit">
</form>
Certains de ces champs ne fonctionnent pas sur tous les navigateurs
On peut se référer au site caniuse.com
Les données envoyées par le formulaire ne peuvent être traitées que par des script développés avec des languages "back" comme PHP, Node.js ou Python
<div>
Du <span>contenu</span>
</div>
Ce code ne semble avoir aucun effet
Les balises div et span sont neutre par défaut
Elle n'ont aucun style
Nous les utiliserons dans le seul but de leur donner du style et regrouper des éléments
Toutes les balises que nous venons de voir peuvent être séparées en deux catégories : Inline et Block
<span>Inline</span>
<span>Inline</span>
<span>Inline</span>
<p>block</p>
<p>block</p>
<p>block</p>
Notez comment se positionnent les mots "inline" et "block"
Les inlines restent sur la même ligne
Les blocks prennent toute la largeur possible
On peut ajouter des commentaires
Ceux-ci ne seront pas interpretés par le navigateur
<!-- Ceci est un commentaire -->
Les commentaires aident à s'y retrouver dans le code
Les balises sémantiques sont des balises qui ont pour vocation d'aider un parseur à comprend le contenu.
Un parseur (ou crawler) est par exemple un moteur de recherche venu indéxer la page.
Nous utilisons déjà des balises sémantiques
<h1>Le titre de ma page</h1>
<h2>Le sous-titre</h2>
<p>Un petite introduction</p>
Mais il en existe plein d'autres
⚠️ Une balise sémantique ne doit pas être utilisée pour son style
<section> | Une section de la page |
<article> | Un article au sens large |
<header> | Une entête |
<footer> | Une pied de page |
<nav> | Une navigation |
<aside> | Un contenu complémentaire |
Liste des balises : www.w3schools.com/tags/default.asp