Exercice 1. La structure minimale d'une page HTML

31
1 ESR 2011-2012 Exercice 1. La structure minimale d'une page HTML 1. Créez un répertoire tp-html puis un fichier base.html dans le répertoire /EnvSystemeReseau/ avec le contenu suivant (sans les numéros de lignes) : Ce fichier, qui contient la structure minimale d'une page HTML, vous servira de base de départ à chaque fois que vous créerez une nouvelle page HTML. 2. Analyse : Un document HTML commence et se termine avec les balises <html> et </html>. Ces balises indiquent au navigateur que le document est entièrement composé en HTML. Tout document HTML contient deux parties principales : un en-tête, défini dans la balise <head> et qui contient les informations concernant le document et un corps, défini dans la balise <body> et qui contient le contenu à afficher dans le navigateur L'élément d'en-tête le plus important, et le seul obligatoire, est le titre, spécifié à l'aide de la balise <title>. Les navigateurs ne mettent pas en forme le texte du titre et ignorent tout élément autre que du texte. Le contenu du titre s'affiche en haut de la fenêtre du navigateur. 3. Pour afficher ce fichier dans un navigateur Web, vous pouvez : soit cliquer sur le fichier avec le bouton droit de la souris et choisir Ouvrir avec/Navigateur Web, soit ouvrir un navigateur Web et ouvrir le fichier à partir du menu Fichier/Ouvrir un fichier. 4. Remarque : Les accents ne sont pas correctement affichés par le navigateur. Afin de remédier à ce problème : On indique au navigateur la table de caractères (charset) qu'il doit utiliser pour afficher le contenu de la page (les tables de caractères sont associées à la notion de claviers nationaux). On utilise pour cela la balise <meta charset=>. Pour l'affichage de caractères issus de la majorité des langues (français, anglais, espagnol, italien, etc.), on utilise la table ISO-8859-1 (http://fr.wikipedia.org/wiki/ISO_8859_1). Si la page contient des caractères issus de familles de langues différentes (par exemple, du français et du russe), on utilise la table UTF-8 (http://fr.wikipedia.org/UTF_8). La liste officielle de toutes les tables de caractères existantes se trouve à l'adresse suivante : http://www.iana.org/assignments/character-sets. Pour s'assurer que les caractères accentués s'affichent correctement dans tous les navigateurs du monde, on les remplace par leur nom d'entité ou par leur code d'entité. Un code d'entité est composé du caractère & (esperluette), du code HTML du caractère concerné et du caractère ; (point-virgule) : &code_HTML; Un nom d'entité est composé de la séquence &# (esperluette cad ampersand en anglais et croisillon, du code ASCII du caractère concerné et du caractère ; (point-virgule) : &#code_ASCII; Exemple : représentation du caractère 'é' (e avec accent aigu) par son entité - son code HTML est eacute, son code d'entité est &eacute; - son code ASCII est 233, son nom d'entité est &#233; Vous trouverez à l'adresse http://www.w3schools.com/tags/ref_entities.asp la liste complète des noms d'entités (colonne 'Entity name') et des codes d'entités (colonne 'Entity numbers'). Complétez le fichier base.html (voir le code suivant) et sauvegardez-le. Puis, dans le navigateur, rechargez la page, en cliquant sur la touche <F5> de votre clavier ou sur l'icône de votre navigateur. Observez le résultat.

Transcript of Exercice 1. La structure minimale d'une page HTML

1

ESR 2011-2012

Exercice 1. La structure minimale d'une page HTML

1. Créez un répertoire tp-html puis un fichier base.html dans le répertoire /EnvSystemeReseau/ avec le

contenu suivant (sans les numéros de lignes) :

Ce fichier, qui contient la structure minimale d'une page HTML, vous servira de base de départ à chaque fois que

vous créerez une nouvelle page HTML.

2. Analyse :

Un document HTML commence et se termine avec les balises <html> et </html>. Ces balises indiquent

au navigateur que le document est entièrement composé en HTML.

Tout document HTML contient deux parties principales :

un en-tête, défini dans la balise <head> et qui contient les informations concernant le document

et un corps, défini dans la balise <body> et qui contient le contenu à afficher dans le navigateur

L'élément d'en-tête le plus important, et le seul obligatoire, est le titre, spécifié à l'aide de la balise

<title>. Les navigateurs ne mettent pas en forme le texte du titre et ignorent tout élément autre que du

texte. Le contenu du titre s'affiche en haut de la fenêtre du navigateur.

3. Pour afficher ce fichier dans un navigateur Web, vous pouvez :

soit cliquer sur le fichier avec le bouton droit de la souris et choisir Ouvrir avec/Navigateur Web,

soit ouvrir un navigateur Web et ouvrir le fichier à partir du menu Fichier/Ouvrir un fichier.

4. Remarque :

Les accents ne sont pas correctement affichés par le navigateur. Afin de remédier à ce problème :

On indique au navigateur la table de caractères (charset) qu'il doit utiliser pour afficher le contenu de la

page (les tables de caractères sont associées à la notion de claviers nationaux). On utilise pour cela la balise

<meta charset=>.

Pour l'affichage de caractères issus de la majorité des langues (français, anglais, espagnol, italien, etc.), on utilise

la table ISO-8859-1 (http://fr.wikipedia.org/wiki/ISO_8859_1). Si la page contient des caractères issus de

familles de langues différentes (par exemple, du français et du russe), on utilise la table UTF-8

(http://fr.wikipedia.org/UTF_8). La liste officielle de toutes les tables de caractères existantes se trouve à l'adresse

suivante : http://www.iana.org/assignments/character-sets.

Pour s'assurer que les caractères accentués s'affichent correctement dans tous les navigateurs du monde, on

les remplace par leur nom d'entité ou par leur code d'entité.

Un code d'entité est composé du caractère & (esperluette), du code HTML du caractère concerné et du

caractère ; (point-virgule) : &code_HTML;

Un nom d'entité est composé de la séquence &# (esperluette cad ampersand en anglais et croisillon, du

code ASCII du caractère concerné et du caractère ; (point-virgule) : &#code_ASCII;

Exemple : représentation du caractère 'é' (e avec accent aigu) par son entité

- son code HTML est eacute, son code d'entité est &eacute;

- son code ASCII est 233, son nom d'entité est &#233;

Vous trouverez à l'adresse http://www.w3schools.com/tags/ref_entities.asp la liste complète des noms d'entités

(colonne 'Entity name') et des codes d'entités (colonne 'Entity numbers').

Complétez le fichier base.html (voir le code suivant) et sauvegardez-le. Puis, dans le

navigateur, rechargez la page, en cliquant sur la touche <F5> de votre clavier ou sur l'icône de

votre navigateur. Observez le résultat.

2

ESR 2011-2012

Exercice 2. Ma première page HTML

1. Ouvrez un nouveau fichier et enregistrez-le sous le nom page1.html dans le répertoire

/EnvSystemeReseau/tp-html. Puis, copiez et collez le contenu de base.html dans ce nouveau

fichier.

2. Créez un répertoire images dans le répertoire /EnvSystemeReseau/tp-html. Recherchez le logo de

l'université Paris-Est sur le Web et enregistrez l'image dans votre répertoire images sous le nom logo-

upe.jpg. Placez ensuite votre photo préférée de vous-même dans le répertoire images sous le nom

moi.jpg.

3. Complétez le fichier page1.html de manière à obtenir le document suivant :

4. Analyse :

Tout d'abord, les lignes 7, 11, 18 et 25 sont des commentaires. Il est possible d'ajouter, dans une page

HTML, des éléments d'information à destination des programmeurs. Il peut s'agir, par exemple, de

mentions internes sur l'auteur et la date de création du fichier, ou de remarques concernant le code qui

permettront à toute personne ou au programmeur lui-même de lire ou relire aisément le code HTML.

Les commentaires sont placés entre les séquences <!-- (marqueur de début) et --> (marqueur de fin). Tout ce

qui se trouve entre ces deux marqueurs est ignoré par le navigateur lors de l'affichage.

La balise <h1> (ligne 8) permet d'introduire un titre de premier niveau. Le langage HTML possède six

niveaux de titres : les balises <h1>, <h2>, ... jusqu'à <h6>, affichées par les navigateurs dans une taille

décroissante de caractères. La balise <h3> (ligne 14) introduit donc un titre de niveau 3.

Dans la plupart des navigateurs, les titres <h1>, <h2> et <h3> sont affichés avec une police plus grosse que le

3

ESR 2011-2012

texte normal, <h4> est affiché avec une police de même taille que le texte normal, et <h5> et <h6> sont plus

petits.

La balise <hr> (lignes 9 et 16) permet d'introduire une ligne horizontale dans la page. Elle peut être

utilisée pour séparer les différentes sections d'un document, en l'occurrence, le titre, le sous-titre, le contenu

et la signature.

La balise <img> (lignes 12 et 15) permet d'introduire une image à partir d'un fichier dont le chemin est

spécifié par l'attribut src. L'attribut alt permet de spécifier un texte alternatif au cas où l'image ne

s'afficherait pas. L'attribut title spécifie le contenu de l'infobulle qui s'affiche lors du survol de l'image

avec la souris. D'autres attributs de la balise <img> (que nous verrons plus en détail au cours d'un prochain

TP) permettent de formater l'image et de la positionner dans la page.

La balise <p> (lignes 19 et 26) marque le début d'un paragraphe. Lorsque le navigateur rencontre cette

balise, il insère un saut de ligne et un espace vertical avant l'élément suivant. On peut également insérer un

saut de ligne simple à l'intérieur d'un paragraphe avec la balise <br> (ligne 24).

Les balises <b> (texte en gras) et <i> (texte en italiques) sont des balises de style physique. Ces balises

sont utilisées lorsqu'on veut que le texte s'affiche d'une certaine manière (en gras, en italiques, etc.).

La balise <a> (ligne 23) est un lien hypertexte qui renvoie à la première balise <a> (ligne 8), qu'on

appelle une ancre. En cliquant sur le texte Retour au début de la page de la seconde balise

<a>, vous pouvez revenir en haut de page plus rapidement qu'avec les barres de défilement lorsque la page

est longue.

Enfin, la balise <cite> est une balise de style de contenu. Elle indique que le texte inclus est une citation

bibliographique. Par convention, son contenu est affiché en italiques.

Les balises de style de contenu indiquent au navigateur que leur contenu présente une signification, un usage

particulier. Le navigateur met alors ce contenu en forme en fonction de cette signification. Les balises de style de

contenu sont essentielles pour le traitement automatique du contenu d'une page HTML. La balise <cite> peut,

par exemple, permettre d'extraire automatiquement une bibliographie depuis un fichier HTML.

5. Téléchargez sur le Web une image de taille moyenne. Enregistrez-la dans votre répertoire images. Puis

insérez-la dans la page, avant le paragraphe qui commence à la ligne 19. Utilisez ensuite les barres de

défilement pour descendre au bas de la page. Puis retournez en haut de page avec le lien Retour au début

de la page.

Exercice 3. Les balises HTML

1. HTML est un langage imbriqué : les balises sont des instructions qui, insérées dans le document, indiquent au

navigateur comment afficher leur contenu. Les balises sont donc interprétées par le navigateur, elles ne sont

pas affichées à l'écran. Formellement, une balise HTML est un nom encadré par les caractères < (inférieur) et

> (supérieur). Par exemple, <html>.

On distingue deux types de balises :

La plupart des balises HTML sont des balises doubles : elles nécessitent deux balises, une ouvrante

(<html>) et une fermante (</html>). La balise fermante est identique à la balise ouvrante, elle contient

en plus un caractère / avant le nom.

La zone de contenu délimitée par ces deux balises constitue le contenu de la balise (du texte et/ou d'autres

balises) qui, ainsi délimité, peut être traité de manière exclusive, pour la mise en forme par exemple.

Exemple : <i>Du texte en italiques</i>

Il existe également quelques balises simples (ou vides). Ce sont des balises qui ne peuvent contenir

d'autres balises HTML, elles n'ont donc pas besoin d'être fermées , car elles sont auto-fermantes et le

caractère / marquant la fin de l'élément se place à la fin de la balise ouvrante.

Exemple : <img src="images/moi.jpg" alt="Toto" title="c&apos;est moi !" />

Recherchez dans la page http://creer-un-site.fr/liste-des-balises-html-xhtml-28.php la liste des balises simples du

HTML.

1. Un document HTML est composé de balises imbriquées de manière hiérarchique.

On distingue alors les ancêtres, les parents, les enfants et les frères.

Exemple : <strong>Du texte <i>en italiques <u>et souligné</u></i></strong>

La balise <strong> est parent de la balise <i>, qui est elle-même parent de la balise <u>. La balise

4

ESR 2011-2012

<strong> est ancêtre de la balise <u>. Inversement, <u> est enfant de <i>, qui est elle-même enfant de

<strong>.

- Complétez les phrases a à g à partir du code qui suit :

a. <h4> est ____________________ de <p>.

b. Les deux <p> sont ____________________.

c. <h5> est ____________________ de <p>.

d. <p> est ____________________ de <h5>.

e. <i> est ____________________ de <b>.

f. <p> est ____________________ de <i> et de <b>.

g. <h5> est ____________________ de <i>.

L'imbrication de balises permet de cumuler les propriétés à appliquer à une portion de contenu. Dans

l'exemple <strong>Du texte <i>en italiques <u>et souligné</u></i></strong> :

la portion de texte 'Du texte' sera affichée en gras car elle est contenue dans la balise <strong>

la portion 'en italiques' sera affichée à la fois en gras et en italiques, car elle est contenue dans la balise

<i> qui est elle-même imbriquée dans la balise <strong>

et la portion 'en souligné' sera affichée à la fois en gras, en italiques et soulignée, car elle est contenue

dans la balise <u>, qui est imbriquée dans la balise <i>, qui est imbriquée dans la balise <strong>.

Le chevauchement des balises est une erreur qui empêche l'affichage correct du contenu.

Exemple : <i>Les balises <u>ne sont pas imbriquées</i> correctement</i>

- Trouvez les erreurs qui se sont glissées dans le code suivant et corrigez-les.

1. La balise ouvrante peut contenir des attributs qui précisent ou modifient leur comportement. Ces attributs sont

placés après le nom de la balise, chacun séparé par un ou plusieurs espaces, tabulations ou retours chariot. Leur

ordre n'a aucune importance.

Les attributs sont notés sous la forme nom_attribut="valeur". Par exemple, l'attribut style permet de

spéficier la mise en forme du contenu d'un élément (positionnement des éléments qu'il contient, couleur du texte,

couleur d'arrière-plan, tailles, etc.) à l'aide des propriétés de style du CSS. Sa notation est :

style="propriété1:valeur; propriété2:valeur; ...; propriétéN:valeur".

Exemple :

IMPORTANT : Les noms des balises et des attributs ne sont pas sensibles à la casse (<head>, <HEAD> et

<Head> sont équivalents). En revanche, les valeurs assignées à un attributs sont sensibles à la casse. En

particulier, les noms de fichiers et de répertoires (URL).

5

ESR 2011-2012

Exercice 4. Mise en page

1. Ouvrez un nouveau fichier et enregistrez-le sous le nom page2.html dans le répertoire

/EnvSystemeReseau/tp-html. Puis, copiez-y le contenu du fichier base.html.

2. Dans la balise <body>, insérez des éléments <div> de la manière suivante :

3. Explications :

La balise <div> permet de diviser l'espace en zones d'affichage indépendantes. Chaque zone (ou 'boîte')

peut être dotée de barres de défilement, d'une image d'arrière-plan, de styles indépendants, et peut être

positionnée de façon précise sur la page.

Les principales propriétés CSS de la balise <div> sont : width (largeur), height (hauteur), margin

(marge extérieure), padding (marge intérieure), border-color (couleur de la bordure), border-

width (épaisseur de la bordure), border-style (style de trait de la bordure), background-color

(couleur d'arrière-plan).

1. La propriété background-image permet de définir l'image d'arrière-plan d'une boîte. Elle est fixée par

l'URL de l'image : background-image:url(image), où image est l'adresse de l'image, par exemple

images/logo-upe.jpg.

Insérez, à la suite de la seconde boîte <div>, une balise <div> de 50% de largeur (width) et 10% de

hauteur (height) avec un arrière-plan de couleur orange (background-color).

Le contenu de cette boîte est Ce texte est affiché au-dessus de l'image d'arrière-plan.

Ajoutez comme image d'arrière-plan de cette boîte l'image logo-upe.jpg de l'exercice 2.

2. Par défaut, l'image d'arrière-plan se répète horizontalement et verticalement. Utilisez la propriété

background-repeat avec la valeur appropriée afin d'empêcher l'arrière-plan de se répéter.

3. Par défaut, l'image d'arrière-plan se place en haut à gauche dans la boîte. Utilisez la propriété background-

position (background-position: horizontale verticale;), où horizontale et

verticale sont la position horizontale et verticale, afin de positionner l'image en bas et au centre de la

boîte.

Exercice 5. Le flux HTML

La disposition des éléments d'une page HTML se fait par défaut selon le flux courant : le navigateur parcourt le

code HTML et affiche au fur et à mesure les balises qu'il rencontre. Par conséquent, chaque élément est dépendant

des éléments qui l'entourent.

Boîtes bloc et en-ligne

1. Généralement, on distingue deux types d'éléments HTML : les éléments de type inline (en-ligne) et les

éléments de type block (bloc). Cette distinction a diverses implications sur les éléments concernés.

Elle a des implications sur le positionnement des éléments dans le flux courant :

les boîtes de type block :

- sont en flux vertical : elles se placent l'une en-dessous de l'autre

- occupent automatiquement toute la largeur disponible de leur conteneur (élément parent)

6

ESR 2011-2012

- exemples : <div>, <h1> à <h6>, <p>, <ul>, <ol>, <li>, etc.

les boîtes de type inline :

- sont en flux horizontal : elles se placent l'une à côté de l'autre, sur la même ligne

- n'occupent que la place nécessaire à leur contenu

- exemples : <span>, <a>, <img>, <em>, <strong>, <cite>, etc.

toute boîte peut être reclassée dans un type différent grâce à la propriété CSS display.

http://htmlhelp.com/reference/html40/block.html : les balises block

http://htmlhelp.com/reference/html40/inline.html : les balises inline

Elle a des implications concernant les styles des éléments concernés :

les balises block peuvent être positionnées et dimensionnées à l'aide des propriétés CSS width et

height (largeur et hauteur), min-width et min-height (largeur et hauteur minimales), etc.

les balises inline ne sont pas prévues pour l'être.

Elle a des implications sur les règles d'imbrication des éléments :

les balises block peuvent contenir une (ou plusieurs) autres balises block et/ou inline (sauf

quelques exceptions)

les balises inline ne peuvent contenir qu'une (ou plusieurs) balises inline.

1. Créez un nouveau fichier page3.html dans le répertoire /EnvSystemeReseau/tp-html et copiez-y le

contenu de base.html.

Au cours de cet exercice, vous utiliserez l'élément <p> (que nous avons vu au cours de l'exercice 2) et l'élément

<span>. Ce dernier permet de mettre en forme des portions de texte. Vous utiliserez également les propriétés

width (largeur), background-color (couleur d'arrière-plan), padding (marge intérieure) et margin

(marge extérieure).

Insérez dans <body>, successivement :

un <p> de 200 px de largeur, d'arrière-plan jaune et dont le contenu est le texte une boîte jaune,

un <p> d'arrière-plan vert et dont le contenu est une boîte verte

et un <p> de 400 px de largeur, 5 px de marge intérieure et d'arrière-plan gris, avec à l'intérieur :

un <span> d'arrière-plan jaune et dont le contenu est une boîte jaune

et un <span> d'arrière-plan bleu et dont le contenu est une boîte bleue.

Que constatez-vous concernant le positionnement dans le flux courant et la largeur des boîtes ?

Attribuez une marge extérieure de 20 px au premier <p> et de 0 px au second <p>. Que constatez-vous

concernant l'étendue des marges par rapport aux bordures de l'élément parent <body> ?

Attribuez à <body> une marge intérieure de 0 px. Observez le résultat. Puis remplacez padding par

margin et observez le résultat.

Exceptionnellement, avec l'élément <body>, la propriété margin spécifie non pas les marges extérieures mais

les marges intérieures. Par défaut, la marge intérieure de <body> est de 8 px.

Attribuez aux deux premiers <p> la propriété display:inline. Quelle est la conséquence ?

Attribuez au premier <span> la propriété display:block. Quelles sont les conséquences ?

Positionnement des éléments dans le flux

1. La propriété CSS position permet de modifier le positionnement par défaut des éléments dans le flux.

Le positionnement relatif (position:relative;) :

maintient l'élément dans le flux courant,

permet de le décaler par rapport à sa position par défaut dans le flux

et le décalage n'influence en rien les éléments qui le précèdent ou le suivent : ces derniers se

positionnement par rapport à sa position par défaut.

Le positionnement absolu (position:absolute;) :

retire l'élément du flux courant,

permet de le positionner par rapport aux bordures de son parent

et a une influence sur les éléments qui le précèdent ou le suivent : ces derniers considèrent qu'il n'existe

plus (par exemple, l'élément qui le suit dans le flux se positionne non plus par rapport à l'élément

concerné mais par rapport à l'élément qui le précède).

7

ESR 2011-2012

Le positionnement fixe (position:fixed;) :

s'apparente au positionnement absolu

et l'élément reste toujours dans la même position par rapport à la fenêtre du navigateur, même lorsque

l'utilisateur fait défiler le contenu de la page avec les barres de défilement.

Le positionnement par défaut (position:static;) :

l'élément se trouve à sa position par défaut dans le flux

et les propriétés top, bottom, left et right ne s'y appliquent pas.

Un élément est positionné quand la valeur de sa position n'est pas static. Le positionnement d'un tel

élément est réalisé à l'aide des propriétés :

top : décalage du bord haut de l'élément par rapport au bord haut de son parent

bottom : décalage du bord bas de l'élément par rapport au bord bas de son parent

left : décalage du bord gauche de l'élément par rapport au bord gauche de son parent

right : décalage du bord droit de l'élément par rapport au bord droit de son parent

1. Insérez l'élément suivant dans page3.html :

Décalez l'élément <span> de 10 px à gauche et de 5 px en bas. Quelles sont les conséquences ?

2. Positionnez le premier <span> de la question 2 en absolu. Quelles sont les conséquences ? Où se trouve la

boîte bleue, à présent, et par rapport à quoi se place-t-elle ?

3. Créez un nouveau fichier nommé page4.html dans le répertoire /EnvSystemeReseau/tp-html et

copiez-y le contenu du fichier base.html.

Insérez dans l'élément <body>, successivement :

un élément <div> dont le contenu est :

« Iam summus Pater architectus Deus Hanc quam videmus mundanam domum, divinitatis templum augustissimum, archanae legibus sapientiae fabrefecerat. Supercaelestem regionem mentibus decorarat ;

aethereos globos aeternis animis vagetarat ; excrementarias ac feculentas inferioris mundi partes amnigena

animalium turba complera. [...] »

puis un élément <div> dont le contenu est :

Lien 1 <br> Lien 2 <br> Lien 3 <br>

Par rapport à quel élément les deux <div> seraient-ils positionnés si on les sortait du flux courant ?

Attribuez au premier <div> les propriétés suivantes : un positionnement absolu ; à 10 % du bord gauche

et 5% du bord haut de la fenêtre ; une largeur de 30% et une hauteur de 100% ; une marge intérieure de 15

px ; une bordure de couleur noire, d'une épaisseur de 1 px et de style solid.

Attribuez au second <div> : un positionnement fixe ; à 2% du bord haut et 2% du bord droit de la fenêtre

; une largeur de 10% ; une marge intérieure de 15 px ; un arrière-plan de couleur gris.

Faites défiler la page vers le haut et vers le bas avec les barres de défilement et observez le comportement

des deux éléments <div>.

8

ESR 2011-2012

Exercice 6 – Les tableaux

1. Créez un fichier mon-cv.html dans le répertoire /EnvSystemeReseau/tp-html. Copiez-y le

contenu du fichier base.html.

2. Complétez le contenu de la balise <title> imbriquée dans <head> avec le titre suivant : Curriculum

Vitae de Nom Prénom.

3. Souvent, pour présenter des informations structurées en lignes et en colonnes, on utilise les tableaux. La

balise <table> permet d'insérer un tableau dans une page Web.

Un tableau est défini de la manière suivante :

Le tableau commence par la balise ouvrante <table> et se termine par la balise fermante </table>.

On utilise la balise <tr> (table row) pour insérer une nouvelle ligne.

On utilise la balise <td> (table data) pour insérer une nouvelle cellule dans une ligne.

On utilise la balise <th> (table head) pour insérer un titre de ligne ou de colonne

Voici un exemple de tableau et le résutlat de son affichage :

1. Dans cet exemple, tous les élément <th> ont un attribut style de même valeur, et tous les éléments <td>

9

ESR 2011-2012

ont un attribut style de même valeur. Afin d'appliquer les mêmes styles à plusieurs balises sans les répéter dans

chacune des balises concernées, on peut définir une feuille de style interne. Pour cela on utilise la balise

<style> dans l'en-tête <head> du document.

En voici un exemple :

Le résultat de l'affichage est le même que celui du tableau précédent. La balise <style> contient 3 règles CSS :

la première s'applique à tous les éléments <table> de la page, la second s'applique à tous les éléments <th> de

tous les tableaux de la page, la troisième s'applique à tous les éléments <td> de tous les tableaux de la page.

2. Il existe 3 manières de définir des styles CSS :

les styles en ligne : dans le code HTML, avec l'attribut style dans chaque élément

les styles incorporés : dans l'en-tête de la page, avec la balise <style>

les styles externes : dans une feuille de style séparée (un fichier dont le nom a pour extension .css,

fichier.css dans l'exemple suivant). Une feuille de style externe peut être appliquée à n'importe

quel fichier HTML. Il suffit, pour cela, d'insérer, dans le fichier HTML concerné, une balise <link> de la

manière suivante :

10

ESR 2011-2012

1. Dans le fichier mon-cv.html, nous allons créer 3 sections : diplômes, expériences professionnelles et

loisirs. Vous définirez les styles en interne ou en externe.

Le titre de chaque section sera inséré à l'aide d'une balise <h3>. Il sera affiché en bleu (color:

blue;) et centré horizontalement (text-align: center).

Le contenu de chaque section sera un tableau.

Dans la section Diplômes, le tableau contiendra autant de lignes que de diplômes que vous avez obtenus.

Il sera divisé en 3 colonnes dont les titres seront : Année, Diplôme, Établissement. Le contenu des cellules sera

aligné à gauche (text-align: left;)

Dans la section Expériences professionnelles, le tableau sera divisé en 3 colonnes dont les titres seront :

Période, Établissement, Poste occupé. Le contenu des cellules sera également aligné à gauche.

Dans la section Loisirs, le tableau contiendra 3 lignes dont les titres seront : langues, activités artistiques

et sports. Chaque ligne contient 2 colonnes.

1. Ajoutez un titre principal à votre page à l'aide d'une balise <h1> que vous formaterez selon votre goût.

2. Ajoutez également une section contenant votre identité et vos coordonnées (Nom et prénom, adresse

postale, adresse électronique, numéros de téléphone fixe et portable).

Exercice 7 – Les listes

1. Créez un fichier mon-cv_listes.html dans le répertoire /EnvSystemeReseau/tp-html.

Copiez-y le contenu du fichier base.html.

2. Complétez le contenu de la balise <title> imbriquée dans <head> avec le titre suivant : Curriculum

Vitae (listes) de Nom Prénom.

3. Souvent, pour présenter des informations ordonnées, non ordonnées ou des définitions, on utilise des

listes. Une liste doit contenir au minimum un élément.

Une liste non ordonnée est définie de la manière suivante :

La liste commence par la balise ouvrante <UL> et se termine par la balise fermante </UL>.

On utilise la balise <IL> pour insérer un nouvel élément dans la liste.

Voici un exemple de liste non ordonnée :

Insérez ce code dans le corps <body> du fichier mon-cv_listes.html et observez.

1. Les éléments d'une liste non ordonnée sont introduits par des « éléments graphiques ». Par défaut il s'agit

d'un rond noir pour le premier niveau d'indentation, un rond blanc pour le deuxième niveau, etc... Ces éléments

graphiques peuvent être modifiés en renseignant le champs type='valeur' dans la balise <IL>.

fichier.css

fichier.html

11

ESR 2011-2012

Le champs type peut prendre les valeurs suivantes :

Testez les différentes valeurs sur la liste non ordonnée précédente.

2. Une liste ordonnée est définie de la manière suivante :

La liste commence par la balise ouvrante <OL> et se termine par la balise fermante </OL>.

On utilise la balise <IL> pour insérer un nouvel élément dans la liste.

Transformez la liste non ordonnée précédente en liste ordonnée, observez.

1. Comme pour les listes non ordonnées, les listes ordonnées utilisent des éléments graphiques pour

introduire les éléments de la liste. Ces éléments graphiques peuvent être modifiés en renseignant le champs

type='valeur' dans la balise <OL>.

Le champs type peut prendre les valeurs suivantes :

Type Type d'énumération

1 Chiffres arabes 1, 2, 3, ...

a Minuscules a b, c, ...

A Majuscules A, B, C, ...

i Chiffres romains minuscules i, ii, iii, ...

I Chiffres romains majuscules I, II, III, ...

Testez les différentes valeurs sur la liste ordonnée précédente.

2. Une liste dite de « description » est définie de la manière suivante :

La liste commence par la balise ouvrante <DL> et se termine par la balise fermante </DL>.

Un titre de définition est indiqué par la balise <DT>.

On utilise la balise <DD> pour renseigner la définition elle-même.

Voici un exemple de liste de description :

Insérez ce code dans le corps <body> du fichier mon-cv_listes.html et observez.

1. Dans le fichier mon-cv_listes.html, nous allons créer 3 sections : diplômes, expériences

professionnelles et loisirs.

Chaque section sera une liste de description dont le titre sera inséré à l'aide d'une balise <h3>. Il sera

affiché en bleu (color: blue;) .

Le contenu de chaque section sera une liste non ordonnée d'éléments en rapport avec la section (les

diplômes dans la section diplômes, ...).

Pour chaque diplôme dans la section Diplômes, vous devez créer une liste non ordonnée contenant les

12

ESR 2011-2012

informations suivantes : Année, Diplôme, Établissement.

La section Expériences professionnelles, doit être créée de la même façon que la section Diplômes. Les

informations demandées pour chaque expérience sont : Période, Établissement, Poste occupé.

De même pour la section Loisirs, avec les informations suivantes : langues, activités artistiques et sports.

2. Ajoutez également une section contenant votre identité et vos coordonnées (Nom et prénom, adresse

postale, adresse électronique, numéros de téléphone fixe et portable). Cette section sera créée grâce à une liste de

description.

Exercice 7 – Mise en forme des listes

1. Créez un fichier listes-formattees.html dans le répertoire /EnvSystemeReseau/tp-

html. Copiez-y le contenu du fichier base.html.

2. Insérez la liste suivante dans le corps de la page :

Puis définissez le code CSS qui permet de formater l'affichage de cette liste comme suit :

En l'absence de règles supplémentaires, la liste est affichée

de cette manière :

3. Positionnement de la liste. Attribuez à la liste précédente une marge extérieure gauche (margin-left)

et une marge intérieure gauche (padding-left) de 0 px et observez le résultat.

Corrigez ensuite les deux propriétés précédentes de manière à réintégrer les puces de la liste à l'intérieur du bloc

<div>.

4. Images en tant que puces. La propriété list-style-image permet d'utiliser une image en tant que

puce. Téléchargez une image (pas trop grande) et enregistrez-la dans le répertoire images sous le nom

puce.gif. Puis complétez le code CSS relatif à la liste avec la propriété liste-style-image:

url(puce.gif);.

Si le navigateur utilisé par l'utilisateur ne prend pas en chage cette partie de CSS (ou n'affiche pas les images), la

puce par défaut sera utilisée. Pour spécifier vous-même la puce HTML à afficher dans une telle situtation, vous

définirez à la fois la propriété list-style-image et la propriété list-style-type.

13

ESR 2011-2012

5. Positionnement des puces. La propriété list-style-position permet de placer les puces par

rapport au texte des items de la liste. Attribuez à la liste précédente cette propriété avec pour valeur inside et

observez le résultat.

6. Suppression des puces. Il peut arriver que vous ne vouliez pas utiliser de puce pour l'affichage d'une

liste. Pour cela, vous remplacerez les trois règles précédentes par l'attribut list-style: none; dans votre

règle de style concernant la liste.

Si vous souhaitez, non pas supprimer les puces mais les remplacer par un caractère de votre choix, vous utiliserez

également la règle list-style: none;. Puis vous forcerez la première ligne de chaque item de la liste à

s'afficher avec un alinéa négatif à l'aide de la propriété text-indent. Il vous faudra également définir le

margin-left ou padding-left, l'un des deux au choix, à 0, et l'autre à la même valeur positive que le

text-indent. Voici le code CSS complet :

Remplacez les styles définis précédemment pour la liste par ces derniers. Puis ajoutez le caractère &#187; au

début de chaque item de la liste.

Exercice 8. Les styles CSS

1. Une feuille de style est un fichier dont l'extension est .css. On définit dans ce fichier nos préférences

concernant l'affichage du contenu de notre page HTML : les polices d'écriture, la taille des caractères pour les

textes, les couleurs, la taille des images, arrière-plans, le positionnement des différentes sections, etc.

Nous avons vu (durant l'exercice 6) les trois façons de définir les styles d'une page HTML. L'avantage des styles

externes, c'est qu'une modification dans cette feuille de style principale affectera toutes les pages qui lui sont liées.

2. Créez un fichier mise-en-forme.html dans le répertoire /EnvSystemeReseau/tp-html.

Copiez-y le contenu du fichier base.html. Créez ensuite un nouveau fichier mes-styles.css dans le même

répertoire.

3. Insérez, dans la balise <head> de votre page HTML, la balise suivante :

Cette balise vous permet de créer un raccourci vers le fichier dans lequel vous définissez les styles d'affichage de

votre page :

La balise <link> indique au navigateur qu'il doit chercher un document situé à l'extérieur de la page

HTML.

L'attribut rel="stylesheet" précise que le document en question est une feuille de style.

L'attribut type="text/css" précise le type de la feuille de style, du CSS en l'occurrence.

Et L'attribut href="URL" donne l'URL de la feuille de style, c'est-à-dire son emplacement.

1. À présent, insérez dans le contenu de la page (dans la balise <body>) un titre <h1> dont le contenu est

Mise en forme par les styles CSS. Insérez ensuite un titre <h2> dont le contenu est Un premier petit exemple suivi

d'un paragraphe <p> que vous remplirez avec un texte quelconque de petit taille (à rechercher sur le Web). Insérez

une deuxième fois un titre <h2> avec pour contenu Un deuxième petit exemple suivi d'un paragraphe que vous

remplirez cette fois avec un texte de longueur moyenne ou grande.

14

ESR 2011-2012

Nous allons, par la suite, définir, dans notre fichier mes-styles.css, l'aspect global de la page mise-en-

forme.html lors de son affichage. Pour cela, nous allons fournir au navigateur les règles d'affichage du

contenu.

2. La syntaxe d'une règle CSS est de la forme suivante : sélecteur {propriété1: valeur1;

propriété2: valeur2; …}. Une règle est donc composée de deux parties : un sélecteur et une ou

plusieurs déclarations. Une déclaration comprend elle-même deux parties : une propriété et une valeur associée

à cette propriété. Ces deux parties sont séparées par le caractère deux-points (:) et la déclaration est terminée par

un point-virgule (;). Dans l'exemple suivant, le sélecteur est p et la déclaration est color: blue ; dans la

déclaration, la propriété est color et sa valeur est #e8eae8.

Tous les types d'éléments HTML (les noms des balises) peuvent être des sélecteurs.

La liste des propriétés et leurs valeurs est définie dans la spécifications du w3c, que vous pourrez trouver

à l'adresse suivante : http://www.yoyodesign.org/doc/w3c/css1/index.html#css1-properties.

1. Les sélecteurs. Un sélecteur peut contenir plusieurs noms de balises, séparés de différentes manières.

Les sélecteurs multiples contiennent une liste de noms de balises HTML séparés par des virgules. Ils

permettent d'appliquer le même bloc de règles de styles à plusieurs éléments de la page HTML. Les deux

exemples suivants sont équivalents :

Les sélecteurs contextuels contiennent une liste de noms de balises HTML séparés par un espace. Il

permettent d'appliquer des styles à une balise lorsqu'elle se trouve dans un contexte donné. Dans le sélecteur, les

balises sont listées dans leur ordre d'imbrication. L'exemple suivant définit la valeur de la propriété list-style

des balises <li> selon leur niveau dans une liste :

- si <li> est imbriquée dans un seul <ol>, alors le navigateur utilise la valeur upper-roman de la propriété list-style

- si <li> est imbriquée dans deux <ol>, alors il utilise la valeur upper-alpha

- si <li> est imbriquée dans trois <ol>, alors il utilise la valeur décimal

Le sélecteur universel, noté *, applique les styles qui lui sont associés à tous les éléments du document.

Avec la règle de l'exemple suivant, tous les textes de la page HTML seront affichés en violet et dans la police

Times New Roman.

Les sélecteurs adjacents contiennent des noms de balises séparés par le caractère +. Ils permettent de

sélectionner une balise lorsqu'elle est immédiatement suivie d'une autre. Dans l'exemple suivant, le navigateur

ajoute de l'espace aux instances <h1> de la page lorsqu'elles sont immédiatement suivies d'un titre de niveau 2,

<h2>.

15

ESR 2011-2012

Les pseudo-éléments contiennent un nom de balise suivi de : et du nom d'un pseudo-élément (:first-

line, :first-letter, :before, :after). Ils permettent de mettre en forme des parties de contenu qui

sont impossibles à baliser. Selon l'exemple suivant, la première ligne des éléments <p> doit s'afficher en italique

et dans une taille de police deux fois plus grosse :

1. Les classes. Le langage CSS permet d'appliquer plusieurs styles à un même élément en attribuant une

classe à chacun de ces éléments. Pour attribuer une classe à un élément, on utilise l'attribut class="nom".

Les classes régulières. On veut, par exemple, présenter un article contenant deux paragraphes <p>, l'un

contenant le résumé de l'article et l'autre l'article lui-même. On attribue au premier paragraphe la classe résumé,

ainsi : <p class="resume"> et au deuxième paragraphe la classe article, ainsi : <p class="article">.

On définit ensuite le style de chacun de ces paragraphes de la manière suivante (le nom de la balise et celui de sa

classe sont séparés par un .). Le résumé sera alors affiché en italiques, dans une taille de police inférieure et avec

une marge de 0.5cm. Le contenu de l'article sera centré dans la page.

Les classes génériques. On peut aussi définir une classe et l'associer à plusieurs balises différentes. Le

sélecteur de la règle CSS est alors composé d'un . suivi du nom de la classe. Par exemple, pour afficher les titres

<h1> et les paragraphes <p> en italiques, on définit une classe italique à laquelle on associe la règle permettant

d'afficher du texte en italiques. Puis, dans le code HTML, on attribue le nom de cette classe aux <h1> et aux <p>

: <p class="italique"> et <h1 class="italique"> .

Les classes ID permettent d'attribuer un identifiant unique à une balise donnée. Le sélecteur de la règle

CSS est composé d'un caractère # suivi du nom de l'identifiant. Par exemple, pour afficher le contenu d'un <p>

donné en jaune, on peut lui attribuer l'identifiant jaune (<p id="jaune"> ) puis définir la règle CSS suivante :

Les pseudo-classes sont des classes dont les noms sont prédéfinis et qui n'ont pas besoin d'être précisées

par l'attribut class. Elles permettent de contrôler le style de certaines balises selon leur état.

Voici les états les plus usités pour les éléments de type <a> :

a:link {color: orange;} : le texte du lien est affiché en orange tant qu'il n'a pas été visité

a:active {color: red;} : le texte du lien est affiché en rouge lorsque l'internaute clique dessus

a:visited {color: blue;} : le texte du lien est affiché en bleu s'il a été visité au moins une fois

a:hover {font-weight: bold;}: le texte du lien est affiché en caractères gras lorsque l'utilisateur le

survole avec la souris

La pseudo-classe :hover peut également être utilisée avec les autres balises du HTML.

Pour utiliser une pseudo-classe avec un élément auquel vous avez attribué une classe, utilisez la syntaxe

suivante : balise.classe:pseudo-classe. Par exemple, pour attribuer un style à un lien visité auquel

vous avez attribué la classe normal : a.normal:visited { … }.

1. Les propriétés des styles. Le langage CSS propose six catégories de propriétés de style : polices,

couleurs et arrière-plans, texte, boîtes et mise en pages, listes et classement des balises. On donne une valeur à

une propriété en faisant suivre son nom par le caractère : puis un espace et, enfin, une ou plusieurs valeurs

séparées par des virgules. Lorsqu'une valeur de propriété contient des espaces, il convient de l'entourer de

guillemets doubles (") afin d'expliciter le fait qu'il s'agit d'une seule des valeurs de la propriété. Par exemple, pour

16

ESR 2011-2012

définir la police d'affichage d'un titre :

Les 5 principales catégories de valeurs de propriétés sont :

les mots-clés : sont des noms de valeurs prédéfinis par le langage CSS. Par exemple, la propriété font-

size, qui permet de spécifier la taille de la police d'un texte, peut prendre les valeurs xx-large (très très

grand), x-large (très grand), large (grand), medium (moyen), small (petit), x-small (très petit) ou xx-

small (très très petit).

les longueurs : déterminent la taille d'une propriété, à l'aide d'un nombre qui peut parfois être de valeur

décimale. Pour indiquer s'il faut ajouter ou retrancher de la valeur actuelle de la propriété, on ajouter le signe +

ou - avant la valeur (sans espace entre les deux). La valeur est directement suivie (sans espace) de l'abréviation en

deux lettres de l'unité de mesure. On distingue trois types d'unités de mesure :

- les unités de mesure relative : em, qui correspond à la largeur de la lettre m en base de casse, et x-height

(abrégée ex), qui corresond à la hauteur de la letter x en bas de casse.

- les unités de mesure en pixels : px, correspondant à la taille d'un pixel.

- et les unités de mesure absolue : in pour les pouces, cm pour les centimètres, mm pour les millimètres, pt pour

les points et pc pour les picas.

les pourcentages : % comportent un signe + ou – (ajouter ou retrancher) car ils décrivent une mesure

proportionnelle à un autre contenu.

les URL sont spécifiées selon la syntaxe suivante : url(chemin) (sans espace entre le mot-clé url et

la parenthèse ouvrante). La valeur du chemin est relative non pas au chemin du fichier HTML mais au chemin de

la feuille de style CSS.

les couleurs : indiquent la couleur d'une propriété. Elles peuvent prendre pour valeur un mot-clé (blue,

yellow, orange, …), une valeur hexadécimale de la forme RGB (red, green, blue) ou une valeur décimale

RGB. Par exemple, le blanc est white (mot-clé), #000000; en hexadécimal et rgb(255, 255, 255) ou

rgb(100%, 100%, 100%) en décimal. Les valeurs rgb sont un nombre compris entre 0 et 255 ou un

pourcentage.

Sur le Web, les tailles de caractères peuvent changer d'un ordinateur à l'autre et d'un navigateur à l'autre. Par

conséquent, si vous souhaitez que l'aspect global que vous avez défini pour votre page soit respecté sur la plupart

des navigateurs, vous utiliserez des tailles de caractères relatives : les em et les % ou, encore mieux, les

descriptions prédéfinies citées précédemment ( xx-large à xx-small). Avec ces dernières, le navigateur ne

laissera pas la police d'écriture devenir illisible. Imaginez par exemple que vous choisissiez une taille de

caractères relative (à celle par défaut de votre ordinateur), petite mais lisible sur votre PC. Si l'ordinateur d'un

utilisateur a une taille de police par défaut plus petite que la vôtre, votre texte risque de devenir beaucoup trop

petit.

1. Applications.

Nous allons, à présent, définir les règles d'affichage de la page HTML dans le fichier mes-styles.css.

Attribuez à la page entière (<body>)

- une marge intérieure de 50px

- une couleur d'arrière-plan (background-color) de valeur #e8eae8;

- et une police de couleur (color) #5d665b;

Affichez la page mise-en-forme.html dans votre navigateur pour observer le résultat.

Définissez la police des textes (font-family) en Verdana, Geneva, Arial, sans-serif.

17

ESR 2011-2012

Ainsi, si la police Verdana n'est pas présente sur votre ordinateur, le navigateur utilisera Geneva, mais si cette

dernière n'est pas, elle non plus, présente sur votre ordinateur, il utilisera Arial. Si aucune des trois polices n'est

présente, il utilisera la police sans-serif qu'il connaît.

Actualisez l'affichage de votre page pour observer le résultat.

Fixez la taille de la police de caractères (font-size) à small et la hauteur des lignes (line-

height), c'est-à-dire la hauteur des caractères et de l'espace supplémentaire au-dessu, à 180% de la taille de la

police de caractères.

Observez le résultat.

Attribuez au premier <h2> une taille de police de 75% et au premier <p> une taille de police de 70%,

relativement à la taille de police spécifiée précédemment. Puis, attribuez au second <p> une indentation (text-

indent) de 3em.

Attribuez au texte du titre <h1> la couleur #ffffdd;. Puis attribuez au texte des titres <h2> la couleur

de police #966b72; et la famille de polices Georgia, "Times New Roman", Times, serif.

Observez le résultat.

Afin d'aérer votre page, insérez un <p> vide entre chaque titre <h2> et le paragraphe qui le suite.

Observez le résultat.

Insérez ensuite dans ces <p> vides un espace (au clavier) et observez le résultat.

Insérez maintenant dans ces <p> vides un espace insécable &nbsp; et observez le résultat.

Explication. Un paragraphe vide n'apparaît pas à l'écran, il doit obligatoirement avoir un contenu. Un espace ne

fonctionne que s'il se trouve entre deux caractères.

Astuce. On utilise l'espace insécable entre deux mots que l'on ne souhaite pas voir séparés lorsque la ligne se

termine (des noms propres, par exemple).

Encore quelques améliorations. Attribuez au <body> une marge supérieure (margin-top) et inférieure

(margin-bottom) de 70px, une marge gauche (margin-left) de 120px et une marge droite (margin-

right) de 50px.

Amusez-vous avec les valeurs des styles de la page que vous venez de créer en modifiant les familles et

tailles de polices, les marges, les interlignages, etc. Visionnez à chaque fois votre page dans différents navigateurs

pour observer les différences de rendu. Notez les différences observées pour chacune des balises que contient

votre page.

Exercice 8. Les cadres

1. Une page HTML peut être elle-même divisée en plusieurs pages HTML qu'on appelle cadres. Le contenu

de chaque cadre est une page (un fichier) HTML distincte. Les balises permettant de créer des cadres sont

<frameset> et <frame>. En voici un exemple et le résultat de l'affichage du fichier :

18

ESR 2011-2012

2. Explications.

La balise <frameset>

La balise <frameset> remplace la balise <body>. Elle définit un jeu de cadres et peut contenir des

cadres ou des jeux de cadres.

Les attributs attributs border, bordercolor et frameborder contrôlent les bordures des cadres ;

l'attribut framespacing contôle leur espacement.

l'attribut rows définit le nombre et la taille des différents cadres <frame> ou jeux de cadres

<frameset> que contient un <frameset>. Dans l'exemple précédent, le <frameset> principal contient un

cadre dont la hauteur occupera 25% de la hauteur de la fenêtre et un jeu de cadres dont la hauteur occupera tout le

reste (*) de la hauteur.

l'attribut cols définit le nombre et la taille des cadres et jeux de cadres que contient un <frameset>.

Ainsi, dans l'exemple précédent, le <frameset> de second niveau contient deux cadres dont l'un occupera 25%

de la largeur du jeu de cadres et l'autre occupera tout le reste de la largeur.

Les valeurs de rows et cols peuvent être des pourcentages ou des px. Au moins l'un des attributs rows

et cols doit être spécifié pour chaque <frameset>.

La balise <frame>

19

ESR 2011-2012

La balise <frame> ne peut être utilisée que dans le contexte d'un <frameset>. On l'utilise pour

indiquer l'URL du document qui va s'afficher dans chaque cadre à l'aide de l'attribut src.

L'attribut name de la balise <frame> permet de nommer un cadre de manière à l'utiliser comme cible

d'un lien hypertexte <a>. Il suffit pour cela d'ajouter l'attribut target dans la balise <a> du lien source. Voici, par

exemple, une ancre définie dans cadre2.html et qui permet d'afficher un document dans le cadre 3 :

Si l'internaute clique sur le lien, le document nouveau.html remplacera le contenu original du cadre 3.

Afin d'empêcher le redimensionnement des différents cadres par l'utilisateur, on utilise l'attribut

noresize.

Par défaut, chaque cadre est doté de barres de défilement dès que leur contenu dépasse l'espace de la

fenêtre. Afin de les supprimer, on utilise l'attribut scrolling avec pour valeur no.

Les attributs marginheight et marginwidth permettent par ailleurs d'insérer une marge entre les

bordures d'un cadre et son contenu. Une marge ne peut être inférieure à 1px et ne peut avoir pour valeur une taille

qui prend toute la place du contenu du cadre. Si les marges souhaitées ne conviennent pas au navigateur, ce

dernier affiche le cadre du mieux possible, en utilisant ses styles par défaut.

L'attribut frameborder permet de définir l'aspect de la bordure de chaque cadre. Ses valeurs possibles

sont yes ou 1 pour encadrer le cadre et no ou 0 pour supprimer la bordure.

Enfin, l'attribut bordercolor permet de modifier la couleur des bordures.

1. Applications.

Réalisez le <frameset> illustré par la copie d'écran ci-dessous.

La zone 1 s'appelle (name) cadre1, la zone 2 est cadre2 et la zone 3 est cadre3.

La zone du bas occupe 60px de la hauteur de la page et la zone du haut occupe tout le reste. Sa hauteur ne

doit pas être modifiable et son cadre ne doit pas être doté de barres de défilement.

La zone 1 ne doit pas avoir de barres de défilement, la zone 2 peut en avoir.

Les différents cadres doivent être séparés par un espace de 5px.

Aucune des 3 zones ne doit avoir de bordures.

Spécifiez les couleurs de fond des trois zones.

Enfin, définissez deux liens dans la zone 1 qui permettront d'afficher des fichiers dans la zone 2.

20

ESR 2011-2012

Exercice 9. Les formulaires

1. Un formulaire est composé de champs de saisie, de boutons cliquables, de cases à cocher qui proposent

des choix multiples, de menus déroulants et d'images cliquables. Une page HTML peut contenir un ou plusieurs

formulaires. Vous trouverez un exemple complet de formulaire mis en forme par les styles CSS à la section 11

(Mise en forme d'un formulaire) de cet exercice.

2. La balise <form>

Tous les éléments d'un formulaire doivent être placés entre les balises <form> et <form>.

L'attribut action de cette balise permet de spécifier :

- soit une adresse électronique à laquelle sera envoyé le contenu du formulaire : action="mailto:rakho@univ-

mlv.fr".

- soit l'adresse d'un script qui traitera les données du formulaire avant de les envoyer action="http://www.une-

adresse.com/cgi-bin/script".

L'attribut method peut prendre les valeurs suivantes :

- POST si vous souhaitez vous faire envoyer le contenu du formulaire par adresse électronique

(action="mailto:"). Dans ce cas, les applications qui sont censées traiter les données du formulaire n'y

accèderont que lorsqu'elles commenceront à les exécuter.

- GET si vous souhaitez sauvegarder les données du formulaire sur le serveur WWW grâce au protocole HTTP.

Les applications censées traiter les données devront y accéder sur le serveur.

ATTENTION : Si la sécurité est un problème, vous choisirez dont la méthode POST. En effet, avec GET, les

données pourront facilement être interceptées au passage ou extraites du fichier de traces du serveur.

L'attribut enctype permet de spécifier le format d'encodage des données envoyées lors de la soumission

du formulaire. Les formats suivants seront utilisés :

- text/plain si vous avez opté pour action="mailto:"

Dans cet encodage, chaque élément du formulaire est placé sur une ligne distincte, le nom du champ et sa valeur

étant séparés par le signe égal (=). Par exemple :

nom=Mathieu

prénom=Georges

- multiplart/form-data si votre formulaire contient des fichiers à envoyer (<input type="file">)

ATTENTION : À l'exception des boutons de sélection/réinitialisation, tous les éléments de formulaire décrits

dans la suite possèdent un attribut name qui est obligatoire car le navigateur s'en sert pour transmettre les choix

effectués pour chaque élément.

1. La balise <input>

La balise <input> permet d'insérer dans un formulaire divers types de champs de saisie, des listes à choix

multiples, des images cliquables et des boutons de soumission. De préférence, la valeur de cet attribut ne doit

21

ESR 2011-2012

contenir ni des lettres accentuées, ni des espaces, ni des ponctuations, et la première lettre ne doit pas être un

chiffre.

Pour sélectionner le type de contrôle à inclure, on utilise l'attribut type de <input>.

Pour insérer des champs de saisie

<input type="text" size="60" maxlength="80" value="entrez votre adresse ici"

name="adresse">

Un champ de texte s'affiche dans le navigateur comme une boîte vide qui n'accepte qu'une ligne de saisie. Les

attributs size et maxlength permettent de spécifier, respectivement, la longueur du champ et le nombre de

caractères que l'utilisateur est autorisé à y entrer. Le champ de saisie est vide tant que l'internaute ne l'a pas rempli

mais on peut y faire figurer une valeur par défaut (par exemple, une indication à l'attention de l'internaute

concernant le remplissage de ce champ). On utilise pour cela l'attribut value. L'attribut name, enfin, est

obligatoire.

<input type="password" name="mot_de_passe">,

Le type password est l'équivalent d'un champ de saisie texte normal sauf que les caractères entrés par

l'utilisateur sont masqués. Le type password possède les mêmes attributs size, maxlength et value que le

type text. L'attribut name est obligatoire.

<input type="file" name="fichier">

Le type file permet à l'internaute de sélectionner un fichier stocké sur sa machine. Le navigateur affiche

automatiquement un bouton Parcourir sur la droite du champ de saisie. Le type file possède les mêmes

attributs size, maxlength et value que le type text. L'attribut name est obligatoire.

Pour insérer des cases à cocher

<input type="checkbox" name="animal" checked="checked" value="choix1">

Le type checkbox sert à insérer une ou plusieurs cases à cocher. L'attribut checked est optionnel, il permet de

cocher une case par défaut qui peut être décochée par l'utilisateur si elle ne correspond pas à son choix. L'attribut

value ne s'affiche pas dans le navigateur, il contient la valeur soumise au serveur si l'internaute a coché la case.

<input type="radio" name="prefere" value="valeur">

Le type radio est similaire au type checkbox, sauf qu'on ne peut sélectionner qu'une seule case par groupe.

Tous les boutons radio qui possèdent le même attribut name appartiennent au même groupe.

Pour insérer des boutons d'action

<input type="submit" name="validation" value="Valider">

Le type submit permet d'envoyer au serveur les paramètres du formulaire (les valeurs des champs de saisie, les

valeurs des attributs value des listes de choix, etc.). L'attribut value permet de spécifier la valeur affichée du

bouton (par défaut, c'est Submit qui est affiché). L'attribut name n'est pas obligatoire, mais il permet de

différencier les différents boutons de soumission.

<input type="reset" value="Annuler">

Le type reset permet de réinitialiser tous les éléments d'un formulaire (suppression des valeurs et/ou remise des

valeurs par défaut). L'attribut value permet de spécifier le texte affiché de ce bouton (par défaut, c'est Reset

qui est affiché).

