II. Le corps du document - body▲
C'est dans la balise <body> que nous allons mettre tout le texte et toutes les images qui apparaîtront lorsqu'un visiteur viendra sur notre page.
II-A. Les niveaux de titres▲
Il existe différents niveaux de titres, ils vont de 1 à 6 et ont chacun leur importance. La balise représentant ces niveaux de titre est
<hX> où X représente le niveau.
Exemple :
Il est important de respecter la hiérarchie des différents niveaux de titres, sachant que l'élément le plus haut est le
<h1>. En effet, un titre
<h2> ne se retrouvera jamais au-dessus d'un
<h1> dans un document.
Le titre <h1> étant le plus important, il convient également de ne le faire
apparaître qu'une seule fois dans un document.
Vous ne devez pas choisir un titre pour le rendu qu'il a dans le navigateur (différent selon les navigateurs et pouvant être modifié à l'aide de CSS), mais bien pour le niveau hiérarchique qu'il représente.
Commentez l'article : Commentez
II-B. Les paragraphes de texte▲
Comme vous tapez du texte dans un traitement de texte, vous segmentez votre texte en paragraphes. En HTML c'est la même chose, sauf qu'il faut préciser nous-même où commence un paragraphe et où il se termine. C'est ce à quoi sert la balise <p>.
<
p>
Voici un premier paragraphe.<
/
p>
<
p>
Voici un deuxième paragraphe.<
/
p>
Commentez l'article : Commentez
II-C. La mise en forme de texte▲
Les différentes techniques citées ci-dessous pour mettre en forme du texte sont obsolètes. Si elles fonctionnent encore en HTML 4.01,
il vaut mieux s'en séparer et les remplacer par un langage fait pour ça et beaucoup plus puissant : le CSS.
Voir :
- Les cours sur le CSS
- Un exemple d'une feuille de style de base
II-C-1. Le texte en gras▲
Pour mettre le texte en gras on l'encadre de la balise <b> :
II-C-2. Le texte en italique▲
Pour mettre le texte en italique on l'encadre de la balise <i> :
II-C-3. Le texte souligné▲
Pour souligner le texte on l'encadre de la balise <u> :
II-C-4. Le texte barré▲
Pour barrer le texte on l'encadre de la balise <s> :
II-C-5. Le texte en exposant▲
Pour placer le texte en exposant on l'encadre de la balise <sup> :
II-C-6. Le texte en indice▲
Pour placer le texte en indice on l'encadre de la balise <sub> :
II-C-7. Modifier la couleur du texte▲
Pour modifier la couleur du texte on utilise l'attribut color de la balise <font> :
Les couleurs peuvent être écrites de deux manières :
- En hexadécimal de type RVB et précédées d'un dièse (#) ; Exemples : #ff0000 => rouge, #00ff00 => vert, #0000ff => bleu.
- Textuelles en anglais US ; Exemples : red, yellow, pink.
II-C-8. Modifier la police du texte▲
Pour modifier la police du texte on utilise l'attribut face de la balise <font> :
On a tendance à écrire des familles de polices plutôt qu'une seule police. En effet, il se peut que sur un système différent du vôtre la police
choisie ne soit pas installée et il faut qu'il puisse alors afficher le texte dans une police proche de celle que vous vouliez avoir.
On sépare alors les différentes polices par une virgule dans l'ordre de sélection le cas où la précédente ne peut pas être affichée.
II-C-9. Modifier la taille du texte▲
Pour modifier la taille du texte on utilise l'attribut size de la balise <font> :
Par défaut, la valeur de l'attribut size vaut "3".
Il y a deux manières de modifier la valeur de cet attribut : et les valeurs possibles sont
les entiers de "1" à "7".
- En absolu : Les valeurs possibles sont les entiers de "1" à "7".
- En relatif : Les valeurs possibles les entiers de "-2" à "+4".
Et il est bien évidemment possible de renseigner ces trois attributs (color,
face, size) à la fois dans la même balise
<font>.
Commentez l'article : Commentez
II-D. Les images et zones réactives▲
II-D-1. Les images▲
Pour afficher une image en HTML, on utilise la balise <img>.
Elle admet différents attributs, dont les plus
importants sont src et alt.
L'attribut src permet de renseigner le chemin de l'image, qui peut être
absolu HTTP ou
relatif,
très utile pour pouvoir l'afficher.
L'attribut alt affiche un texte alternatif à la place de l'image dans le cas où, pour une
raison ou autre, celle-ci
ne peut pas être chargée. Il aide de plus les moteurs de recherche à référencer l'image et les déficients visuels à savoir ce que l'image
représente.
L'attribut alt n'est pas censé créer une infobulle lors du survol de l'image, qui est le rôle de l'attribut title, cependant sur Internet Explorer le alt affiche cette infobulle.
Les différents formats d'image supportés par cette balise sont :
- GIF
- JPG
- PNG
- BMP (à éviter)
II-D-2. Les zones réactives▲
Le HTML permet de créer des zones réactives sur les images, afin de définir plusieurs liens différents sur une seule et même image,
ou de ne rendre qu'une seule partie de l'image cliquable. On appelle l'ensemble de ces zones une carte, ou map.
Les balises qui permettent de faire ces zones réactives sont <map> et
<area> étroitement liées avec
la balise <img>. En effet, on doit forcément préciser sur quelle image ces
zones vont être présentes.
L'attribut de la balise <img> qui va contenir le nom de la map dont elle fait
référence est usemap.
Le nom de cette map est précédé du signe dièse (#).
<
img
src=
"
adresse/de/l/image
"
alt=
"
Description
de
l'image
"
usemap=
"
#nomDeLaMap
"
>
La balise qui va contenir l'ensemble de nos zones réactives pour cette image est la balise
<map>,
qui doit obligatoirement avoir l'attribut name renseigné et qui aura pour valeur le nom
de la map, le même renseigné dans l'attribut
usemap de notre image.
Comme vous l'aurez sans doute deviné et comme son nom l'indique, la balise <area>
sera une zone réactive dans notre map.
Il y a une balise area par zone.
<
map
name=
"
nomDeLaMap
"
>
<!--
Ici
nous
allons
mettre
nos
différentes
zones
réactives
-->
<
area
...>
<
area
...>
<
/
map>
Les différents attributs de la balise <area> nécessaires à son bon fonctionnement sont :
- coords, qui va contenir les différentes coordonnées de notre zone.
- href, qui va définir l'adresse de destination du lien.
- shape, qui va renseigner le type de zone que l'on souhaite afficher.
On distingue trois types de zones :
- Les zones rectangulaires,
- Les zones circulaires,
- Les zones polygonales.
On peut bien évidemment avoir autant de zones que l'on veut sur une map, et on peut également combiner les différents types de zones
sur une seule et même image.
Attention toutefois à ne pas faire se chevaucher les zones ! Le cas échéant, c'est la zone définie la première qui s'affichera au-dessus.
II-D-2-a. Les zones rectangulaires▲
Pour définir une zone rectangulaire, l'attribut shape doit prendre pour valeur
"rectangle" ou "rect".
Les coordonnées définies dans l'attribut coords se réfèrent aux abscisses et ordonnées
des coins
supérieur gauche et inférieur droit du rectangle que l'on souhaite tracer par rapport au coin haut gauche de l'image.
Ces valeurs sont séparées par une virgule et exprimées en pixels.
Syntaxe :
<
area
shape=
"
rect
"
coords=
"
x1,x2,y1,y2
"
href=
"
adresse/de/destination
"
>
Exemple :
II-D-2-b. Les zones circulaires▲
Une zone circulaire est définie par la valeur "circle" ou "circ" de l'attribut
shape.
Les valeurs de l'attribut coords se réfèrent aux abscisse et ordonnée du centre du
cercle ainsi que le rayon de ce cercle par rapport au coin haut gauche de l'image.
Ces valeurs sont séparées par une virgule et exprimées en pixels.
Syntaxe :
Exemple :
II-D-2-c. Les zones polygonales▲
C'est la valeur "polygon" ou "poly" de l'attribut shape qui permet de
définir une zone polygonale.
Les valeurs de l'attribut coords se réfèrent aux abscisse et ordonnée de chacun des points
par rapport au coin haut gauche de l'image.
Ces valeurs sont séparées par une virgule et exprimées en pixels.
Syntaxe :
<
area
shape=
"
poly
"
coords=
"
x1,y1,x2,y2,x3,y3,..,xn,yn
"
href=
"
adresse/de/destination
"
>
Exemple :
<
area
shape=
"
poly
"
coords=
"
0,0,40,50,78,101,17,150
"
href=
"
adresse/de/destination
"
>
Voir le résultat
Commentez l'article : Commentez
II-E. Les liens hypertextes▲
Un lien hypertexte est un élement HTML permettant d'envoyer le visiteur vers une nouvelle page. On peut insérer dans cet élément toute sorte
de textes, images et autres balises dites "inline" (comme les balises <span>,
<strong>, etc).
Un lien sera représenté dans le code par la balise <a>. Tout ce qui sera dans cette
balise fera office de lien. L'adresse de destination doit se trouver dans l'attribut href.
L'attribut title, quant à lui, permet de renseigner un petit descriptif sur le contenu de la
page cible, et est un atout non néligeable
en matière de référencement et d'accessibilité.
Exemple texte :
Exemple image :
<
a
href=
"
adresse/de/destination.html
"
>
<
img
src=
"
adresse/de/l/image.gif
"
>
<
/
a>
On distingue deux types de liens, les liens externes et les liens internes.
II-E-1. Les liens externes▲
Un lien externe est un lien hypertexte qui renvoie vers une autre page. Cette autre page peut être une page de votre site ou celle d'un site tiers.
II-E-2. Les liens internes▲
Un lien interne est un lien qui renvoie vers la même page, mais pas forcément au même endroit de la page.
Attention à ne pas confondre "liens internes" avec "lien interne au site" !
Un lien interne au site est en général un lien externe à la page.
II-E-2-a. Les ancres▲
Les ancres permettent de naviguer à l'intérieur d'une même page. Par exemple, ce tutoriel a en haut un sommaire avec des liens
qui renvoient plus
bas dans la page, ce sont des ancres.
Pour faire une ancre, il faut utiliser le signe dièse (#) suivi d'un mot-clef. Ce mot-clef sera repris dans l'attribut
id
d'une balise
à laquelle on fait faire une ancre :
<
a
href=
"
#motClef
"
>
Texte de mon ancre<
/
a>
[...]
<
h2
id=
"
motClef
"
>
Texte vers lequel l'ancre est renvoyée<
/
h2>
Si vous voulez faire une ancre vers une page externe, il vous suffit de rajouter l'adresse de destination dans la balise de lien :
II-E-2-b. Les liens vers d'autres cadres▲
Si vous utilisez des cadres pour votre navigations, vous aurez certainement envie que les liens de votre menu, dans le cadre
nommé "cadreMenu"
par exemple, pointent vers votre cadre principal que l'on appellera "cadrePrincipal".
Dans ce cas, il faut renseigner l'attribut target de la balise de lien :
<
a
href=
"
adresse/de/destination.html
"
target=
"
cadrePrincipal
"
>
Lien de mon menu<
/
a>
Il existe plusieurs valeurs pour l'attribut target :
Valeur | Description |
---|---|
_self | Affichage dans le cadre courant (par défaut). |
_blank | Ouvre le lien dans une nouvelle fenêtre. |
_top | Affichage dans la totalité de la fenêtre courante. |
_parent | Affichage dans le cadre qui enveloppe la structure courante. |
NomDuCadre | Affichage dans le cadre spécifié. |
Pour plus d'infos sur les cadres, reportez-vous à la section "Les cadres".
II-E-3. Les liens e-mails▲
Vous pouvez permettre à vos visiteurs d'écrire sur votre adresse e-mail avec la syntaxe "mailto:" :
<
a
href=
"
mailto:jwillette@monsite.com
"
>
Ecrivez-moi<
/
a>
Ce type de liens ouvre le logiciel de messagerie par défaut de vos visiteurs.
Vous pouvez aussi renseigner un sujet par défaut de l'e-mail, ainsi qu'un corps voire même les deux :
<
a
href=
"
mailto:jwillette@monsite.com?subject=Sujet
du
mail
"
>
Ecrivez-moi<
/
a>
<
a
href=
"
mailto:jwillette@monsite.com?body=Corps
du
mail
"
>
Ecrivez-moi<
/
a>
<
a
href=
"
mailto:jwillette@monsite.com?subject=Sujet
du
mail&body=Corps
du
mail
"
>
Ecrivez-moi<
/
a>
Vous pouvez enfin mettre plusieurs destinataires ou mettre une personne en copie du mail :
II-E-4. Les protocoles▲
Un protocole est un moyen qu'ont deux ordinateurs de communiquer. Il diffère selon le type de données echangées.
Il existe de nombreux protocoles disponibles par lien hypertexte, en voici une liste non exhaustive :
Protocole | Signification de l'acronyme | Description | Syntaxe utilisée |
---|---|---|---|
HTTP | HyperText Transfer Protocol | Permet de transférer des données sur l'Internet. | <a href="http://...">...</a> |
HTTPS | HyperText Transfer Protocol Secured | Permet de transférer des données sur l'Internet en permettant de vérifier l'identité du site grâce à un certificat d'authentification. | <a href="https://...">...</a> |
SMTP | Simple Mail Transfer Protocol | Permet de transférer des e-mails. | <a href="mailto:...">...</a> |
FTP | File Transfer Protocol | Permet de transférer des fichiers. | <a href="ftp://...">...</a> |
NNTP | Networks News Transfer Protocol | Permet de lire, distribuer, ... les news de newsgroups. | <a href="news:...">...</a> |
TELNET | Permet d'accéder à un ordinateur distant. | <a href="telnet://...">...</a> | |
IRC | Internet Relay Chat | Permet de se connecter à un serveur de Chat. | <a href="irc://...">...</a> |
II-E-5. Informations complémentaires▲
- Pour éviter d'avoir le cadre bleu autour d'une image lorsqu'elle est dans un lien, il vous suffit de renseigner l'attribut border à "0" :
<
a
href=
"
adresse/de/destination.html
"
>
<
img
src=
"
adresse/de/l/image.gif
"
border=
"
0
"
>
<
/
a>
- Si vous voulez avoir une infobulle qui s'affiche sur votre lien lors du passage de la souris, vous pouvez renseigner l'attribut title :
<
a
href=
"
adresse/de/destination.html
"
title=
"
Description
de
la
page
cible
"
>
Texte du lien<
/
a>
- Vous pouvez remplacer l'adresse du lien par l'appel d'une fonction Javascript qui s'exécutera au clic du lien.
<
a
href=
"
javascript:maFonctionJavascript()
"
>
Texte du lien<
/
a>
Commentez l'article : Commentez
II-F. Les cadres▲
II-F-1. À quoi servent-ils ?▲
Les cadres servent à séparer la fenêtre en différents morceaux indépendants qui peuvent chacun contenir une page HTML différente,
ces morceaux ayant la capacité de communiquer entre eux.
On utilise au minimum deux cadres dans une fenêtre, en général un cadre pour le menu à gauche et un autre pour le contenu du site.
Parfois un rajoute un cadre en haut pour un bandeau fixe.
II-F-2. Débuter avec les cadres▲
Le document HTML qui va appeler les différents cadres ne pourra servir qu'à ça. Aucun texte ou aucune image inséré dans ce document ne sera
affiché dans le navigateur du visiteur. Donc dans le cas où nous avons deux cadres, un pour le menu et un pour le contenu, nous aurons
trois fichiers différents. Comme les deux pages du menu et du contenu sont des pages ordinaires, nous ferons l'impasse dessus. En
revanche, la page qui appelle les cadres est tout à fait différente.
Ce sont les balises <frameset> et
<frame> qui vont être utilisées pour la mise en
oeuvre du jeu de cadres.
<!
DOCTYPE
html
PUBLIC
"
-//W3C//DTD
HTML
4.01
Frameset//EN
"
"
http://www.w3.org/TR/html4/frameset.dtd
"
>
<
html>
<
head>
<
title>
Titre de la page<
/
title>
<
meta
http-equiv=
"
content-type
"
content=
"
text/html;
charset=utf-8
"
>
<
/
head>
<
frameset>
<!--
Ici
le
contenu
de
la
frameset
principale
-->
<
/
frameset>
<
/
html>
On remarque la présence de la balise <frameset> qui remplace d'ordinaire
la balise <body> et
le DOCTYPE approprié pour l'usage des cadres.
La balise <frameset> va désigner le nombre de cadres et leur taille.
Si on renseigne l'attribut cols, la page
sera coupée verticalement, alors que si on renseigne l'attribut rows, la page sera
coupée horizontalement. Ces attributs
prennent pour valeur les tailles des différents cadres séparées par une virgule. Si une des valeurs est une étoile, ça signifie que
le cadre en question prendra toute la place disponible restante dans la fenêtre. On ne peut évidemment pas utiliser ces deux
attributs conjointement sur une seule et même balise <frameset>.
Dans cette balise <framset> nous allons mettre l'ensemble de nos cadres. Le nombre de cadres correspond au nombre de valeurs renseignées dans les attributs cols et rows.
C'est dans la balise <frame> que l'on va fixer la source de chacun des cadres,
grâce à l'attribut src.
Un attribut important de cette balise est name. En effet, il va falloir dire à nos liens
qui sont dans le menu, par exemple,
d'aller changer la source d'un autre cadre. L'attribut target du lien prendra alors pour
valeur le nom du cadre ciblé.
On peut aussi jouer sur les bordures avec l'attribut frameborder qui prend pour valeur
"0"
ou "1".
De plus, par défaut, les cadres peuvent être redimensionnés. Si on veut interdire cette fonctionnalité, on renseignera l'attribut
noresize qui prend pour seule valeur "noresize".
Enfin, on peut éliminer les marges intérieures latérales avec les attributs marginwidth et
marginheight renseignés
à "0".
<
frameset
cols=
"
200,
*
"
>
<
frame
name=
"
menu
"
src=
"
menu.html
"
>
<
frame
name=
"
contenu
"
src=
"
page1.html
"
>
<
/
frameset>
<
a
href=
"
page2.html
"
target=
"
contenu
"
>
Aller à la page 2<
/
a>
On peut aller encore plus loin, en imbricant différents cadres. Par exemple, on veut un bandeau en haut qui prend toute la largeur de l'écran. En-dessous, on veut deux cadres verticaux, un pour le menu et l'autre pour le contenu. Le code HTML ressemblera alors à quelque chose comme :
II-F-3. Les cadres locaux▲
Le cadre local ou "iframe" permet également d'insérer une page externe dans notre site, à la différence qu'il sera à la suite
du contenu de notre propre document et non pas séparé par un troisième fichier qui fait la jointure.
L'attribut de la balise <iframe> qui va servir à afficher le contenu d'une autre
page est src. On
lui renseigne l'adresse complète si le site est différent du nôtre, ou le chemin relatif ou absolu dans le cas où l'on veut afficher
une de nos propres pages.
On peut supprimer les bordures de l'iframe pour lui donner l'impression de mieux s'intégrer à notre document en renseignant l'attribut
frameborder à "0" ("1" par défaut).
Aussi, les marges intérieures sont assez gênantes quand on a une page qui doit faire exactement les dimensions données à cette balise.
On peut alors les supprimer avec les attributs marginwidth et
marginheight renseignés à "0".
Dans le cas où un navigateur ne peut pas afficher ce cadre local, il est intéressant de laisser un texte alternatif. C'est le texte que
l'on écrit à l'intérieur de la balise.
<
iframe
frameborder=
"
0
"
marginwidth=
"
0
"
marginheight=
"
0
"
src=
"
http://adresse/d/une/page.html
"
>
Désolé, votre navigateur ne supporte pas les cadres locaux
<
/
iframe>
II-F-4. Les cadres aujourd'hui▲
De nos jours, il est fortement déconseillé d'utiliser ce genre de procédé. Voici une liste non-exhaustive des problèmes encourus de part l'utilisation des frames :
- Impossibilité d'ajouter aux favoris la page désirée.
- Mauvaise gestion de l'impression par les navigateurs.
- Perte du sens véritable de la nature d'un document HTML censé être identifié par une URL précise et unique.
- Référencement des pages du site impossible dans les moteurs de recherche.
- Technologie obsolète qui est totalement abandonnée dans les futures versions du (X)HTML.
Commentez l'article : Commentez
II-G. Les listes▲
Elles servent, comme leur nom l'indique, à créer une liste d'items, plus précisément à les énumérer, comme dans le cas d'un sommaire par exemple.
II-G-1. Les différents types de listes▲
On distingue cinq types de listes différents, chacun prévu pour un usage bien précis :
- Les listes non ordonnées, ou à puces.
- Les listes ordonnées.
- Les listes de définitions.
- Les listes de répertoires.
- Les listes de menus.
II-G-1-a. Les listes non ordonnées▲
Elles sont démarquées par la balise <ul> et chacun des items est entouré de la balise <li> :
<
p>
Ma liste de courses :<
/
p>
<
ul>
<
li>
Champignons<
/
li>
<
li>
Avocat<
/
li>
<
li>
Dentifrice<
/
li>
<
li>
Céréales<
/
li>
<
/
ul>
Résultat :
II-G-1-a-i. Les différents types de puces▲
On va pouvoir jouer sur le design des puces à l'aide de trois types différents. On renseigne le type des puces avec l'attribut
type de la balise <ul>.
Les types sont :
- disc (par défaut au niveau 1 d'imbrication)
- circle (par défaut au niveau 2 d'imbrication)
- square (par défaut au niveau 3 et suivants d'imbrication)
Dans l'exemple précédent, nous avons donc vu une liste non ordonnée avec une puce de type disc. Voici à quoi ressemblent les deux autres :
<
p>
Ma liste de courses :<
/
p>
<
ul
type=
"
circle
"
>
<
li>
Champignons<
/
li>
<
li>
Avocat<
/
li>
<
li>
Dentifrice<
/
li>
<
li>
Céréales<
/
li>
<
/
ul>
Résultat :
<
p>
Ma liste de courses :<
/
p>
<
ul
type=
"
square
"
>
<
li>
Champignons<
/
li>
<
li>
Avocat<
/
li>
<
li>
Dentifrice<
/
li>
<
li>
Céréales<
/
li>
<
/
ul>
Résultat :
II-G-1-a-ii. Les puces en image▲
Des disques, des cercles ou des carrés, c'est bien beau, mais si on veut une puce en forme de flèche et de couleur bleue ?
Pour cela, rien de plus simple, il suffit d'utiliser une image pour remplacer la puce originale. Cependant cette méthode
n'est possible qu'à l'aide de CSS et de la propriété list-style-image :
<
p>
Ma liste de courses :<
/
p>
<
ul>
<
li>
Champignons<
/
li>
<
li>
Avocat<
/
li>
<
li>
Dentifrice<
/
li>
<
li>
Céréales<
/
li>
<
/
ul>
li
{
list-style-image :
url
(puce
.
gif
);
}
Résultat :
Pour plus d'informations sur les puces imagées, je vous renvoie à l'article CSS plus complet :
CSS débutants : Puces en gifs avec les CSS
II-G-1-b. Les listes ordonnées▲
Elles sont introduites par la balise <ol> et chacun des items est encadré par la balise <li> :
<
p>
Top 3 du tiercé :<
/
p>
<
ol>
<
li>
Jolly<
/
li>
<
li>
Tonnerre<
/
li>
<
li>
Tornade<
/
li>
<
/
ol>
Résultat :
II-G-1-b-i. Les différents types de numérotation▲
Il existe cinq manières différentes de numéroter les liste ordonnées. On renseigne le type de numérotation avec l'attribut
type de la balise <ol>.
Les types sont :
- 1 : Numérotation par les chiffres arabes (par défaut).
- I : Numérotation par les chiffres romains.
- i : Numérotation par les chiffres romains minuscules.
- A : Numérotation par les lettres de l'alphabet.
- a : Numérotation par les lettres de l'alphabet minuscules.
Dans l'exemple précédent, nous avons donc vu une liste ordonnée avec une numérotation par les chiffres arabes. Voici à quoi ressemblent les autres :
<
p>
Top 3 du tiercé :<
/
p>
<
ol
type=
"
I
"
>
<
li>
Jolly<
/
li>
<
li>
Tonnerre<
/
li>
<
li>
Tornade<
/
li>
<
/
ol>
Résultat :
<
p>
Top 3 du tiercé :<
/
p>
<
ol
type=
"
i
"
>
<
li>
Jolly<
/
li>
<
li>
Tonnerre<
/
li>
<
li>
Tornade<
/
li>
<
/
ol>
Résultat :
<
p>
Top 3 du tiercé :<
/
p>
<
ol
type=
"
A
"
>
<
li>
Jolly<
/
li>
<
li>
Tonnerre<
/
li>
<
li>
Tornade<
/
li>
<
/
ol>
Résultat :
<
p>
Top 3 du tiercé :<
/
p>
<
ol
type=
"
a
"
>
<
li>
Jolly<
/
li>
<
li>
Tonnerre<
/
li>
<
li>
Tornade<
/
li>
<
/
ol>
Résultat :
II-G-1-b-ii. Modifier le début de la numérotation▲
Il est tout à fait possible, pour une raison ou une autre, de modifier le numéro de départ par lequel va s'incrémenter
la numérotation.
Pour cela, il suffit de préciser une valeur à l'attribut start de la balise
<ol>. Cette valeur doit
dans tous les cas être numérique :
II-G-1-c. Les listes de définitions▲
Elles sont délimitées par la balise <dl> qui comprend une liste de termes à définir représentés par la balise <dt> qui peuvent avoir une ou plusieurs définitions elles-mêmes encadrées par la balise <dd> (une pour chaque définition).
<
dl>
<
dt>
Oreiller<
/
dt>
<
dd>
Pièce de literie bourrée de plumes, de duvet, de crin... destinée à soutenir la tête pendant le repos.<
/
dd>
<
dt>
Puce<
/
dt>
<
dd>
Insecte de très petite taille se déplaçant par sauts.<
/
dd>
<
dd>
Marché où l'on vend des objets d'occasion.<
/
dd>
<
/
dl>
II-G-1-d. Les listes de répertoires▲
Elles sont encadrées par la balise <dir> et chacun des items est compris dans la balise <li>.
<
dir>
<
li>
css<
/
li>
<
li>
fichiers<
/
li>
<
li>
images<
/
li>
<
li>
js<
/
li>
<
/
dir>
Résultat :
II-G-1-e. Les listes de menus▲
II-G-2. Les listes imbriquées▲
L'imbrication des listes permet une présentation claire et détaillée d'un menu ou d'un sommaire par exemple. On peut imbriquer les listes non ordonnées et ordonnées sans distinction et même les mélanger :
<
ol
type=
"
I
"
>
<
li>
La genèse<
/
li>
<
li>
La vie
<
ol
type=
"
A
"
>
<
li>
L'enfance<
/
li>
<
li>
L'adolescence<
/
li>
<
li>
Le passage à l'âge adulte
<
ul>
<
li>
Le jeune adulte<
/
li>
<
li>
La crise de la quarantaine<
/
li>
<
/
ul>
<
/
li>
<
li>
La vieillesse<
/
li>
<
/
ol>
<
/
li>
<
li>
La mort<
/
li>
<
/
ol>
Résultat :
II-G-3. L'utilité des listes aujourd'hui▲
La principale utilisation des listes de nos jours se fait par les listes non ordonnées pour la création de divers menus.
L'imbrication de ces listes non ordonnées couplée avec un soupçon de CSS permet de faire des menus à multiples niveaux d'affichage,
comme les menus déroulants.
D'autre part, on peut retrouver les listes ordonnées principalement pour la rédaction de sommaires, notamment destinés aux FAQ.
Voici quelques exemples de menus qui utilisent ces listes non ordonnées :
Cours CSS : Menu et barre de navigation
Commentez l'article : Commentez
II-H. Les tableaux▲
II-H-1. À quoi servent-ils ?▲
Un tableau qu'est-ce que c'est ? Tout simplement une suite de lignes et de colonnes qui forment un ensemble de cellules.
Les tableaux servent avant tout à présenter des données tabulaires dont voici un exemple :
Elèves | Français | Mathématiques | Histoire | Sport |
---|---|---|---|---|
Laure | 14 | 10 | 11 | 11 |
Philippe | 8.5 | 12 | 9 | 15 |
Jean | 15 | 14.5 | 10.5 | 12 |
Maurice | 7.5 | 18 | 12 | 14 |
Malgré cela, l'emploi le plus fréquent des tableaux reste la mise en page de documents.
En effet, l'implémentation des tableaux étant assez intuitive, les débutants préfèreront en user ainsi.
S'ajoute à cela les éditeurs WYSIWYG des logiciels de création de sites qui génèrent ce genre de code automatiquement.
Cependant, la mise en page par tableau devient dépréciée : Voir le paragraphe
L'utilité des tableaux aujourd'hui.
II-H-2. Du tableau simple au tableau complexe▲
II-H-2-a. Les bases d'un tableau▲
Un tableau est délimité par la balise <table>. Le contenu d'un tableau HTML est
généré horizontalement.
C'est-à-dire qu'il n'est pas créé colonne par colonne mais ligne par ligne. Pour créer un tableau, nous commençons par créer
des lignes grâces aux balises <tr>. Puis nous insérons dans ces
lignes les cellules du tableau grâce aux balises <td>.
Le contenu (textes, images, autres balises) se trouve uniquement dans les balises
<td> et ne doit se trouver en
aucun cas en dehors.
Donc pour avoir un tableau d'une cellule, soit une ligne et une colonne, on obtient ce code :
<
table
border=
"
1
"
>
<
tr>
<
td>
Contenu de la cellule<
/
td>
<
/
tr>
<
/
table>
On obtient :
Contenu de la cellule |
Et pour un tableau de deux lignes et deux colonnes :
<
table
border=
"
1
"
>
<
tr>
<
td>
Cellule 1<
/
td>
<
td>
Cellule 2<
/
td>
<
/
tr>
<
tr>
<
td>
Cellule 3<
/
td>
<
td>
Cellule 4<
/
td>
<
/
tr>
<
/
table>
On obtient :
Cellule 1 | Cellule 2 |
Cellule 3 | Cellule 4 |
Par défaut, la bordure n'est pas visible, dans les codes précédents on a rajouté l'attribut
border à la balise
<table> pour la faire apparaître. On peut évidemment épaissir la bordure
en augmentant la valeur.
On peut voir sur les tableaux affichés précédemment que le texte n'est pas directement collé à la bordure.
Il s'agit là d'un espace interne par défaut des navigateurs. Pour le supprimer, on doit renseigner l'attribut
cellpadding et lui
mettre la valeur "0".
De la même manière, la bordure ne fait pas effectivement 1 pixel de large alors qu'on lui a renseigné la valeur 1. Il persiste
un espace par défaut entre chaque cellule que l'on peut faire disparaître en affectant la valeur "0" à l'attribut
cellspacing.
Un autre attribut nécessaire est l'attribut summary.
Il contient du texte et fournit un résumé du tableau, utile pour les
personnes malvoyantes.
Si on reprend tout ce dont on vient de parler, on aurait un code comme :
<
table
border=
"
1
"
cellpadding=
"
0
"
cellspacing=
"
0
"
summary=
"
Résumé
du
tableau
pour
les
personnes
malvoyantes
"
>
<
tr>
<
td>
Cellule 1<
/
td>
<
td>
Cellule 2<
/
td>
<
/
tr>
<
/
table>
Attention à bien avoir le même nombre de <td> pour chaque ligne, sinon le navigateur risque de mal interpréter le tableau.
II-H-2-b. Le titre d'un tableau▲
Pour décrire le contenu d'un tableau, par exemple expliquer dans notre tout premier exemple de tableau qu'il s'agit des notes
de la classe de 3èmeB, il faut utiliser la balise <caption>, à placer
directement après l'ouverture du
tableau.
Cette balise prend l'attribut align qui accepte comme valeurs
"top" (par défaut), "bottom", "left" et
"right", en
fonction de l'endroit où l'on veut afficher cette légende.
<
table
border=
"
1
"
>
<
caption
align=
"
bottom
"
>
Notes de la classe de 3èmeB<
/
caption>
<
tr>
<
td>
Elèves<
/
td>
<
td>
Français<
/
td>
<
td>
Mathématiques<
/
td>
<
td>
Histoire<
/
td>
<
td>
Sport<
/
td>
<
/
tr>
<
tr>
<
td>
Laure<
/
td>
<
td>
14<
/
td>
<
td>
10<
/
td>
<
td>
11<
/
td>
<
td>
11<
/
td>
<
/
tr>
<
tr>
[...]
<
/
tr>
<
/
table>
II-H-2-c. La ligne d'en-tête d'un tableau▲
Pour rependre l'exemple des notes de la classe de 3èmeB, on remarque que la première ligne peut faire office d'en-tête. En effet,
elle renseigne le contenu de chacune des colonnes et n'a donc pas le même genre de contenu que tout le reste du tableau.
Pour préciser au navigateur qu'il s'agit donc de cellules spéciales, on va les modifier en remplaçant pour cette ligne
seulement les balises <td> par des balises
<th> :
<
table
border=
"
1
"
>
<
caption
align=
"
bottom
"
>
Notes de la classe de 3èmeB<
/
caption>
<
tr>
<
th>
Elèves<
/
th>
<
th>
Français<
/
th>
<
th>
Mathématiques<
/
th>
<
th>
Histoire<
/
th>
<
th>
Sport<
/
th>
<
/
tr>
<
tr>
<
td>
Laure<
/
td>
<
td>
14<
/
td>
<
td>
10<
/
td>
<
td>
11<
/
td>
<
td>
11<
/
td>
<
/
tr>
<
tr>
[...]
<
/
tr>
<
/
table>
II-H-2-d. Les différentes parties d'un tableau▲
Quand on arrive à avoir un tableau de grande taille, il devient moins évident à gérer. Pour cela, on peut regrouper les lignes
par grandes parties : l'en-tête, le corps et le pied, respectivement représentées par les balises
<thead>, <tbody>
et <tfoot>.
Ces balises vont englober les lignes en fonction de l'endroit où les lignes doivent être placées. Elles sont évidemment facultatives
mais aident à la maintenance du code.
Elles doivent apparaître dans l'ordre suivant : <thead>, <tfoot> et <tbody>.
Notre sempiternel exemple de la classe de 3èmeB contient clairement un en-tête, mais pas de pied. Qu'à cela ne tienne, on va en rajouter un, parce que la natalité ayant tant augmenté que les classes sont nombreuses et qu'arrivé en fin de tableau on ne sait plus à quoi correspondent les colonnes. Ce qui donne :
<
table
border=
"
1
"
>
<
caption
align=
"
bottom
"
>
Notes de la classe de 3èmeB<
/
caption>
<
thead>
<
tr>
<
th>
Elèves<
/
th>
<
th>
Français<
/
th>
<
th>
Mathématiques<
/
th>
<
th>
Histoire<
/
th>
<
th>
Sport<
/
th>
<
/
tr>
<
/
thead>
<
tfoot>
<
tr>
<
th>
Elèves<
/
th>
<
th>
Français<
/
th>
<
th>
Mathématiques<
/
th>
<
th>
Histoire<
/
th>
<
th>
Sport<
/
th>
<
/
tr>
<
/
tfoot>
<
tbody>
<
tr>
<
td>
Laure<
/
td>
<
td>
14<
/
td>
<
td>
10<
/
td>
<
td>
11<
/
td>
<
td>
11<
/
td>
<
/
tr>
<
tr>
[...]
<
/
tr>
<
/
tbody>
<
/
table>
II-H-2-e. La fusion de lignes et de colonnes d'un tableau▲
On distingue deux types de fusion : la fusion horizontale où sont en jeu deux (ou plus) colonnes, la fusion verticale où sont en jeu
deux (ou plus) lignes.
Dans les deux cas, elle s'opère sur les cellules, donc sur la balise <td>.
Elle se traduit par l'utilisation
de l'attribut colspan dans le cas d'une fusion horizontale et par l'attribut
rowspan dans le cas d'une fusion verticale.
Ces attributs prennent pour valeurs le nombre de cellules à fusionner.
<
table
border=
"
1
"
>
<
tr>
<
td
colspan=
"
5
"
>
Cellule qui se répend sur 5 colonnes<
/
td>
<
/
tr>
<
tr>
<
td>
Colonne 1<
/
td>
<
td>
Colonne 2<
/
td>
<
td>
Colonne 3<
/
td>
<
td>
Colonne 4<
/
td>
<
td>
Colonne 5<
/
td>
<
/
tr>
<
/
table>
On obtient :
Cellule qui se répend sur 5 colonnes | ||||
Colonne 1 | Colonne 2 | Colonne 3 | Colonne 4 | Colonne 5 |
La somme des colspan de chaque ligne doit être identique à toutes les autres lignes.
En ce qui concerne l'attribut rowspan, on aurait un code tel que :
<
table
border=
"
1
"
>
<
tr>
<
td
rowspan=
"
2
"
>
Cellule sur deux lignes<
/
td>
<
td>
Ligne 1 - Colonne 2<
/
td>
<
td>
Ligne 1 - Colonne 3<
/
td>
<
td>
Ligne 1 - Colonne 4<
/
td>
<
/
tr>
<
tr>
<
td>
Ligne 2 - Colonne 2<
/
td>
<
td>
Ligne 2 - Colonne 3<
/
td>
<
td>
Ligne 2 - Colonne 4<
/
td>
<
/
tr>
<
/
table>
Il est tout de suite beaucoup plus difficile de se rendre compte de son erreur, le rowspan
est déjà moins intuitif que le
colspan.
On pourrait aller plus loin en combinant les deux techniques sur un seul et même tableau :
<
table
border=
"
1
"
>
<
tr>
<
td
colspan=
"
3
"
>
Cellule 1<
/
td>
<
td>
Cellule 2<
/
td>
<
/
tr>
<
tr>
<
td
rowspan=
"
3
"
>
Cellule 3<
/
td>
<
td>
Cellule 4<
/
td>
<
td>
Cellule 5<
/
td>
<
td>
Cellule 6<
/
td>
<
/
tr>
<
tr>
<
td>
Cellule 7<
/
td>
<
td
colspan=
"
2
"
rowspan=
"
2
"
>
Cellule 8<
/
td>
<
/
tr>
<
tr>
<
td>
Cellule 9<
/
td>
<
/
tr>
<
/
table>
On remarque que le code est devenu extrêmement compliqué et que la moindre erreur de fusion de notre part entraînerait une interprétation du tableau complètement bancale par les navigateurs.
II-H-3. L'utilité des tableaux aujourd'hui▲
Grâce aux techniques de fusion vues précédemment, la tendance il y a quelques années, était de profiter de ce système pour mettre
en page assez rapidement l'ensemble de son site web. Cependant, si cette méthode peut séduire, elle est fortement déconseillée.
En effet, les tableaux sont censés (et doivent) être utilisés uniquement pour l'affichage de données tabulaires.
Dans le cas d'une mise en page, préférez la solution du couple "DIV + CSS". Voir l'article :
Une mise en page rapide et facile avec des div et du CSS.
On peut facilement voir dans notre dernier exemple où l'on combine les deux techniques de fusion, que notre code sera difficilement
maintenable dans le cas d'une retouche ou de l'ajout d'une nouvelle cellule.
Voici quelques raisons pour lesquelles il ne faut pas utiliser les tableaux pour la mise en page :
- Ils alourdissent les pages HTML : beaucoup de balises pour finalement y mettre peu de contenu.
- Ils sont très difficiles à maintenir dans le cas d'une retouche.
- Ils nuisent à l'accessibilité : problème d'interprétation des navigateurs spécialisés destinés aux malvoyants par exemple.
- Ils sont mal gérés par les navigateurs à l'impression dans le cas de tableaux complexes.
J'espère avoir réussi à vous convaincre de ne pas/plus utiliser les tableaux à mauvais escient.
Commentez l'article : Commentez
II-I. Les formulaires▲
II-I-1. À quoi servent-ils ?▲
Les formulaires servent à envoyer des données au serveur, données remplies en général par un visiteur, que ce soit pour l'inscription
sur un site ou un formulaire de contact par exemple.
Les formulaires sont dotés de divers contrôles comme des champs de saisie, des boutons, des listes, etc, qui permettent au visiteur
d'interagir avec la page qu'il est en train de consulter.
II-I-2. La balise form▲
Tous les champs de formulaires quels qu'ils soient doivent se trouver dans cette balise
<form>.
C'est cette balise qui va permettre de renseigner la page de destination du formulaire, à l'aide de l'attribut
action, qui peut prendre pour valeurs une URL en absolu ou en relatif, voire même une adresse
e-mail.
Elle est aussi utilisée pour préciser le mode d'envoi des données. C'est avec l'attribut method
que l'on va le préciser. Cet attribut prend deux valeurs différentes qui sont "get" et "post". Les valeurs envoyées en "GET"
passent par l'URL alors qu'en "POST" elles sont envoyées de manière transparente, aussi, on préfèrera l'utilisation de la méthode d'envoi
"POST".
L'attribut enctype, quant à lui, sert à indiquer le type de données envoyées au serveur dans
le cas d'utilisation de la méthode "POST". La valeur généralement utilisée pour cet attribut est
"multipart/form-data" qui sert lors de l'envoi de fichiers chargés avec un
champ de type "file".
Voyons maintenant à quoi pourrait ressembler notre balise <form> :
<
form
action=
"
envoi-formulaire.php
"
method=
"
post
"
>
<!--
Contenu
du
formulaire
-->
<
/
form>
Si vous pouvez bien entendu mettre plusieurs formulaires dans un même document, ceux-ci doivent en aucun cas être imbriqués.
De plus, il est déconseillé d'utiliser des espaces dans l'attribut name
de tous les champs utilisés dans un formulaire, puisque celui-ci sera retranscrit en caractère de soulignement "_" lors de la
soumission du formulaire et peut donc induire en erreur lors de la récupération des données dans vos scripts.
II-I-3. Les champs texte monolignes▲
On distingue deux types de champs texte monolignes : les champs de type "texte" et les champs de type "mot de passe".
Le champ de type "texte" est l'élément de base d'un formulaire, il permet d'entrer du texte court sur une ligne, comme un login,
un e-mail, ou autres alors que le champ de type "mot de passe" permet de renseigner un mot de passe, dont l'affichage sera camouflé
aux yeux des autres personnes.
Le champ de texte monoligne est caractérisé par la balise <input> et l'attribut
type dont la valeur sera "text" ou "password".
On renseignera aussi l'attribut name qui sera le nom du champ, celui qui va nous permettre
de retrouver la valeur lors de l'envoi du formulaire.
D'autres attributs sont disponibles, comme value qui permet d'attribuer une valeur par défaut
au champ, size qui permet de préciser la taille du champ
en nombre de caractères, maxlength qui sert à limiter le nombre de caractères
possibles, readonly qui prend pour seule valeur "readonly" et verrouille le champ,
disabled qui prend pour seule valeur "disabled" et permet de désactiver le champ.
Lorsqu'un champ est défini en "disabled", sa valeur n'est pas envoyée au serveur.
Voici quelques exemples de champs texte :
II-I-4. Les champs texte multilignes▲
Si vous souhaitez que vos visiteurs puissent saisir de longs textes, comme des champs de commentaires pour des articles d'un blog par exemple,
il faudra se tourner vers l'utilisation de la balise <textarea>.
Contrairement au champ de texte monoligne, le textarea est une balise double et son contenu est écrit entre les balises ouvrante et fermante
et non dans un attribut value.
Deux attributs sont nécessaires au <textarea> :
rows qui contient le nombre de lignes et
cols qui contient le nombre de colonnes.
On peut, tout comme le champ de texte monoligne, rajouter les attributs name,
readonly et disabled.
L'attribut maxlength n'existe pas pour cette balise, et pour en limiter le nombre de caractères
il est possible de passer par du JavaScript.
Voici quelques exemples de <textarea> :
II-I-5. Les champs cachés▲
Il nous arrivera souvent de vouloir envoyer des données au serveur de manière transparente pour le visiteur. On utilisera alors un champ
caché, qui ne sera pas affiché dans le navigateur du visiteur mais dont les données seront envoyées. Attention, cette balise apparaît
tout de même dans le code source de la page.
Pour cela, on utilise la balise <input> avec "hidden" comme valeur de
l'attribut type.
Il est aussi nécessaire de renseigner l'attribut name pour retrouver ces données cachées du
côté du serveur ainsi que l'attribut value qui va contenir ces données.
Exemple de champ caché :
II-I-6. Les champs de fichiers▲
Pour permettre aux visiteurs d'envoyer des fichiers par l'intermédiaire du formulaire, que ce soit en pièce jointe d'un e-mail ou le
chargement d'une image sur le serveur, on va utiliser la balise <input>
dont l'attribut type est renseigné à "file".
Ceci fait, un champ avec un bouton "Parcourir" sera disponible.
Mais pour que le champ soit opérationnel, il faut impérativement renseigner l'attribut enctype
de la balise <form> à "multipart/form-data".
Il est aussi plus qu'utile de préciser l'attribut name du champ "file". On peut aussi renseigner
l'attribut size qui affecte la taille du champ dans lequel sera écrit le nom du fichier.
Exemple de champ "file" :
Il est également possible de limiter le poids du fichier en rajoutant un champ caché dans le formulaire contenant le champ "file". Ce champ caché doit avoir pour name la valeur "MAX_FILE_SIZE" et pour value le poids maximum en octet.
<
input
type=
"
hidden
"
name=
"
MAX_FILE_SIZE
"
value=
"
20000
"
>
Cette limitation ne vous affranchit pas de faire la vérification côté serveur ! En effet, le code HTML peut facilement être modifié par les visiteurs, donc cette valeur aussi.
II-I-7. Les boutons radio▲
Les boutons radio sont utilisés lorsque vous voulez laisser aux visiteurs un choix et un seul parmi une liste de propositions. La balise
est alors <input> dont l'attribut type
est renseigné à "radio".
Ces boutons radio vont par groupe, c'est-à-dire qu'ils doivent avoir le même nom pour un groupe de propositions. Le nom est renseigné avec
l'attribut name.
La valeur de l'attribut value va être transmise au serveur en fonction du bouton choisi. Vous
pouvez aussi forcer un bouton radio d'un groupe à être coché au chargement de la page en lui mettant l'attribut
checked dont la seule valeur est "checked".
Voyons maintenant des exemples de groupes de boutons radio :
<
p>
<
input
type=
"
radio
"
name=
"
civilité
"
value=
"
mlle
"
>
Mademoiselle
<
input
type=
"
radio
"
name=
"
civilité
"
value=
"
mme
"
>
Madame
<
input
type=
"
radio
"
name=
"
civilité
"
value=
"
mr
"
>
Monsieur
<
/
p>
<
p>
<
input
type=
"
radio
"
name=
"
genre
"
value=
"
homme
"
checked=
"
checked
"
>
Homme
<
input
type=
"
radio
"
name=
"
genre
"
value=
"
femme
"
>
Femme
<
input
type=
"
radio
"
name=
"
genre
"
value=
"
et
"
>
Alien
<
input
type=
"
radio
"
name=
"
genre
"
value=
"
indéfini
"
>
Indéfini
<
/
p>
Si vous donnez un nom différent aux boutons d'un groupe, le navigateur ne saura pas qu'ils appartiennent au même groupe (y a pas de miracle), donc plusieurs choix seront possibles et on perd toute l'utilité des boutons radio.
II-I-8. Les cases à cocher▲
Les cases à cocher sont sensiblement identiques aux boutons radio, mais permettent un choix multiple pour un groupe de propositions. Les
attributs sont identiques, à la différence que l'attribut type prend pour valeur
"checkbox".
Un problème cependant, lorsque vous désignez un groupe de cases à cocher par le même nom, seule la dernière sera envoyée au serveur.
Pour contrer cela, il suffit de rajouter des crochets ouvrant et fermant au nom du groupe. Il indiquera au serveur qu'il s'agit d'un tableau
de valeurs à récupérer et non une seule valeur (comme dans le cas des boutons radio). En revanche, dans le cas d'utilisation d'une case
à cocher unique (sans groupe), comme par exemple des CGU à valider, les crochets sont inutiles.
Voici un exemple de groupe de cases à cocher :
<
input
type=
"
checkbox
"
name=
"
qualite[]
"
value=
"
intelligent
"
>
Intelligent
<
input
type=
"
checkbox
"
name=
"
qualite[]
"
value=
"
beau
"
>
Beau
<
input
type=
"
checkbox
"
name=
"
qualite[]
"
value=
"
serviable
"
>
Serviable
<
input
type=
"
checkbox
"
name=
"
qualite[]
"
value=
"
fort
"
>
Fort
<
input
type=
"
checkbox
"
name=
"
qualite[]
"
value=
"
généreux
"
>
Généreux
II-I-9. Les boutons▲
Il existe deux balises différentes pour présenter les boutons : la balise <input>
et la balise <button>. La différence entre les deux est que la balise
<button> est double, donc qu'elle a une balise ouvrante et une balise fermante
alors que la balise <input> est simple. Il est de plus possible des balises de mise
en forme dans la balise <button>.
Il y a 4 types différents de boutons :
- Le bouton simple
- Le bouton d'envoi
- Le bouton image
- Le bouton effacer
II-I-9-a. Le bouton simple▲
Il est défini par l'attribut type des balises
<input> et <button>
ayant pour valeur "button".
Ce bouton n'est utile que lors d'appel de scripts JavaScript au moment du clic. Il n'a aucune autre fonction particulière.
Exemples de boutons simples :
II-I-9-b. Le bouton d'envoi▲
Le bouton d'envoi sert, comme son nom l'indique, à envoyer les données du formulaire au serveur. C'est celui qui va permettre de valider
le formulaire.
Il est caractérisé par la valeur "submit" de l'attribut type des balises
<input> et <button>.
Exemples de boutons d'envoi :
II-I-9-c. Le bouton image▲
Le bouton image se comporte exactement comme un bouton d'envoi, c'est-à-dire qu'il sert à la validation du formulaire. Il sert à
personnaliser son bouton, dans le cas où l'on ne trouve pas les boutons de base à notre goût.
Il est défini par l'attribut type de la balise
<input> ayant pour valeur "image" et l'on renseigne l'adresse de l'image
avec l'attribut src. C'est le seul bouton qui ne peut
pas être géré par la balise <button>.
Exemple de bouton image :
II-I-9-d. Le bouton effacer▲
Ce bouton sert à réinitialiser toutes les valeurs du formulaire.
Il est caractérisé par la valeur "reset" de l'attribut type des balises
<input> et <button>.
Exemples de boutons effacer :
II-I-10. Les listes▲
Les listes permettent de laisser un choix aux visiteurs, au même titre que les boutons radio ou les cases à cocher, mais sont plus
pratiques lorsqu'il s'agit de proposer un grand nombre de choix.
On distingue deux types de listes, les listes normales et les listes déroulantes.
Les deux sont introduites par la balise <select> qui comprend les différents choix
sous forme de balise <option> dont on renseigne la valeur qui sera envoyée au serveur
grâce à son attribut value.
On peut même suggérer une proposition par défaut en précisant l'attribut selected de la balise
<option> de notre choix.
Par défaut, une liste est déroulante.
On peut (doit) renseigner le nom de la liste avec l'attribut name.
Continuons avec un exemple :
<
select
name=
"
couleur_yeux
"
>
<
option
value=
"
bleus
"
>
Bleus<
/
option>
<
option
value=
"
bruns
"
selected=
"
selected
"
>
Bruns<
/
option>
<
option
value=
"
verts
"
>
Verts<
/
option>
<
option
value=
"
noisettes
"
>
Noisettes<
/
option>
<
option
value=
"
gris
"
>
Gris<
/
option>
<
option
value=
"
vairons
"
>
Vairons<
/
option>
<
/
select>
Cette liste est donc une liste déroulante avec un seul choix possible parmi les six proposés.
On peut rendre cette liste non déroulante en rajoutant l'attribut size qui prend pour valeur
le nom de choix à afficher, par exemple "3".
Ce qui donne :
<
select
name=
"
couleur_yeux
"
size=
"
3
"
>
<
option
value=
"
bleus
"
>
Bleus<
/
option>
<
option
value=
"
bruns
"
>
Bruns<
/
option>
<
option
value=
"
verts
"
selected=
"
selected
"
>
Verts<
/
option>
<
option
value=
"
noisettes
"
>
Noisettes<
/
option>
<
option
value=
"
gris
"
>
Gris<
/
option>
<
option
value=
"
vairons
"
>
Vairons<
/
option>
<
/
select>
Ici encore, un seul choix est possible. Pour pouvoir proposer plusieurs choix, comme dans le cas de cases à cocher, il suffit de rajouter
l'attribut multiple qui prend pour seule valeur "multiple".
Voyons pour l'exemple :
<
select
name=
"
matieres_preferees
"
size=
"
5
"
multiple=
"
multiple
"
>
<
option
value=
"
maths
"
>
Maths<
/
option>
<
option
value=
"
français
"
>
Français<
/
option>
<
option
value=
"
anglais
"
>
Anglais<
/
option>
<
option
value=
"
histoire
"
>
Histoire<
/
option>
<
option
value=
"
sport
"
>
Sport<
/
option>
<
option
value=
"
dessin
"
>
Dessin<
/
option>
<
option
value=
"
musique
"
>
Musique<
/
option>
<
option
value=
"
physique
"
>
Physique<
/
option>
<
option
value=
"
sciences
naturelles
"
>
Sciences naturelles<
/
option>
<
/
select>
Le choix multiple ne peut pas se faire sur une liste déroulante. L'attribut size doit être renseigné pour que le multiple fonctionne.
II-I-11. Améliorez l'accessibilité de vos formulaires▲
Pour améliorer l'accessibilité de vos formulaires aux handicapés, malvoyants, quelques balises ont été créées et il est toujours bon
de les utiliser, d'autant plus qu'elles ne perturbent pas
l'utilisation pour les autres visiteurs et clarifient même la compréhension des formulaires.
Il s'agit d'une part de la balise <fieldset> qui permet de grouper logiquement
des champs de formulaires de même nature. Par exemple, pour un formulaire d'inscription vous pouvez grouper tous les champs
en rapport avec les informations personnelles du visiteur, puis grouper tous les champs concernant ses loisirs, etc.
La balise qui va permettre de donner ce nom au groupage de champs est <legend>.
Regardons quelques exemples :
<
fieldset>
<
legend>
Informations personnelles<
/
legend>
<!--
Ici
divers
champs
sur
les
informations
personnelles,
comme
la
saisie
du
nom,
prénom
et
adresse
-->
<
/
fieldset>
<
fieldset>
<
legend>
Loisirs<
/
legend>
<!--
Ici
divers
champs
sur
les
loisirs
du
visiteur,
comme
la
musique
et
les
films
qu'il
aime
etc
-->
<
/
fieldset>
Il y a d'autre part, la balise <label> qui permet de donner un libellé
à un champ de formulaire en les associant à l'aide de l'attribut for de cette balise
qui doit être identique à l'attribut id du champ auquel elle est rattachée.
Le texte mis dans le label est alors cliquable.
Par exemple :
<
label
for=
"
nom
"
>
Votre nom<
/
label>
<
input
type=
"
text
"
name=
"
nom
"
id=
"
nom
"
>
Aimez-vous la viande ?
<
label
for=
"
oui
"
>
Oui<
/
label>
<
input
type=
"
radio
"
name=
"
viande
"
id=
"
oui
"
>
<
label
for=
"
non
"
>
Non<
/
label>
<
input
type=
"
radio
"
name=
"
viande
"
id=
"
non
"
>
Commentez l'article : Commentez