HyperText Markup Language est une des trois inventions à la base du World Wide Web, avec le HyperText Transfer Protocol et les adresses web.
Un hypertexte est un document ou un ensemble de documents contenant des unités d'information liées entre elles par des hyperliens.
HTML a été inventé pour permettre d'écrire des documents hypertextuels liant les différentes ressources d’Internet.
En 1991, Tim Berners-Lee – ci-contre – un informaticien britannique travaillant au CERN, annonce publiquement le web et donne le lien d'un document .html.
En 2021, nous en sommes à la version 5 de HTML.
Le HTML est un langage descriptif. C'est à dire qu'il se contente de décrire l'apparence du résultat mais qu'il ne donne pas lieu à une exécution d'instructions.
Un fichier .html est un simple fichier texte. À l'aide de balises il indique les éléments de mise en forme. Quand on ouvre le fichier avec un éditeur de texte, on voit les balises telles qu'elles sont écrites dans le fichier.
Un navigateur – Firefox, Chrome, Safari… – à l'ouverture du fichier, interprète ces balises ce qui modifie l'apparence du texte.
La plupart des balises fonctionnent comme des parenthèses : balise ouvrante, balise fermante.
Contenu d'un fichier .html élémentaire.
<!DOCTYPE html>
<html>
<head>
<!--
la zone head = entête permet de préciser la configuration de la page
-->
<title>Titre de la page</title>
</head>
<body>
<!-- corps = contenu de la page -->
</body>
</html>
Les indentations ne sont pas indispensables.
Dans un document .html, les retours à la ligne sont ignorés et en l'absence de balises, tout le contenu apparaîtrait à la suite, sans retour à la ligne. Dans cette perspective, on distingue deux types de balises :
Par exemple, si je veut mettre des mots en gras, c'est un élément de mise en forme qui nécessite une paire de balises, mais je ne veux pas que ces balises fassent revenir en début de ligne. C'est un cas inline.
Les balises ont un fonctionnement par défaut, soit block, soit inline. Mais tout est modifiable.
<!-- Début d'un commentaire qui peut s'étaler sur plusieurs lignes... Fin du commentaire -->
Dans un fichier texte, les caractères sont codés avec un code – Voir cours. Comme un fichier internet peut être vu dans le monde entier et que les caractères des différents pays peuvent être très différents, il est important de préciser l'encodage utilisé. En Europe on utilisera le plus souvent UTF8.
<meta charset="UTF-8"> <!-- à placer dans <head> -->
En général, on ne devrait pas en avoir besoin. On peut utiliser des éléments de type block et des marges.
Si on a besoin de laisser un espace vertical, il est plus rigoureux d'utiliser des marges plutôt que de sauter des lignes. Cela est également vrai pour un document de traitement de texte comme Word.
<br/>
Balises de type block
<h1>Titre de niveau 1</h1> <h2>Titre de niveau 2</h2> <h3>Titre de niveau 3</h3> <h4>Titre de niveau 4</h4> <h5>Titre de niveau 5</h5> <h6>Titre de niveau 6</h6>
Balises de type inline
<b>Texte en gras</b> <i>Texte en italique</i>
Élément standard permettant de former proprement les paragraphes de texte sans recours à <br/>.
<p>mon paragraphe...</p>
Il peut être utile de délimiter une zone pour lui appliquer une mise en forme personnalisable ou pour identifier la zone.
<span>...</span> <!-- balise générique inline --> <div>...</div> <!-- balise générique block -->
<a href="adresse du lien">Texte d'un lien hypertexte</a> <img src="adresse de l'image" >
<ul> <li>Un item</li> <li>Un autre item</li> </ul>
<ol> <li>Un item</li> <li>Un autre item</li> </ol>
<table> <!-- Début table -->
<tr> <!-- Début d'une ligne -->
<td>Une cellule</td>
<td>Une autre cellule</td>
</tr>
<tr> <!-- Une autre ligne --> ... </tr>
</table>
Pour ajouter des couleurs, des marges, des cadres… on utilise les styles CSS Cascading Style Sheets.
Il existe beaucoup d'options CSS. Le mieux est d'aller voir sur une Référence chaque fois que nécessaire.
Les éléments de style CSS peuvent être indiqués de diverse façons.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Illustration méthode 1</title>
</head>
<body style="width=80%;">
<p style="font-family:Arial, sans-serif; font-size:12pt; text-align:justify; text-indent: 20px;">Petit bloc de texte comme exemple.</p>
<p style="font-family:Arial, sans-serif; font-size:12pt; text-align:justify; text-indent: 20px;">Autre bloc de texte comme exemple.</p>
<p style="font-family:Arial, sans-serif; font-size:12pt; text-align:justify; text-indent: 20px; color:#FF0000;">Autre bloc de texte mais écrit en couleur.</p>
</body>
</html>
Cette méthode est mauvaise :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Illustration méthode 1</title>
<style type="text/css">
body { width:80%; }
p {
font-family:Arial, sans-serif;
font-size:12pt;
text-align:justify;
text-indent: 20px;
}
p.encouleur { color: #FF0000; }
</style>
</head>
<body>
<p>Petit bloc de texte comme exemple.</p>
<p>Autre bloc de texte comme exemple.</p>
<p class="encouleur">Autre bloc de texte mais écrit en couleur.</p>
</body>
</html>
Cette méthode est déjà meilleure : elle est beaucoup plus lisible.
<p>,<p> ayant la classe encouleur<p> se voient affecter le style de la ligne 8<p> a la classe encouleur. Le bloc se verra affecter les styles des lignes 8 et 14.On commence par définir un fichier CSS :
/* Fichier styles.css */
body { width:80%; }
p {
font-family:Arial, sans-serif;
font-size:12pt;
text-align:justify;
text-indent: 20px;
}
p.encouleur { color: #FF0000; }
Et on fait le lien vers ce fichier dans le HTML :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Illustration méthode 1</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<p>Petit bloc de texte comme exemple.</p>
<p>Autre bloc de texte comme exemple.</p>
<p class="encouleur">Autre bloc de texte mais écrit en couleur.</p>
</body>
</html>
C'est la meilleure option :
Une même balise peut recevoir plusieurs classes CSS en même temps.