<input type="image" src="images/plan.gif">

Le type image permet de créer un bouton avec une image. Lorsque cette image est cliquée, le navigateur soumet

le formulaire. Ce type de bouton exige un attribut src dont la valeur est l'adresse du fichier image à utiliser.

L'attribut alt, facultatif, permet de spécifier un texte alternatif pour les navigateurs en mode texte ou en mode

vocal.

22

ESR 2011-2012

1. La balise <button>

Pour les trois types suivants, l'intitulé du bouton est défini par le contenu de la balise (par exemple, Pressez-moi !).

On peut y mettre un texte, comme dans l'exemple, ou une image, à l'aide de la balise : <button

type="submit"> <img src="" alt=""> </button>.

<button type="submit">Pressez-moi</button>

Pour créer un bouton qui, lorsqu'il est cliqué, indique au navigateur d'envoyer le contenu du formulaire au serveur

de traitement ou à une adresse électronique (option mailto dans <form>).

<button type="reset">Pressez-moi</button>

Pour créer un bouton de réinitialisation du formulaire.

<button type="button">Pressez-moi</button>

Pour créer un bouton classique.

1. La balise <textarea>

<textarea name="commentaires" cols="40" rows="40">

Mettez vos commentaires ici

</textarea>

Cette balise permet d'insérer dans un formulaire une zone de saisie de texte sur plusieurs lignes. L'internaute peut

