¶
HTML
Olivier Pons
(pons@cnam.fr)
2022
Un langage de description (structuration) de Contenu
On sépare le contenu et la présentation
Principe :
(X)HTML
XML (Extensible Markup Language)
Pas besoin d'être connecté !1
Vous écrivez votre code html dans un fichier .html
avec votre éditeur
Vous ouvrez la page dans votre navigateur pour afficher le résultat.
Vous valider le code et reprenez en 1 pour corriger (et/ou completer)
<h3>Tortues</h3>
<p>
Les
tortues sont les seuls <b>reptiles<b> ayant une carapace dure et
osseuse.
<br/><img src=tortue.png alt="une tortue stylisée mangeant une glace dans un transat"/>
ça fait rêver !
</p>
Les tortues sont les seuls reptiles ayant une
carapace dure et osseuse.
ça fait rêver !
<
et se termine par
>
.<nom_de_la_balise> contenu </nom_de_la_balise>
<nom de la balise />
Le /
dans les balises vides est obligatoire en XML et
donc en XHTML, pas en HTML.
Il facilite la lecture ("je n'ai pas oublier de fermer ma balise")
Plusieurs éditeurs l'ajoutent automatiquement.
Mais depuis octobre 2022 il n'est plus recommandé par le w3C et produit un warning au validateur. (discussion ici)
Les balises peuvent avoir des attributs
les attributs explicitent des propriétés des balises
les attributs disponibles dépendent des balises utilisées mais certains sont disponibles pour toutes les balises.
ils peuvent être optionnels ou obligatoires
img
Ici elle a 2 attributs obligatoires !
src
explicite le fichier binaire qui contient
limagealt
donne une description de l'image
Définition : le mot élément désigne une balise et ce qu'elle contient.
Exemple : Dans le code ci-dessous
<em>
et
<h1>
<h1>Cours de <em>HTML</em></h1>
est un élément ;<em>HTML</em>
aussi ;le nom des balises est en minuscules ;
toute balise ouverte est fermée
le noms des attributs est en minuscules
la valeurs des attributs est entre guillemets doubles
les balises ne se croisent jamais :
(Ces règles sont obligatoires en XHTML, mais nous conseillons de les suivre en HTML5)
html
commence le document ; précise éventuellement
sa langue (ici français).
balise head
Informations diverses utiles au
navigateur:
meta charset
titre
body
contient le texte du document.
Défini par la balise head
Il contient des informations sur le document
outre le codage et le titre on peut avoir:
style
script
Défini par la balise body
Le corps contient le contenu de votre page
Peut se composer de :
titres et de sous titres (balises h1-h6
) ,
de paragraphes (balise p
),
de listes (balises ol
, ul
li
),
de tableaux (balises table
,
tr
,td
, th
)...
d'images (balise img
et attributs src
et alt
)
de liens (balise a
et attribut
href
)
etc...
6 niveaux de titres ⇒ 6
balises h1,..,h6
h1
: la plus importante
h6
: la moins importante
paragraphe : balise
<p>
affiché avec un espacement avant et après
Mise en évidence de texte et emphase:
<em>
(mise en évidence) : « c'est
important »<strong>
(forte mise en évidence).<i>
: sert à démarquer un bout de texte
(parce qu'il est dans une autre langue, parce qu'il s'agit d'une
citation...) comme <i>alea jacta est</i>
<code>
sert à citer du codepasser à la ligne dans un paragraphe: le dire explicitement avec
la balise <br/>
(à éviter, préférer
<p>);
<h1>Un gros titre</h1>
<p>Voici le paragraphe associé au
titre 1. Le saut de ligne précédent ne provoquera pas
un saut de ligne à l'affichage.</p>
<p>Voici un bout de texte mis en évidence avec la balise
<code><em></code>:
<em>ceci est à faire remarquer</em>.<br>
L'usage de la balise
<code>br</code> n'est
que rarement utile.
</p>
<p>Et voila le résultat de la balise strong : <strong>très
important</strong> .</p>
<h2>un titre un peu plus petit</h2>
<h3>encore plus petit</h3>
<h4>toujours plus petit</h4>
<h5>etc...</h5>
Voici le paragraphe associé au titre 1. Le saut de ligne précédent ne provoquera pas un saut de ligne à l'affichage.
Voici un bout de texte mis en évidence avec la balise
<em>
: ceci est à faire remarquer.
L'usage de la balise br
n'est que rarement utile.
Et voila le résultat de la balise strong : très important .
<em>
en italiquesUne liste est
<ul>
ou
<ol>
;<li></li>
;Il existe plusieurs sortes de listes :
ul
;ol
<h2>listes à puces</h2>
<p>Les animaux domestiques les plus courants sont:</p>
<ul>
<li>chat</li>
<li>chien</li>
<li>poisson rouge</li>
</ul>
<h2>listes ordonnées</h2>
<p>Pour monter des blancs en neige :</p>
<ol>
<li>Séparer les blancs des jaunes</li>
<li>Mettre un peu de sel dans les blancs</li>
<li>Battre les blancs au fouet</li>
</ol>
Les animaux domestiques les plus courants sont:
Pour monter des blancs en neige :
<ul></ul>
ou
<ol></ol>
ne contient que des éléments
li
<li></li>
<h2>Plusieurs niveaux de listes</h2>
<p>exemple :</p>
<ol>
<li>exercice 1
<ol>
<li>1er élément</li>
<li>2ème élément</li>
<li>3ème élément</li>
</ol>
</li>
<li>exercice 2</li>
</ol>
<p>et non pas :</p>
<ol>
<li>exercice 1</li>
erreur html
(on ne devrait pas fermé le li ici)
<ol>
<li>1er élément</li>
<li>2ème élément</li>
<li>3ème élément</li>
</ol>
<li>exercice 2</li>
<li>exercice 3</li>
</ol>
exemple :
et non pas :
exercice 1
exercice 2
exercice 3
<table>
<tr>
<th></th>
<th>lundi</th>
<th>mardi</th>
</tr>
<tr>
<th>Matin</th>
<td>julie</td>
<td>martin</td>
</tr>
<tr>
<th>Après-midi</th>
<td>Julie</td>
<td>didier</td>
</tr>
<tr>
<th>Soir</th>
<td>Martin</td>
<td>Martin</td>
</tr>
</table>
lundi | mardi | |
---|---|---|
Matin | julie | martin |
Après-midi | Julie | didier |
Soir | Martin | Martin |
<table>
;<tr>
(pour table
row) ;th
« table header » pour titres de lignes ou de
colonnes ;td
« table data » pour les données.thead
et tbody
Titre du tableau : caption
Regroupement de lignes :
La cellule (l2,c2) doit occuper 2 cellules vers la fin de la colonne
attribut rowspan
Regroupement de colonnes :
La cellule (l4,c2) doit occuper 2 cellules vers la fin de la ligne :
attribut colspan
rowspan
et colspan
<table>
<caption>
Mon premier tableau
</caption>
<tr>
<th></th><th>lundi</th> <th>mardi</th>
</tr>
<tr>
<th>Matin</th> <td rowspan="2">julie</td> <td>martin</td>
</tr>
<tr>
<th>Après midi</th><!-- seconde ligne de "julie"-->
<td>didier</td>
</tr>
<tr>
<th>Soir</th>
<td colspan="2">Martin</td> <!-- (occupe deux colonnes) -->
</tr>
</table>
(limites de cases ajoutées en CSS)
Noter l'utilisation des commentaires HTML
Permet de naviguer de page en page ou de de morceaux de page en morceaux de page
Définir un lien
URL : Uniform Resource Locator désigne une resource, par exemple une autre page web.
protocole + adresse :
http://www.cnam.fr/salut.html
: page web ;ftp://ftp.cnam.fr/cours.zip
: fichier sur un serveur
ftp ;file:///home/rosmord/test.html
: fichier sur le disque
local./images/logoCnam.png
:http://www.cnam.fr/
, alors
cela charge http://www.cnam.fr/images/logoCnam.png
lessolutions/examenWEB2022.html
: l'adresse de la
nouvelle page est relative à celle de la page actuelle. Si la page est
http://lecnam.org/COURS/WEB/index.html
http://lecnam.org/COURS/WEB/lessolutions/examenWEB2022.html
Si on est sur la page
http://localhost/CoursHTML/dossier/ici.html
on peut :
<a href="#Nom_ancre">lien</a>
;second.html
;<a href="second.html">lien frère</a>
;sous/la.html
<a href="sous/la.html">lien fils</a>
;../autreDossier/fichier.html
<a href="../autreDossier/fichier.html">lien</a>
;
depart.html
<body>
<h1>Index</h1>
<ul>
<li> <a href="chapitre1.html">chapitre 1 </a></li>
<li> <a href="coursCss/chapitre2.html">chapitre 2</a></li>
</ul>
</body>
chapitre1.html
<h1>chapitre 1</h1>
<p> bla bla bla trtrtrtr trtrtrtr </p>
<p>
<a href="depart.html">Retour à l'index </a>
</p>
chapitre2.html
du sous repertoire
coursCss
Désignent un point précis dans une page.
Définition d'une ancre
Pour nom_d_ancre
noter un nom. Sans espace, ni accent,
avec une lettre comme premier caractère.
On peut remplacer <p>
par n'importe quelle
balise
Note :
Les versions antérieures d'HTML imposaient d'utiliser l'attribut
name
à la place de l'attribut id
, et on ne
pouvait ancrer que des balises a
. Désormais
name
n'est utilisé que dans les formulaires.
id
est légal dans toutes les
balises html.
<h1 id="index">Index</h1>
<p><a href="#chapitre1">chapitre 1</a></p>
<p><a href="#chapitre2">chapitre 2</a></p>
<p> un paragraphe </p>
<h1 id="chapitre1">Chapitre 1</h1>
<p> un paragraphe </p>
<p> un paragraphe </p>
<h2>bli blo</h2>
<h1 id="chapitre2">Chapitre 2</h1>
<p> un paragraphe </p>
<a href="#index">retour à l'index</a>
Pour insérer une image dans une page : balise
<img>
exemple : si on a dans notre repertoire le fichier image
"lion.png"
:
L'attribut alt
est obligatoire pour
l'Accessibilité. Par exemple pour un [lecteur d'écran]
(https://fr.wikipedia.org/wiki/Lecteur_d%27%C3%A9cran)
Si l'image est nécessaire a la comprehension il faut la décrire dans
le alt
.
Si elle ne fait que décorer on peut le laisser vide
alt=""
mais on peut aussi mettre l'image en css
(c'est mieux !).
Différents formats d'image sont possibles: png, jpeg, gif, svg, ...
type block : provoque un retour à la ligne avant et aprés.
p,h1,...h6, ul,ol, dl, li, dl,dd, table …
type inline : ne provoque pas de retour à la ligne : s'insère dans le texte courants. Doit être à l'intérieur d'une balise de type block.
a, em, strong, img ...
On en reparlera en css avec la
propriété display
balises div
et span
div
: balise de type block n'ayant
aucune propriété définie.span
:balise de type inline n'ayant
aucune propriété définie.Des "boites anonymes"
Servent à ajouter de la structuration au texte.
N'ont pas de sémantique particulière (contrairement aux titres, paragraphes...)
N'ont pas de rendu graphique particulier
(comme div
est de type block il y a un saut de ligne par
default après un div
)
On leur donner une sémantique en leur ajoutant des attributs
universels car applicables à toute les balises
(contrairement à src
par exemple qui s'applique sur
img
mais pas sur h
ou p
).
class
: permet de définir une caractéristique d'un
ensemble de baliseid
: permet de référencer un élément
uniquePlusieurs éléments peuvent avoir la même caractéristique
(class
)
mais pas le même identifiant (id
)
<div class="recette" id="laRecetteDeMamie">
<h2 class="plat dessert">gateau au chocolat<h2>
il faut:
<ul classe="ingredients">
<li class="ingredient"> du chocolat</li>
<li class="ingredient"> des oeufs </li>
...
</ul>
<p class="preparation">
faire fondre le chocolat
<span class="inportant"> à feux doux<span>...
</p>
</div>
<div class="recette" id="laRecetteDePapi">
<h2 class="plat dessert">la tarte aux pommes<h2>
...
</div>
faire fondre le chocolat à feux doux...
...
On pourra ajouter un rendu particulier grace à css
racine : html
enfants : head, body
enfants de body : h1,p,div
descendants de body: h1,p,div,h1,p,h2,em
Certains noeuds de l'arbre ont des attributs
Permet d'inclure une vidéo dans une page. La video peut être désignée
par l'attribut src
, ou, si plusieurs formats sont proposés,
listée dans une balise source
.
<video controls>
<source src="cours.webm" type="video/webm">
<source src="cours.mp4" type="video/mp4">
Désolé, format non disponible.
</video>
Tous les formats ne sont pas reconnus par tout les navigateurs !
Elles ont été définies en regardant les utilisations les plus
courantes de class
et id
.
Elle ont une sémantique précise et normalisée (contrairement aux classes qui ajoutent une sémantique mais dont les noms ne sont pas normalisés).
Par défaut, ces balises se conduisent comme des div.
Pour leur donner un aspect intéressant, il faut utiliser les CSS.
header
head
: délimite un bandeau en haut
de page.
footer
main
nav
une zone qui contient essentiellement des liens (typiquement un menu)
article
header
, qui lui-même contient un titre
(h1...h9
) ;
section
toute les balises https://developer.mozilla.org/fr/docs/Web/HTML/Element
de l'info sur une balise particulière
https://developer.mozilla.org/fr/docs/Web/HTML/Element/
nomDeBalise
le(s) guide(s) sur HTML https://developer.mozilla.org/fr/docs/Learn/HTML