Un problème avec un appareil électroménager ?
Vous cherchez un renseignement ?
Trouvez une réponse sur www.tout-electromenager.fr
Vous êtes ici : Matières (informatique) > Thèmes (Créer un site web statique) > Cours (Partie 2 : La sémantique avec XHTML)
Cette création est mise à disposition sous un
contrat Creative Commons
.
Auteur : E.RAVRAT
Dernière mise à jour : lundi 08 Septembre 2008 à 16:17:10
Lorsqu'un auteur écrit un article, un livre,... l'auteur ne se
contente pas d'aligner des mots les uns à la suite des autres. Il crée
des paragraphes, des listes, des tableaux,... afin de donner plus
de sens au contenu créé et ainsi faciliter sa
compréhension.
L'objectif de cette partie est de vous permettre de faire la même chose. Vous allez apprendre à créer un contenu pour votre page web qui a un sens. Ce sens, cette sémantique s'exprime grâce à l'utilisation de balises prévues à cet effet.
Cette partie concerne un chapitre composé de 3 parties :
Nous avons vu dans la première partie de ce chapitre la
structure de base commune à toutes les pages HTML.
Je vous la rappelle :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>ma première page web !!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
</body>
</html>Mais comme vous aviez pu le constater, la page n'affiche
absolument rien !
Mais pourquoi ne s'affiche-t-il rien à l'écran avec ce code (réponse à la question dans la partie 1)? afficher/masquer la réponse
Les éléments qui doivent s'afficher à
l'écran doivent être placés entre les balises
<body></body>. Or, dans notre code, elles
ne contiennent rien !
Cette partie 2 du chapitre va vous apprendre à créer une page
web avec un contenu. Le terme contenu est très important car une page
web sans contenu n'a aucun intérêt. Un contenu n'a d'intérêt que s'il a
un sens. Le texte que vous souhaitez afficher au visiteur doit être
significatif. Il faut un contenu SEMANTIQUE !
Le terme sémantique relève de la signification et
notamment de la signification des mots en contexte. C'est ce contexte
qu'il faut exprimer à l'aide de balises HTML. Si vous
souhaitez écrire quelque chose dans un paragraphe, vous ne le ferez pas
dans un tableau ! Et bien c'est cette logique qu'il faut développer
pour avoir une bonne sémantique.
C'est une fois seulement après avoir écrit la totalité de
votre page en ayant soigné la sémantique que vous pourrez passer à la
mise en forme. Effectivement, votre page doit être compréhensible sans
aucune mise en forme particulière, seulement grâce à vos balises HTML,
sinon, c'est que la sémantique n'est pas bonne.
Il existe de nombreuses balises HTLM mais l'objectif de cette
partie est de vous présenter les plus utilisées, celles que l'on
retrouve systématiquement dans toutes les pages web. Cela dit, ces
balises suffisent pour couvrir 90 % des besoins !
La composition d'un document classique contient généralement
les éléments suivants :
C'est d'ailleurs le cas de ce cours ! Vous pouvez donc
constater que l'on peut déjà faire pas mal de choses.
Attention : je considère que vous avez votre page avec la structure de code rappelée précédemment. Les éléments de code nouveaux abordés dans la suite de cette partie doivent être systématiquement placés entre les balises <body></body> comme ceci :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>ma première page web !!!</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
placez ici toutes les balises HTML faisant l'objet d'une explication dans la suite de cette partie de cours
</body>
</html>Remarque : Avant de poursuivre, vérifiez l'encodage de votre fichier contenant votre code. Il doit être encodé en UTF-8. Avec pspad, dans le menu, cliquez sur Format puis sur UTF-8.
Les titres sont fondamentaux pour indiquer le contenu d'un
document ou d'une partie d'un document.
Concernant le cours que vous êtes en train de lire, le titre "Créer sa
page web, partie 2 : la sémantique avec XHTML" informe d'emblée le
lecteur sur le contenu de la page.
Ensuite, il y a des sous titres (ex : "Les titres") qui permettent de
segmenter le contenu de la page par "idées" abordées. Il s'agit bien là
de faire de la sémantique. On donne du sens à sa page en la structurant.
Il existe plusieurs niveaux de titres. Effectivement,
un titre peut contenir des sous titres qui peuvent à leur
tour contenir des sous titres et ainsi de suite. Il est alors logique
de les distinguer. HTML a prévu ce cas avec la balise suivante :
<h1>Ceci est mon titre utilisant la balise h1</h1>
Quelle est l'utilité de la balise "</h1>" ? afficher/masquer la réponse
La balise </h1> indique
la fin du titre.
Ecrivez la ligne de code précédente et visualisez le résultat
dans votre navigateur après avoir enregistré les modifications.
Je vous rappelle qu'il faut cliquer sur le fichier que vous avez
créé comme vous le feriez avec un fichier word. De plus, une
erreur très courante au début est de ne pas enregistrer les
modifications effectuées. Adopter par conséquent le réflexe de
sauvegarder votre travail très régulièrement et avant chaque affichage
de la page.
Utilisez l'icône suivant sur pspad :
J'espère que vous obtenez ce résultat : afficher/masquer la réponse