y taper un nombre quasi illimité de caractères. L'attribut name est obligatoire. Vous pouvez insérer des

instructions de remplissage dans la zone de saisie (par exemple, Mettez vos commentaires ici). L'internaute le

supprimera au moment de remplir la zone de saisie. Les attributs rows et cols permettent de spécifier les

dimensions de la zone de saisie. Leur valeur est un nombre entier de caractères. Si le texte dépasse les dimensions,

le navigateur affiche des barres de défilement sur la zone de saisie.

2. Créer des menus déroulants : la balise <select>

Pour insérer un menu déroulant dans un formulaire, on utilise la balise <select>. L'attribut multiple

(multiple="multiple") de <select> permet d'autoriser l'internaute à choisir plus d'une option à la fois.

L'attribut size de <select> détermine le nombre d'options visibles. L'internaute peut faire défiler la liste pour

voir les autres options.

La balise <select> peut contenir autant de balises <option> que de choix proposés à l'utilisateur. Ces

différentes <option> peuvent être organisées en groupes avec la balise <optgroup> (par exemple, on peut

regrouper les départements de France par région). La balise <optgroup> ne peut être utilisée que dans une

balise <select> et ne peut contenir que des balises <option>.

3. La balise <option>

Le contenu de la balise <option> ne peut être que du texte. Son attribut value contient la valeur de chaque

option choisie par l'internaute que le navigateur envoie au serveur. Si l'attribut value n'est pas spécifié, c'est le

contenu de la balise qui est envoyé. Par conséquent, les deux exemples suivants sont équivalents :

<option>Chien</option> et <option value="Chien">Chien</option>.

Pour pré-sélectionner une ou plusieurs <option> par défaut, on y définit l'attribut selected="selected".

L'internaute pourra ensuite les désélectionner si elles ne correspondent pas à son choix.

23

ESR 2011-2012

4. La balise <optgroup>

Pour attribuer un titre à chaque groupe, on utilise l'attribut label de <optgroup> (dans l'exemple des

départements de France, les titres des groupes seraient les noms des régions). De préférence, pour que le menu

s'affiche correctement dans tous les navigateurs, les titres des sous-menus doivent être courts. La balise

<optgroup> ne peut être imbriquée, ce qui fixe à un niveau de profondeur la limite des sous-menus.

5. Intituler les éléments d'un formulaire : la balise <label>

Pour associer une étiquette à un élément de formulaire, on utilise la balise <label>. L'association entre le

l'élément de formulaire et son étiquette se fait de la manière suivante :

<label>Nom : <input type="text" name="nom" /></label>.

Une balise <label> ne peut être associée qu'un et un seul élément de formulaire ; mais plusieurs balises