Maintenant, vous allez ajouter le code suivant (toujours entre
les balises <body>)
<h1>Ceci est un titre de niveau 1</h1>
<h2>Ceci est un titre de niveau 2</h2>
<h3>Ceci est un titre de niveau 3</h3>
<h4>Ceci est un titre de niveau 4</h4>
<h5>Ceci est un titre de niveau 5</h5>
<h6>Ceci est un titre de niveau 6</h6>Enregistrez les modifications.
Pour visualiser les modifications effectuées, il n'est pas
nécessaire de fermer le fichier puis de l'ouvrir à nouveau avec votre
navigateur. Il suffit de cliquer sur l'icone actualiser qui permet de
mettre la page affichée à jour.
Généralement, ce bouton représente une flêche qui tourne :
sur firefox,
avec internet explorer
Vous devriez obtenir cela : afficher/masquer la réponse

D'après vous, quelle est l'utilité
d'indiquer 1, 2, ... 6 à dans la balise <h> ? afficher/masquer la
réponse
Le chiffre inque
le niveau du titre. Cela permet de comprendre qu'un titre de
niveau 3 par exemple est un sous titre du titre de niveau 2. Que le
titre de niveau 2 est le sous titre du titre de niveau 1.
Les niveaux de titres sont-ils représentés de façon identique ? Pourquoi selon vous ? afficher/masquer la réponse
Non. Cette représentation (du plus gros
au plus petit) permet de différencier les niveaux de titres de façon
visuelle.
Remarque 1 : Les balises <h1></h1> ne peuvent contenir aucune balise de type "bloc".
Remarque 2 à ranger quelque part dans un endroit de son cerveau pour une utilisation ultérieure : Les balises <h_></h_> sont des balises de type "bloc".
Vous savez désormais structurer votre page avec des titres et des sous titres.
Il s'agit maintenant de donner un peu de contenu à
la page. Pour cela, nous allons écrire des paragraphes.
Ecrire le contenu d'une page web revient finalement au même
travail que d'écrire un exposé ou un document quelconque sur papier ou
traitement de texte. Après avoir donné un titre à votre document ou à
votre partie, vous écrivez un paragraphe.
En HTML, la balise qui permet d'écrire un paragraphe est la suivante :
<p>Ceci est mon premier paragraphe et il se situe entre la balise HTML p</p>Comme toujours, il y a une balise qui indique le début du
paragraphe (<p>) et une autre qui indique la fin du
paragraphe (</p>).
Recopiez le code ci-dessous (toujours entre les balises
<body></body>) et affichez le résultat sur
votre navigateur (pensez à enregistrer les modifications et à
actualiser votre page web).
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe</p>Voici le résultat : afficher/masquer la réponse