<label> peuvent être associées à un même élément.

6. Regrouper des éléments de formulaire : les balises <fieldset> et <legend>

On peut organiser les éléments d'un formulaire en groupes et attribuer un intitulé à chaque groupe. Pour créer un

groupe, on insère tous les éléments concernés dans une balise <fieldset>. Puis, on insère dans ce

<fieldset> un élément <legend> dont le contenu est l'intitulé du groupe. Le navigateur peut, parfois,

afficher les groupes d'une manière particulière, comme les encadrer d'une bordure. La balise <legend> ne peut

être utilisée que dans une balise <fieldset>. L'attribut align de <legend> permet d'indiquer au navigateur

l'emplacement de la légende par rapport au groupe de champs. Ses valeurs possibles sont top, bottom, left et

right.

7. Mise en page d'un formulaire

Avec un tableau. La mise en page d'un formulaire peut être effectuée à l'aide d'un tableau, avec une

colonne pour les intitulés des éléments et une colonne pour les éléments eux-mêmes. En voici un exemple, et le

code HTML correspondant.

Le code HTML correspondant :

24

ESR 2011-2012

Par les styles CSS. La mise en page d'un formulaire peut aussi être effectuée directement grâce aux styles

CSS. Voici un exemple complet de menu.

25

ESR 2011-2012

Le code HTML correspondant :

26

ESR 2011-2012

Le code CSS correspondant :

27

ESR 2011-2012

1. Application

Créez, à l'aide des styles CSS ou avec un tableau, le formulaire dont la copie d'écran est la suivante :

28

ESR 2011-2012

10. Les images

1. Pour insérer une image dans une page Web, on utilise la balise <img src="nom">, où nom est le

chemin complet du fichier correspondant à l'image.

2. Les attributs de la balise <img> sont les suivants :

align, pour l'alignement vertical et horizontal. Ses valeurs possibles sont top, bottom, left, right

et center.

alt, pour spécifier un texte alternatif, au cas où l'image n'était pas accessible ou si le navigateur ne peut

l'afficher.

title, pour afficher une info-bulle décrivant l'image lorsque l'utilisateur la survole avecla souris

1. Les propriétés CSS associée à la balise <img> sont :

width, pour spécifier la hauteur de l'image en pixels

height, pour spécifier la largeur de l'image en pixels

border, pour spécifier les caractéristiques de la bordure (largeur et style de trait, couleur)

margin, pour spécifier l'espace vertical et horizontal séparant l'image des éléments qui l'entourent.

1. Pour utiliser une image comme lien hypermédia (pour qu'elle soit « cliquable »), on insére la balise

<img> dans une balise <a>. En voici un exemple :

11. Comment donner vie aux images

1. Comment zoomer une image lorsqu'elle est pointée par la souris.

Une version miniature de l'image est insérée dans la page HTML à l'aide de la balise <img>. Les

propriétés CSS width (taille en hauteur) et height (taille en largeur) de l'image sont fixées à 50% de la taille

d'origine de l'image (250px). La taille de l'image doit donc être connue à l'avance.

Puis, cette balise <img> est insérée dans une balise <a>. Cela nous permet d'agir sur son mode

d'affichage, par exemple, avec des pseudo-classes (:hover, :active, …).

Enfin, le pseudo-style a:hover img est défini dans la partie CSS afin d'ajuster (agrandir) les propriétés

29

ESR 2011-2012

width et height de l'image.

1. Une image pop-up

On peut aussi vouloir afficher une version plus grande d'une image sans pour autant masquer la version réduite.

L'exemple suivant montre comment réaliser cet effet :

Deux éléments <img> sont insérés dans un même lien hypermédia <a>. La première (identificateur

id="petit") est une version réduite de la seconde (identificateur id=vgrand").

Le style img#grand définit le style par défaut de l'image agrandie : sa position, sa taille et sa visibilité.

Par défaut, l'image est cachée (visibility: hidden;). Elle n'apparaît que lorsque l'utilisateur survole la

petite image avec sa souris.

Le style a:hover img#grand définit le style de l'image d'identificateur grand lorsque la souris

survole l'image réduite : la grande image devient visible (visibility:visible;). Ce style provoque

l'affichage de la grande image en avant-plan du document.

Quand le contenu de la balise <a> est survolé par l'utilisateur avec la souris, son élément enfant <img> dont

l'identificateur id est grand est devient visible.

30

ESR 2011-2012

1. Les images réactives

Les images réactives comportent une ou plusieurs zones cliquables. Lorsque l'utilisateur clique sur l'une d'entre

elles, un traitement particulier est effectué ou une page web annexe est ouverte. L'exemple suivant montre

comment réaliser des zones réactives :

Le sélecteur d'identificateur imagemap définit les caractéristiques du <div> : les dimensions grâce aux

balises width et height, et l'arrière plan avec background.

Le sélecteur de classe .map définit les caractéristiques des zones cliquables: affichage flottant (float:

left;), taille (width et height), marges (margin-top et margin-left) et bordure (border).

31

ESR 2011-2012