Maintenant, rentrez le code suivant (enregistrez les modifications, actualisez votre page) :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe</p><p>Voici un second paragraphe</p>Les deux paragraphes sont-ils affichés sur la même ligne ? afficher/masquer la réponse
Non. Comme dans un livre, un rapport,
etc, les paragraphes se positionnent toujours les uns sous les autres.
Ce sont donc bien les balises qui donnent l'indication au navigateur.
Essayez le code suivant en faisant une dizaine de saut de
lignes entre les deux paragraphes (à l'aide de la touche entrée) :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe</p>
<p>Voici un second paragraphe</p>Les deux paragraphes sont-ils espacés ? afficher/masquer la réponse
Non, ils sont toujours situés l'un sous
l'autre comme on peut le voir sur l'image ci-après. Les sauts de lignes
créés dans le code source n'ont pas eu d'influence sur l'affichage

Que pouvez-vous conclure des deux dernières constatations ? afficher/masquer la réponse
La mise en page du code source n'a
aucune influence sur la mise en page du contenu affiché. Celle-ci doit
se faire à l'aide de balises qui indiquent au navigateur comment
afficher les données.
Insérez de nombreux espaces entre les mots du premier paragraphe comme ceci :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe</p>
<p>Voici un second paragraphe</p>Que constatez vous ? afficher/masquer la réponse
Il n'y a aucun changement comme on peut
le voir. Les mots sont toujours séparés par un seul espace.

Poursuivons notre observation en insérant quelques sauts de
ligne à l'aide de la touche entrée au milieu du premier paragraphe :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier
paragraphe</p>
<p>Voici un second paragraphe</p>
Que constatez vous ? afficher/masquer
la
réponse
L'affichage n'est toujours pas
influencé.
Que peut-on conclure des observations précédentes ? afficher/masquer la réponse
Les sauts de lignes dans le code source
ne génèrent aucun saut de ligne à l'affichage.
Concernant les espaces, le navigateur ne prend en compte qu'un seul
espace entre les mots même s'il y en a plusieurs.
La mise en page doit être faite à partir de balises HTML. (pour la mise
en forme, voir la troisième partie composant ce chapitre)
Puisque nous venons de conclure que le saut de ligne devait se
faire avec une balise, nous allons voir comment procéder.
C'est en fait très simple, il faut
utiliser la balise <br
/> là où vous souhaitez faire un saut de ligne.
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier <br />paragraphe</p>
<p>Voici un second paragraphe</p>Remarque : la balise de saut de ligne n'encadre aucun texte puisqu'elle génère un saut de ligne. Il n'y a donc pas de balise fermante. On dit que c'est une balise orpheline. Au moment où vous ouvrez la balise, il faut la fermer également. C'est pour cela que le slash est à apposer après le br.
Procédez à la modification de votre
code et observez le résultat obtenu : afficher/masquer
la
réponse
Voici le résultat à l'écran :

Important : La balise <br
/>
doit toujours être placée à l'intérieur d'autres balises (balise de
paragraphe, d'item de liste, de cellule de tableau)
<p> bla bla bla bla bla bla bla bla bla bla bla</p>
<br /> <!-- ceci n'est pas valide car la balise br n'est pas encadrée par une balise ouvrante et fermante. -->
<p>bli bli bli bli bli bli bli bli</p>
<p> blo blo blo blo blo <br /> blo blo blo</p> <!-- ceci est valide --><!-- cet exemple n'est là que pour illustrer le fait que la balise br doit toujours figurer à l'intérieur d'autres balises. Les balises ul et li sont présentées plus loin dans ce cours -->
<ul>
<li>blo blo blo blo blo <br /> blo blo blo</li> <!-- ceci est valide -->
</ul><!-- cet exemple n'est là que pour illustrer le fait que la balise br doit toujours figurer à l'intérieur d'autres balises. Il est expliqué plus loin dans cette partie -->
<table>
<tr>
<th>blou blou blou <br />blou blou </th> <!-- ceci est valide -->
</tr>
<tr>
<td> bli bli bli <br />bli bli bli </td> <!-- ceci est valide -->
</tr>
</table>Remarque à ranger quelque part dans un endroit de son cerveau pour une utilisation ultérieure : Les balises <p></p> sont des balises de type "bloc". Elle peuvent par conséquent contenir des balises de type "en ligne".
Dans l'acronyme XHTML qui signifie "The Extensible HyperText
Markup Language", on retrouve le terme HyperText. Le but de ce langage
est de pouvoir lier des pages entre elles. Cela est possible grâce aux
liens hypertextes.
Un lien hypertexte se crée avec la balise HTML
<a>. Cette balise doit encadrer le texte qui va servir de
lien cliquable.
<a>texte qui sert de lien</a>Important : La balise <a> encadre un élément de texte qui se trouve dans un paragraphe. C'est le cas le plus fréquent. C'est comme en littérature, un livre n'est composé que de titres et de paragraphes. Il en est de même avec une page web.
Pour placer votre lien dans votre texte, vous devez avoir le
code suivant :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe qui contient un lien vers un super <a>site d'électroménager</a></p>
<p>Voici un second paragraphe</p>Affichez le résultat de la modification dans votre navigateur
(pensez à enregistrer les modifications et à actualiser votre page web)
Vous devriez obtenir le résultat suivant : afficher/masquer la réponse
Le texte s'affiche comme s'il
s'agissait d'un paragraphe contenant du texte sans aucune autre balise
particulière.

Avec le code précédent, vous pouvez constatez que la balise <a> figure elle même dans la balise <p>. Elle doit TOUJOURS figurer dans une autre paire de balises (paragraphe, cellules de tableau, item de liste, titre) de type bloc (ah vous voyez, je vous avait dit qu'il fallait mettre cette info dans un recoin de son cerveau, et je le redis encore !)
Très
important : lorsque vous avez une balise qui contient d'autres balises,
il faut veiller à fermer en premier la dernière balise
ouverte.
Dans notre exemple, la balise <a> est la dernière balise
ouverte, ce sera donc la première fermée, d'où cette suite de balise :
<p> <a> </a> </p> <!-- ceci est correct -->
<p> <a> </p> </a> <!-- ceci est incorrect et n'est pas valide -->En réalité, il manque un attribut d'importance à la balise
<a>. Dans la partie 1 de ce cours, je vous avais déjà
parlé une fois des attributs.
Je vous rappelle donc que les balises HTML peuvent contenir des
attributs auxquels on affecte une valeur. Ces valeurs doivent toujours
être encadrées de double quotes (touche 3 du pavé alphanumérique)
Exemple :
<nomBalise attribut1="valeurDeL'attribut" attribut2="valeurDeL'attribut" attribut3... >contenu de la balise</nomBalise>Concernant notre lien, il manque un attribut qui a pour valeur
l'adresse de la page HTML où doit mener le lien. Cette attribut est
l'attribut href.
Rentrez le code suivant :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe qui contient un lien vers un <a href="http://www.tout-electromenager.fr">super site d'électroménager</a></p>
<p>Voici un second paragraphe</p>
Affichez le résultat dans votre navigateur. Observez le résultat visuel. Testez le lien en cliquant dessus.
Que constatez vous ? afficher/masquer la réponse
Le lien est mis en valeur par la
couleur bleue et un soulignement. De plus il permet bien d'atteindre le
site www.tout-electromenager.fr

La balise HTML <a> peut contenir un second attribut qui ajoute un peu plus de sémantique, il s'agit de l'attribut title. Vous allez ajouter l'attribut title avec la valeur "cliquez ici pour aller sur le site en question" comme cela :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Voici mon tout premier paragraphe qui contient un lien vers un <a href="http://www.tout-electromenager.fr" title="cliquez ici pour aller sur le site en question">super site d'électroménager</a></p>
<p>Voici un second paragraphe</p>Affichez la page modifiée et survolez le lien sans cliquer dessus.
Que constatez-vous ? afficher/masquer
la
réponse
Une infobulle s'affiche au survol du
lien

A l'issue de cette troisième sous partie, vous détenez enfin
les clés pour rédiger le contenu d'une page web de base (sans mise en
forme ni besoin particulier).
Quelques autres balises sont souvent utilisées mais un peu
moins que les balises <h_>, <p> et
<a>. Ce sont les listes et les tableaux.
Remarque à ranger quelque part dans un endroit de son cerveau pour une utilisation ultérieure : Les balises <a></a> sont des balises de type "en ligne". Par conséquent elles doivent obligatoirement être encadrée par des balises de type "bloc".
Tout d'abord, pour que les choses soient claires, voici un exemple de liste :
Bon nombre de développeurs font l'erreur de ne pas utiliser
une liste pour inscrire une suite de mots les uns sous les autres et se
rattachant au même objet.
L'erreur courante est de faire trois paragraphes comme il est montré
ici :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Le site <a href="http://www.tout-electromenager.fr" title="cliquez sur le lien pour accéder au site">www.electromenager.fr</a> est super parce que :</p>
<p>- il contient de nombreuses informations utiles à tout le monde</p>
<p>- il est totalement gratuit</p>
<p>- il contient un forum d'aide bien utile en cas de panne</p>
<p>- il contient des tutoriaux expliquant comment dépanner son appareil en panne</p>On pourrait se satisfaire du résultat puisque l'affichage
obtenu donne l'impression qu'il s'agit effectivement d'une liste de
caractéristiques décrivant le site en question :

Mais l'aspect sémantique n'est plus respecté ! Un paragraphe
contient une idée. Ici il y a quatres paragraphes, on peut s'attendre à
4 idées différentes, alors qu'en réalité, il s'agit de décrire un seul
et même objet.
Dans le respect de la structure de la page et de sa
sémantique, il faut utiliser les balises HTML adéquates.
Il existe 3 types de liste selon ce que l'on souhaite exprimer
:
Une liste non ordonnée est une liste qui contient une suite de mots ou de phrases à énumérer sans qu'il y ait lieu de se soucier de l'ordre de cette énumération.
En reprenant l'exemple précédent, voici le code d'une liste
non ordonnée :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Le site <a href="http://www.tout-electromenager.fr" title="cliquez sur le lien pour accéder au site">www.electromenager.fr</a> est super parce que :</p>
<ul>
</ul>Une liste non ordonnée est
marquée par la balise <ul></ul>. De plus, une liste ne peut pas être placée
à l'intérieur d'une balise <p>.
Comme d'habitude, la fin de la liste doit être indiquée à l'aide d'un
antislash précédant le nom de la balise qui a été ouverte.
<p> <ul> </ul> </p> <!-- ceci n'est pas correcte et est non valide -->
<p> </p> <ul> </ul> <!-- ceci est correcte et valide -->Une fois la liste créée, il faut ajouter les éléments de la liste que l'on appelle également des items.
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Le site <a href="http://www.tout-electromenager.fr" title="cliquez sur le lien pour accéder au site">www.electromenager.fr</a> est super parce que :</p>
<ul>
<li>il contient de nombreuses informations utiles à tout le monde</li>
<li>il est totalement gratuit</li>
<li>il contient un forum d'aide bien utile en cas de panne</li>
<li>il contient des tutoriaux expliquant comment dépanner son appareil en panne</li>
</ul>Chaque item (élément de liste) est encadré par la balise <li> </li>.
Là encore, vous pouvez constater que la dernière balise
ouverte est la première fermée. Ainsi, la dernière balise fermée est la
balise <ul> puisqu'elle a été la première ouverte.
Entrez le code et visualisez le résultat. afficher/masquer la réponse
La sémantique est ainsi respectée. Nous
avons bien 4 caractéristiques qui décrivent un même objet, ici le site
d'électroménager :
Ce type de liste est utile lorsque les éléments à énumérer
doivent respecter un ordre.
Si l'on reprend l'exemple de la structure de ce chapitre.
Il est composé de trois parties :
Ces trois parties ne sont pas à suivre dans le désordre. Dans
ce cas, il convient de préférer une liste ordonnée pour
indiquer au lecteur que les éléments énumérés le sont dans un ordre
précis.
L'objectif est d'arriver à se résultat :
Les traditionnelles puces sont remplacées par des chiffres qui
indiquent un ordre.
Une liste ordonnée se crée à l'aide de la balise <ol> :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Il y a trois étapes à respecter pour apprendre plus facilement à créer une page HTML</p>
<ol>
</ol>Comme d'habitude, la fin de la liste doit être indiquée à
l'aide d'un
antislash précédant le nom de la balise qui a été ouverte.
Une liste ordonnée ne figure jamais dans un paragraphe tout comme les
listes non ordonnées.
Ensuite il faut ajouter les items (éléments à énumérer) dans l'ordre qui convient :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Il y a trois étapes à respecter pour apprendre plus facilement à créer une page HTML</p>
<ol>
<li>la création de la structure de la page HTML</li>
<li>la création du contenu sans mise en forme</li>
<li>la mise en forme</li>
</ol>Chaque item est encadré par la balise <li>.
Effectuez les modifications et visualisez le résultat. afficher/masquer la réponse
L'affichage des chiffres est
automatique. Le navigateur comprend grâce à la balise
<ol> qu'il s'agit d'une liste ordonnée :

Ces listes sont peu utilisées mais répondent à un besoin très
précis.
Elles permettent de faire une liste de mots avec pour chacun
leur définition. L'objectif est d'arriver à ce résultat :
Premier terme
Première définition
Second terme
Seconde définition
Une liste de définition se crée à l'aide de la balise <dl> :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Ma liste de définitions</p>
<dl>
</dl>Comme d'habitude, la fin de la liste doit être indiquée à
l'aide d'un
antislash précédant le nom de la balise qui a été ouverte.
Une liste ordonnée ne figure jamais dans un paragraphe tout comme les
listes non ordonnées et ordonnées.
Ensuite chaque terme à définir doit être introduit par la balise <dt>
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Ma liste de définitions</p>
<dl>
<dt>premier terme à définir</dt>
<dt>second terme à définir</dt>
</dl>Une fois de plus, vous pouvez constater que la
dernière balise ouverte est la première fermée.
Enfin il ne reste plus qu'a placer les définitions de chaque
terme avec la balise <dd>:
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Ma liste de définitions</p>
<dl>
<dt>premier terme à définir</dt>
<dd>Définition du premier terme ici</dd>
<dt>second terme à définir</dt>
<dd>Définition du second terme ici</dd>
</dl>Pour résumer, afin de créer une liste de définitions il faut :
Attention, il faut veiller à l'ordre des balises :
<dl> <!-- début de liste de définitions -->
<dt> </dt> <!-- terme à définir -->
<dd> </dd> <!-- définition du terme -->
</dl> <!-- fin de la liste de définitions -->Remarque à ranger quelque part dans un endroit de son cerveau pour une utilisation ultérieure : Les balises de liste sont des balises de type "bloc". Elles peuvent par conséquent contenir des balises de type "en ligne".
Là encore, tout comme les listes, des mauvaises habitudes ont été prises par les créateurs de sites web.
Toujours dans l'esprit du respect de la sémantique, il ne faut utiliser un tableau que pour représenter des données tabulaires ! C'est-à-dire que des entêtes de colonnes et/ou de lignes permettent de regrouper plusieurs données s'y rattachant.
Souvent les tableaux HTML sont utilisés à des fins de mises en forme ce qui fausse la sémantique de la page. De plus, cela cache une mauvaise maîtrise de la mise en forme des éléments de la page.
Un exemple classique de mauvaise utilisation d'un tableau est
l'affichage de texte en colonnes.
Il est effectivement attrayant d'opter pour l'utilsation d'un
tableau pour obtenir ce résultat :
| Lorem ipsum dolor sit
amet consectetuer interdum
condimentum. Sapien sem fermentum condimentum consequat Nulla consectetuer eu In. Et ligula Nam a lobortis metus pretium felis nec velit Vestibulum. Parturient Suspendisse Nam ipsum dictumst elit. Morbi convallis non dapibus sed ipsum Donec mattis Maecenas Vivamus pellentesque. Tempus tortor dictum ut pellentesque hac tellus convallis Pellentesque diam id. Velit. |
Lorem ipsum dolor sit
amet consectetuer interdum
condimentum. Sapien sem fermentum condimentum consequat Nulla consectetuer eu In. Et ligula Nam a lobortis metus pretium felis nec velit Vestibulum. Parturient Suspendisse Nam ipsum dictumst elit. Morbi convallis non dapibus sed ipsum Donec mattis Maecenas Vivamus pellentesque. Tempus tortor dictum ut pellentesque hac tellus convallis Pellentesque diam id. Velit. |
Lorem ipsum dolor sit
amet consectetuer interdum
condimentum. Sapien sem fermentum condimentum consequat Nulla consectetuer eu In. Et ligula Nam a lobortis metus pretium felis nec velit Vestibulum. Parturient Suspendisse Nam ipsum dictumst elit. Morbi convallis non dapibus sed ipsum Donec mattis Maecenas Vivamus pellentesque. Tempus tortor dictum ut pellentesque hac tellus convallis Pellentesque diam id. Velit. |
Le tableau n'a ici qu'une seule et unique utilité : la mise en
forme. Or un tableau ne sert pas à cela. Il doit donner un sens aux
données qu'il contient. Il est d'ailleurs très souvent utilisé pour
exprimer des données statistiques. Pour un entête de colonne donné ou
une ligne donnée, il regroupe plusieurs données se rattachant à cet
entête.
Exemple de tableau utilisé à bon escient :
| 2006 | |||
| Pays | Population (en millions) |
Densité
moyenne (en hab./km2) |
Population
urbaine (en %) |
| Europe | 734,9 | 32 | 75 |
| Allemagne | 82,4 | 231 | 88 |
| Autriche | 8,3 | 99 | 54 |
| Belgique | 10,5 | 344 | 97 |
Indiquez au navigateur à l'aide de la balise <table> qu'il doit créer un tableau :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Mon premier tableau</p>
<table> <!-- cette balise marque le début du tableau -->
</table> <!-- cette balise marque la fin du tableau -->Il ne faut pas oublier de fermer la balise
<table> avec le slash pour indiquer au navigateur qu'il
s'agit de la fin du tableau.
Enregistrez les lignes de codes
précédentes et visualisez le résultat à l'aide de votre navigateur. Que
constatez-vous ? afficher/masquer
la
réponse
Mis à part le titre de niveau 1 et le
paragraphe, il ne s'affiche rien ! Cela est tout à fait normal.
Nous allons maintenant ajouter une ligne au tableau.
Pour ajouter une ligne au tableau, il
faut utiliser la balise <tr>
comme ceci :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Mon premier tableau</p>
<table>
<tr> <!-- cette balise marque le début d'une nouvelle ligne dans le tableau -->
</tr> <!--cette balise marque la fin de la nouvelle ligne -->
</table>Enregistrez les lignes de codes
précédentes et visualisez le résultat à l'aide de votre navigateur. Que
constatez-vous ? afficher/masquer
la
réponse
Mis à part le titre de
niveau 1 et le
paragraphe, il ne s'affiche toujours rien ! Cela est normal.
Ce qu'il manque à notre tableau ce sont des
cellules, c'est-à-dire une ligne divisée en colonnes.
Pour créer des cellules dans une ligne, la balise <td>
remplit ce rôle :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Mon premier tableau</p>
<table>
<tr>
<td>contenu de ma cellule 1</td> <!-- première cellule -->
<td>contenu de ma cellule 2</td> <!-- deuxième cellule -->
<td>contenu de ma cellule 3</td> <!-- troisème cellule -->
</tr>
</table>Procédez à la mise à jour de votre code source et visualisez le résultat. afficher/masquer la réponse
Nous avons maintenant un
tableau avec nos trois cellules (on ne voit pas les traits séparant les
cellules, ceci est normal et est réservé pour la partie 3 de ce
chapitre) :

Ajoutez une ligne de trois cellules au
tableau. afficher/masquer
la
réponse
Il suffit
d'ajouter une nouvelle ligne avec la balise <tr> juste
après la fin de la ligne précédente marquée par la balise
</tr> Ensuite, il faut ajouter les cellules avec la
balise <td> (sans oublier de la fermer).
<h1>J'apprends à utiliser des
balises HTML</h1>
<p>Mon premier tableau</p>
<table>
<tr>
<td>contenu de ma cellule
1</td> <!-- première
cellule -->
<td>contenu de ma cellule
2</td> <!-- deuxième
cellule -->
<td>contenu de ma cellule
3</td> <!-- troisème
cellule -->
</tr>
<tr>
<td>contenu de ma cellule
2.1</td> <!--
première cellule -->
<td>contenu de ma cellule
2.2</td> <!--
deuxième cellule -->
<td>contenu de ma cellule
2.3</td> <!--
troisème cellule -->
</tr>
</table>
Lorsque l'on surfe sur le net, on voit souvent ce cas de figure :
| cellule 1 | cellule 2 et cellule 3 fusionnées | |
| cellule 4 | cellule 5 | cellule 6 |
ou encore celui là :
| cellule 1 | cellule 2 |
| cellule 3 cellule 5 fusionnées |
cellule 4 |
| cellule 6 |
Pour aboutir à ces résultat, vous allez devoir fusionner les
cellules.
Dans le premier cas, il faut fusionner deux cellules situant l'une à
coté de l'autre, dans le deuxième cas, il faut fusionner une cellule
avec celle du dessous.
Voici la technique à adopter dans le premier cas :
Créez d'abord votre tableau numéro 1
sans vous soucier des cellules fusionnées. Vous faites comme si elles
ne l'étaient pas. afficher/masquer
la
réponse
Voici le code source correspondant au
tableau 1 (là encore on ne voit aucune bordure):
<table>
<tr>
<td>cellule 1</td>
<td>cellule 2</td>
<td>cellule 3</td>
</tr>
<tr>
<td>cellule 4</td>
<td>cellule 5</td>
<td>cellule 6</td>
</tr>
</table>
Nous connaissons les deux cellules à fusionner (la 2 et la 3).
Elles sont
l'une à côté de l'autre. Il faut donc indiquer à la première
cellule à
fusionner (la 2) le nombre de colonnes qu'elle doit couvrir
avec l'attribut
colspan. La valeur de cet attribut est le nombre de colonnes.
Dans notre cas, la cellule doit couvrir deux colonnes. Deux
cellules doivent fusionner. Comme toute fusion, les éléments qui
fusionnent disparaissent pour laisser la place à un seul nouvel
élément.
C'est le cas ici. Deux cellules fusionnent pour n'en devenir qu'une
seule.
Voici mise en oeuvre l'utilisation de l'attribut
colspan :
<h1>J'apprends à utiliser des balises HTML</h1>
<p>Mon premier tableau</p>
<table>
<tr>
<td>cellule 1</td>
<td colspan="2">cellule 2 et cellule 3</td> <!-- la cellule fait deux colonnes (cols) -->
</tr>
<tr>
<td>contenu de ma cellule 4</td>
<td>contenu de ma cellule 5</td>
<td>contenu de ma cellule 6</td>
</tr>
</table>Avant fusion des cellules, il y avait trois cellules sur la première ligne. Le fait de préciser l'attribut colspan="2" indique au navigateur que la cellule fait deux colonnes. La cellule suivante n'a plus lieu d'être.
Testez la modification et affichez le
résultat. afficher/masquer
la
réponse
Voici ce que vous devez
obtenir
:
et voici le même
tableau avec
bordures (afin de mieux se rendre compte du résultat ):
Voici maintenant la technique à adopter dans le
deuxième cas :
Créez d'abord votre tableau numéro 2
sans vous soucier des cellules fusionnées. Vous faites comme si elles
ne l'étaient pas. afficher/masquer
la
réponse
Voici le code source correspondant au
tableau 2 (là encore on ne voit aucune bordure):
<table>
<tr>
<td>cellule 1</td>
<td>cellule 2</td>
</tr>
<tr>
<td>cellule 3</td>
<td>cellule 4</td>
</tr>
<tr>
<td>cellule 5</td>
<td>cellule 6</td>
</tr>
</table>
Nous connaissons les deux cellules à fusionner (la 3 et la 6).
Elles sont
l'une au dessus de l'autre. Il faut donc indiquer à la première
cellule à
fusionner (la 3) le nombre de lignes qu'elle doit couvrir avec
l'attribut rowspan. La valeur de cet attribut est le nombre de lignes.
Dans notre cas, la cellule doit couvrir deux lignes. Deux
cellules doivent fusionner. Comme toute fusion, les éléments qui
fusionnent disparaissent pour laisser la place à un seul nouvel
élément.
C'est le cas ici. Deux cellules fusionnent pour n'en devenir qu'une
seule comme c'était déjà le cas dans l'exemple précédent.
Voici mise en oeuvre l'utilisation de l'attribut
rowspan:
<table>
<tr>
<td>cellule 1</td>
<td>cellule 2</td>
</tr>
<tr>
<td rowspan="2">cellule 3 et cellule 5</td>
<td>cellule 4</td>
</tr>
<tr>
<td>cellule 6</td>
</tr>
</table>Avant fusion des cellules, il y avait trois cellules dans la
première colonne. Le fait de préciser l'attribut rowspan="2" indique au
navigateur que la cellule qui reçoit cet attribut doit fait deux
lignes. La cellule située au dessous n'a
plus lieu d'être.
Testez la modification et affichez le
résultat. afficher/masquer
la
réponse
Voici ce que vous devez
obtenir
:
et voici le
même
tableau avec bordures (afin de mieux se rendre compte du résultat ):
Toujours dans le respect de la sémantique, il convient de
donner un titre au tableau. Cela se fait très simplement à l'aide de la
balise <caption>.
Attribuons un titre au dernier tableau créé. Le titre sera "mon tableau avec cellules fusionnées"
<table>
<caption>mon tableau avec cellules fusionnées</caption>
<tr>
<td>cellule 1</td>
<td>cellule 2</td>
</tr>
<tr>
<td rowspan="2">cellule 3 et cellule 5</td>
<td>cellule 4</td>
</tr>
<tr>
<td>cellule 6</td>
</tr>
</table>Comme les autres balises HTML, la balise caption doit être
fermée avec le slash (</caption>) pour indiquer au
navigateur que le titre s'arrête à la balise.
La position par défaut du titre du tableau est variable selon
le navigateur que vous utilisez.
Procédez à la mise à jour de votre
code et vérifier le résultat obtenu. afficher/masquer
la
réponse
Voici ce que j'obtiens avec firefox :
(j'ai ajouté une bordure pour une meilleure lisibilité, mais vous, vous
n'avez aucune bordure)

En principe un tableau à des entêtes de colonne et:ou des
entêtes de
ligne comme c'est le cas dans l'exemple suivant (les entêtes sont en
gras) :

Un entête est précisé avec la balise <th>. Cette
balise permet de distinguer les données du tableaux qui illustrent
l'entête des colonnes. Ainsi la sémantique est respectée.
Mise en oeuvre : Les cellules qui contiennent un entête voient
leur balise <td> tout simplement remplacées par
<th>. Ce n'est pas plus difficile que cela !
Créez le tableau ci-dessus pour vous
entraîner et précisez les entêtes de ligne et de colonne. afficher/masquer
la
réponse
J'espère que vous avez cherché avant
d'afficher la réponse !
<table>
<tr>
<th>ETAT
</th> <!-- en tete de colonne -->
<th>Superficie<br
/>en milliers<br />de km² </th> <!-- en tete de colonne
-->
<th>Densité<br
/>Hab./km²</th>
<!-- en tete de colonne
-->
<th>Population<br
/>1995<br />en millions</th>
<!-- en tete de colonne
-->
<th>
Prévision<br />2025<br />en millions </th> <!-- en tete de colonne -->
<th>
Age<br />%<br />15ans/>64ans </th> <!-- en tete de colonne -->
<th>
Espérance<br />de vie<br />(2 sexes) </th> <!-- en tete de colonne -->
</tr>
<tr>
<th>Allemagne
</th> <!-- en tete de ligne -->
<td>349 </td>
<td>234 </td>
<td>81,7</td>
<td>76,1 </td>
<td>16/15</td>
<td>76
</td>
</tr>
<tr>
<th>Autriche
</th> <!-- en tete de ligne -->
<td>83
</td>
<td>97,7</td>
<td>8,1</td>
<td>8,3</td>
<td>18/15</td>
<td>76</td>
</tr>
<tr>
<th>Belgique</th> <!-- en tete de ligne -->
<td>30
</td>
<td>340</td>
<td>10,2</td>
<td>10,5</td>
<td>18/16</td>
<td>76</td>
</tr>
</table>
Remarque à ranger quelque part dans un endroit de son cerveau pour une utilisation ultérieure : Les balises permettant de créer un tableau sont des balises de type "bloc". Elles peuvent par conséquent contenir des balises de type "en ligne"
Depuis le début de cette partie du chapitre, je ne porte de l'importance qu'à la sémantique donnée à la page. Vous pouvez donc vous demander pourquoi je traite le point des images dans cette partie et pas dans la troisième partie qui porte sur la mise en page (faire joli quoi !).
Et bien les images ont un rôle à jouer dans la sémantique. Il
faut utiliser les images à partir du moment où elles apportent un plus
à la compréhension du contenu de la page. C'est le cas pour ce cours.
Les réponses sont souvent illustrées par des images afin de faciliter
la compréhension des notions traitées.
A partir du moment où dès lors que vous supprimez
l'image, cela ne nuit pas à la compréhension, cela signigie que votre
image n'apportait aucune sémantique. De surcroît, il est pertinent de
s'interroger sur l'indispensabilité d'une image car les images d'une
page représentent généralement 50 % du poids de la page. Plus une page
est lourde et plus elle sera longue à se charger pour le visiteur.
La balise qui permet d'insérer une image dans une page est la
balise <img>. Cette balise ne peut encadrer aucun texte
puisqu'elle ne permet que d'insérer une image. Elle n'a donc pas de
balise fermante (comme c'était le cas pour la balise de saut de ligne
<br />. A ce titre, la balise <img> doit
être fermée en même temps qu'elle est ouverte en mettant un slash à la
fin de la balise comme cela :
<br /> <!-- rappel pour la balise de saut de ligne -->
<img /> <!-- balise ouverte et aussitôt fermée -->De la même façon que la balise <br /> doit figurer obligatoirement dans une balise de paragraphe, de liste ou une cellule de tableau, la balise <img /> doit figurer soit dans un paragraphe, soit dans une liste ou soit dans une cellule de tableau.
La balise <img /> est également une balise
orpheline du fait qu'elle n'a pas de balise fermante.
Voici un exemple d'utilisation :
<p> voici une superbe image qui illustre mon propos : <img />, n'est-elle pas belle ?</p>La balise img utilise un premier attribut qui précise
l'endroit où est stockée l'image.
Vous allez donc prendre une petite image et placer le fichier
correspondant au même endroit que votre page html. Il faut bien faire
attention de la mettre au même endroit, si elle est stockée dans un
dossier différent de celui dans lequel votre page HTML figure, votre
image ne s'affichera pas.
Dans la ligne de code, vous pouvez maintenant préciser grâce à
l'attribut "src" l'endroit où est stockée votre image. L'attribut "src"
signifie "source". La valeur de cet attribut est le chemin qui mène à
l'image depuis le fichier qui l'appelle. Puisque votre image est
maintenant rangée au même endroit que votre ficher HTML, il suffit
d'indiquer le nom du fichier image avec son extension (.jpg, .png,
.gif,...) comme valeur de l'attribut "src".
Appeler une image pour illustrer une idée : (pour l'exemple,
j'utilise une image qui a pour nom de fichier "smiley.png")
<p> voici une superbe image qui illustre mon propos : <img src="smiley.png" />, n'est-elle pas belle ?</p> Ce qui donne le résultat suivant :
voici une superbe image qui illustre mon propos :
, n'est-elle pas
belle ?
Pour en terminer avec les images, vous devez pensez à préciser
un texte de remplacement au cas où l'image ne s'afficherait pas
(l'image n'existe plus, le chemin menant à l'image est erronné,...)
Si je reprends mon exemple précédent et que je fais une faute dans le nom du fichier :
<p> voici une superbe image qui illustre mon propos : <img src="MSiley.png" />, n'est-elle pas belle ?</p>Le résultat :
voici une superbe image qui illustre mon propos :
, n'est-elle pas
belle ?
Le lecteur peut se poser la question "Mais de quelle image
pouvait-il bien s'agir ???. Il repart frustré et ennervé !
L'attribut "alt" permet de préciser un texte alternatif :
<p> voici une superbe image qui illustre mon propos : <img src="MSiley.png" alt="image d'un gros smiley jaune" />, n'est-elle pas belle ?</p>Le résultat est maintenant moins frustrant pour le visiteur
puisque à défaut d'avoir l'image, il en a une description :
voici une superbe image qui illustre mon propos :
, n'est-elle pas belle ?
Enfin, on peut ajouter un attribut que l'on a déjà abordé lors
de l'étude de la balise de lien <a>. C'est l'attribut qui
permet au survol du lien d'afficher une explication.
Quel est cet attribut ? afficher/masquer
la
réponse
C 'est l'attibut "title"
Puisque l'on a déjà abordé cet attribut une fois, utilisez le avec la balise <img> pour afficher une infobulle au survol de l'image. afficher/masquer la réponse
<p> voici une
superbe image qui illustre mon
propos : <img src="smiley.png" alt="image d'un gros smiley
jaune" title="clic droit pour enregistrer l'image" />,
n'est-elle pas belle ?</p>
Avec l'effet suivant :
voici une superbe image qui illustre mon propos :
, n'est-elle
pas belle ?
Vous savez maintenant créer un lien, vous savez insérer une
image, vous
êtes donc capable de créer une image qui va servir de lien !
Je vous laisse faire cette
prouesse... afficher/masquer
la
réponse
Voici la solution :
<p>En cliquant sur le smiley <a
href="http;//www.tout-electromenager.fr" title="cliquez pour voir un
site sympa"><img src="smiley.png" alt="image d'un gros
smiley jaune" title="cliquez pour voir un site sympa"
/></a>, vous
devriez arriver sur un site très utile...</p>
Avec le résultat suivant :
En cliquant sur le smiley
, vous
devriez arriver sur un site très utile...
Remarque à ranger quelque part dans un endroit de son cerveau pour une utilisation ultérieure : la balise <img /> est une balise de type "en ligne". Par conséquent elle doit obligatoirement être encadrée par des balises de type "bloc".
Cette partie est terminée.
Pour l'instant nous avons vu comment créer une page web sans s'occuper de la mise en forme. C'est l'objet de la partie 3 de ce chapitre : La mise en forme avec css.
© 2007 - Conception et développement : E. Ravrat - A propos du site - Visites : actuelles (4) Du jour (63) Total (52498) - Dernière MAJ : 23-04-2010