TP HTML5
TP HTML5
Mise en situation
La société SFCV (Spécialiste Français n°1 des Caves à Vin) désire mettre en place un site web.
Moyens disponibles
Un éditeur de texte pour la réalisation de la page HTML
Un navigateur (Firefox ou Chrome par exemple) pour visualiser des pages HTML réalisées
Travail préliminaire
Créer un répertoire cave pour le stockage des fichiers du site. Dans le répertoire cave, créer un sous-
répertoire images dans lequel on stockera toutes les images nécessaires pour le site. Les pages HTML
porteront l'extension .html.
Contraintes
A . Pour la réalisation des pages HTML de ce site, on utilisera HTML 5 en spécifiant la déclaration de
type de document suivante :
<!DOCTYPE html>
B . Pour la réalisation des pages HTML de ce site, on utilisera l'encodage de caractères UTF-8 :
<meta charset="utf-8">
Ou :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-
8">
Remarques : Il est important de comprendre qu'il faut obtenir une cohérence entre l'encodage utilisé pour créer le
document (l'éditeur de texte) et celui pour l'interpréter (le navigateur) :
• Les outils d'édition (par exemple, un éditeur de texte) peuvent coder des documents HTML avec l'encodage
de caractères de leur choix. Ces outils peuvent utiliser tout encodage commode lequel couvre la plupart des
caractères contenus dans le document, pourvu que l'encodage soit correctement étiqueté. Les caractères
occasionnels, qui ne sont pas contenus dans cet encodage, peuvent tout de même être représentés par des
références de caractères (numérique ou entité). Le choix de l'encodage se fait généralement au moment de
l'enregistrement du fichier.
• Le paramètre « charset » identifie un encodage de caractères, qui représente une méthode pour convertir
une séquence d'octets en une séquence de caractères. Cette conversion s'intègre naturellement au système
de l'activité du Web : les serveurs envoient des documents HTML aux agents utilisateurs sous la forme d'un
flux d'octets, les agents utilisateurs les interprètent comme séquence de caractères.
Remarques : dans tous les cas, ne pas utiliser d'espace, de majuscules et de caractères spéciaux (pas
d'accents notamment) dans les noms de fichiers.
Structure
Le premier travail est de définir une structure à son document (le fond) et de ne pas se focaliser sur son
apparence dans le navigateur (la forme). La mise en forme du document est une tâche qui sera réalisée
plus tard (en séquence 4) notamment grâce à l'utilisation des feuilles de style et en respectant une charte
graphique.
Dans cette première séquence, ce travail est important car les choix faits seront réutilisés dans les autres
pages. En quelque sorte, cette première page va servir de squelette pour les autres. On va définir la
structure suivante pour les documents :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title><!--TODO--></title>
</head>
<body>
<header><!--TODO--></header>
<hr>
<nav><!--TODO--></nav>
<article><!--TODO--></article>
<hr>
<footer><!--TODO--></footer>
</body>
</html>
Remarque : Les balises <!--TODO--> sont des commentaires en HTML. Ils indiquent ici les parties à
réaliser (TODO) dans les questions du travail demandé.
Travail demandé
Documentation : [Link]
Voici un aperçu des balises de base utilisée dans cette séquence :
2 . Le bloc article : en-têtes (balises <hx>), paragraphes (balises <p> et <br />) et listes (balises <ul>,
<ol> et <li>)
On tiendra compte des indications suivantes :
• l'en-tête « Spécialiste français n°1 des caves à vin » est de type <h2>
• on utilisera des paragraphes (<p>) dont un utilise une liste numérotée (<ol>).
→ Modifier le document [Link] (dans le cadre bloc <!--TODO3-->) qui reproduit la figure ci-
dessous :
Attention : vous avez tendance à « abuser » des balises <br> pour respecter la mise en page demandée.
Ne faites pas ça ! Et conservez seulement les sauts de lignes nécessaires dans le texte d'un paragraphe.
On vous rappelle que la présentation du document à l'écran sera réalisée à la fin par l'application d'un
style (CSS). Pour l'instant, consacrez vous à la structure de vos pages plus qu'à leur visualisation.
→ Modifier le document [Link] (dans le cadre bloc <!--TODO3--> et pied <!--TODO4-->) qui
reproduit la figure ci-dessous :
→ Modifier le document [Link] (dans le cadre entete <!--TODO1-->) qui reproduit la figure ci-
dessous :
5 . Le menu (nav)
On tiendra compte des indications suivantes pour créer le menu de gauche :
• on utilisera une liste non numérotée de type <ul> donc chaque élément de liste <li> contiendra un
élément (lien) du menu
• le lien " Accueil " pointera sur un document [Link]
• le lien " Produits " pointera sur un document [Link]
• le lien " Services " pointera sur un document [Link]
• le lien " Contact " pointera sur un document [Link]
→ Modifier le document [Link] (dans le cadre menu <!--TODO2-->) qui reproduit la figure ci-
dessous :
6 . Validation
→ Vous devez valider la page [Link] en utilisant le service en ligne du W3C :
[Link] Puis, tester les liens externes.
On doit obtenir :
Structure
Évidemment, on retrouve la même structure, seul le bloc central droit change de contenu :
Travail demandé
→ Copier/Coller la structure du fichier [Link] réalisé à la séquence 1. Seul le cadre article sera
personnalisé pour cette page.
Remarque : la page [Link] n'utilisera pas la structure header, nav et footer. Le tableau sera juste
placé dans le corps de la page (balise body).
b . Pour la mise en page des produits, on tiendra compte des indications suivantes :
• les différentes catégories de caves seront de type <h2>
• on utilisera le fusionnement de cellules (colspan et rowspan) et on intégrera une image dans le
tableau
Attention : n'utilisez pas les balises <br> pour respecter la mise en page demandée. On vous rappelle que
la présentation du document à l'écran sera réalisée à la fin par l'application d'un style (CSS). Pour
l'instant, consacrez vous à la structure de vos pages plus qu'à leur visualisation.
<a name="caves_v"></a>
<h2>Caves de vieillissement</h2>
<!-- … -->
4 . Validation et test
→ Vous devez valider la page [Link] en utilisant le service en ligne du W3C :
[Link] Puis, tester les liens internes.
Objectifs
Cette séquence a pour objectif de réaliser la page HTML qui permet de demander un catalogue gratuit à
la société SFCV. Elle met en oeuvre l'utilisation des formulaires.
Structure
Une nouvelle fois, on retrouve la même structure, seul le bloc central droit change de contenu :
Contraintes
A . Les données du formulaire :
Les données du formulaire seront envoyées à un destinataire précisé par l'attribut action de la balise
<form>. On peut indiquer, dans l'attribut action, soit une adresse email (action="[Link] soit
l'url d'une page (le plus souvent vers un CGI ou un script PHP).
Toutes les données des éléments du formulaire doivent être nommées (attributs name et id) afin d'être
identifiables par le programme de traitement destinataire (notion de variables : le nom donné dans le
formulaire correspondra au nom de la variable dans le programme serveur) ou même par le destinataire
du mail. On n'accepetera pas les accents et on n'utilisera que les minuscules pour les attributs name et id.
D'autre part, le concepteur du formulaire doit souvent fixer les valeurs par défaut associées aux éléments
(attribut value) :
le formulaire : name="demande", id="demande"
la civilité : name="civilite" – value="1" pour Monsieur, etc ...
le nom : name="nom" – value="" (saisie de l'utilisateur)
le prénom : name="prenom" – value="" (saisie de l'utilisateur)
l'adresse : name="adresse" (saisie de l'utilisateur)
la ville : name="ville" – value="" (saisie de l'utilisateur)
le code postal : name="codepostal" – value="" (saisie de l'utilisateur)
choix de recevoir la newslettre : name="newslettre" – value="oui"
son adresse email : name="email" – value="" (saisie de l'utilisateur)
l'envoi du formulaire : name="action" – value="Envoyer"
Remarque : l'utilisateur a la possibilité de donner son adresse email s'il veut recevoir la lettre
d'information (newsletter)
B . L'envoi du formulaire :
En utilisant l'attribut method, on distingue deux méthodes (GET ou POST) d'envoi des données du
formulaire :
• Avec method=POST, les données envoyées au serveur se trouvent dans le corps de la requête
HTTP.
• Avec method=GET, les données envoyées au serveur se trouvent dans l'URL précisée dans
l'attribut action (cela donnera par exemple url?month=fevrier&day=24).
Il faut aussi indiquer la manière avec laquelle les données du formulaire seront encodées en renseignant
l'attribut enctype (text/plain, multipart/form-data, ...).
Il y a en général deux destinations d'envoi possibles (la plus utilisée étant celle vers un programme) :
Travail demandé
1 . Titre (balise <title>)
→ Créer la page d'accueil [Link] demandée en précisant le titre du document :
SFCV : Contact
3 . Validation et test
→ Vous devez valider la page [Link] en utilisant le service en ligne du W3C :
[Link]
→ Tester unitairement l'envoi du formulaire pour chacune des balises <form> suivantes :
Contraintes
A . Fichier externe unique
Les feuilles de styles CSS améliorent la qualité des mises en page sur le web (positionnement des
éléments au pixel près), diminuent le temps d’affichage et factorisent le code, le rendant ainsi plus lisible
et plus facile à maintenir. Le simple changement d’une feuille de styles permet de modifier la
présentation du document. Dans le fichier CSS, il faut aussi faire la séparation entre structure et
décoration :
➢ la structure contiendra le positionnement des éléments dans la (ou les) page(s) ET
➢ la décoration s'occupera notamment de la couleur et du graphisme
Remarque : en pratique cela pourrait donner deux fichiers CSS : un pour la structure, et un autre pour la
présentation. Dans notre cas, on utilisera qu'un SEUL fichier dans lequel on placera de grandes barres de
commentaires pour séparer les différentes parties (/* … */). Dans tous les cas, il est conseillé faire la
séparation.
On utilisera donc un fichier externe unique [Link] pour redéfinir le style des balises utilisées dans
les pages HTML du site. Ce fichier CSS ne doit pas contenir de code HTML. Chaque page du site devra
donc indiquer qu'elle utilise ce fichier CSS de la manière suivante :
<head>
<title>Le titre de la page</title>
<link rel="stylesheet" href="[Link]" type="text/css">
</head>
B . La charte graphique
Les séquences précédentes nous ont amenés à définir une structure aux documents créés. Il reste à
définir, grâce aux feuilles de style, l'interprétation visuel faite par le navigateur.
On découpera ce travail en deux parties :
• la structure visuel des éléments : dimensions, positionnement (flottant, absolu) et leurs relations
• la décoration visuelle des éléments : police, couleur, ...
L'objectif est d'obtenir une cohérence (graphique) pour l'ensemble des pages et de faciliter les tâches de
maintenance (modifications).
Screenshot
La page d'accueil [Link] (un exemple de ce que l'on peut obtenir grâce à la structure définie avant) :
Travail demandé
2 . Mettre au point sa feuille de style en utilisant la console d'erreurs des outils de développement de
votre navigateur (Firefox ou Chrome)
4 . Intégrer, dans toutes les pages du site, la feuille de style CSS créée.
5 . Pour terminer, réaliser la page [Link]. Le contenu est diponible dans le fichier [Link].
Utiliser des ancres pour naviguer facilement dans cette page.
Screenshot
La page d'accueil [Link] :
Travail demandé
3 . Validation et test
→ Vous devez valider la page [Link] en utilisant le service en ligne du W3C :
[Link]
Il est conseillé de lire les annexes sur les formats d'image et vidéo.
Ces cadres peuvent être chargés de manière totalement indépendante : un cadre sera modifié et l'autre
maintenu. Ils peuvent interargir entre eux : un choix dans un premier cadre pourra provoquer le
chargement d'une nouvelle page dans un deuxième.
Les cadres permettent donc de créer rapidement une mise en page simple pour un site. L'utilisation
classique consiste ainsi à présenter sur un cadre à gauche une liste de liens vers les différentes parties
d'un site, qui s'affichent dans la fenêtre principale au centre. Cela facilite de plus la maintenance des
différentes pages.
Cependant, les moteurs de recherche indexent les pages à l'intérieur des cadres autant que les autres. Il y
a donc un risque pour qu'une page indexée de la sorte soit "orpheline", et ne donne pas accès au reste du
site. Plus généralement, une telle page ne se suffit souvent pas à elle-même (il y manque parfois les outils
de navigation à l'intérieur du site). Enfin, la présence de cadres s'accompagne souvent de celles de barres
de défilement horizontales.
Il faut savoir qu'au début des frames sur le Web, leur utilisation posait toutes sortes de problèmes. Par
exemple, il n'existait aucun moyen de masquer les bordures séparant les différentes zones dans la fenêtre
du navigateur, ce qui fait que l'écran était rempli de traits gris et de barres de défilement. Dans la mesure
où la place est limitée sur une page Web, on comprend que l'utilisateur ne se réjouisse pas de voir la
fenêtre du navigateur ainsi remplie. C'est l'une des raisons pour lesquelles les frames ont (eu) mauvaise
réputation. Aujourd'hui pourtant, il est possible de rendre invisibles les bordures entre frames.
Remarque: les responsables de sites ont constaté que la plupart des internautes choisissent la version sans
frame lorsqu'elle est proposée.
Avantages
Pour le webmaster: gestion et maintenance des pages plus simple et plus rapide
Pour l'internaute: sommaire toujours présent à l'écran, permettant de naviguer plus rapidement d'une page
à l'autre sans revenir en arrière.
Inconvénients
Pour le webmaster:
Pages orphelines (chaque page HTML composant un frameset peut être appelée directement
par son adresse URL, indépendamment de son environnement frameset).
Se retrouver avec des frames dans les frames (un site à base de frames peut appeler un autre
site à base de frames etc ...)
Pour l'internaute:
Sauvegarde ou impression d'une page problématique
Non accessibilité à l'information pour les aveugles et mal-voyants.
([Link]
Espace réduit pour le contenu
Complexité de la navigation: les frames peuvent constituer un véritable labyrinthe, notamment
quand le webmaster a concocté un frameset encapsulant des sites externes, ou des sommaires
en cascades.
Exemple
<HTML>
<HEAD>
<TITLE>Un document avec deux cadres verticaux</TITLE>
</HEAD>
<FRAMESET cols="25%,75%" frameborder="0">
<FRAME src="[Link]" name="menu">
<FRAME src="[Link]" name="principal">
</FRAMESET>
</HTML>
Les tableaux
Originellement prévus dans le but de mettre en forme des données, les tableaux ont rapidement été
détournés par les développeurs web pour combler un vide qui faisait cruellement défaut au HTML à
l'époque : la mise en page.
En effet, dans ce qu'il convient d'appeller la préhistoire du web, point de CSS ni de séparation entre le
contenu et la présentation. Les développeurs pensaient avoir trouvé la parade avec les tableaux, et ont
donc commencé à utiliser massivement ces derniers pour du positionnement et autres mises en page
complexes.
Les tableaux sont franchement inadaptés aux exigences d'aujourdhui, à cause de leurs limites notamment
en termes d'accessiblité, de facilité d'utilisation et de maintenance.
Remarque : il est important de noter que les tableaux remplissent parfaitement leur rôle quand il s'agit de
structurer des données.
Inconvénients
Lenteur d'affichage : un tableau est un élément complexe à traiter, notamment pour définir les
tailles de chaque cellule et ligne, et nécessite d'analyser toutes les cellules ... surtout si les
tableaux sont imbriqués
Page illisible pour les navigateurs non-graphique (ne pas oublier l'existence de navigateurs
spécialisés pour les handicapés, avec plage braille ou synthétiseur vocal, qui ne peuvent pas
restituer les informations graphiques)
Impression problématique : changer complètement le design d'une page pour permettre une
meilleure impression est impossible ce qui amène souvent à faire une page separée pour
l'impression, et avec les coûts associés à sa création et à sa maintenance, et cela se transforme
en un gâchis d'énergie et de ressources considérables.
Avantages
Les feuilles de styles CSS améliorent la qualité des mises en page sur le web (positionnement des
éléments au pixel près), diminuent le temps d’affichage et factorisent le code, le rendant ainsi plus lisible
et plus facile à maintenir. Le simple changement d’une feuille de styles permet de modifier la
présentation du document. Une seule feuille de style permet d'appliquer la présentation d'un site web.
Syntaxe
Cet exemple basique devrait vous permettre de comprendre l'utilisation des feuilles de style.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"[Link]
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Exemples</title>
<link rel="stylesheet" href="[Link]" type="text/css">
</head>
<body>
<h3>Application d'un style global aux balises body, h1, h2 et p :</h3>
<div><code>body { color: #4B0082; }<br>
h1 { font-family: Arial; font-size: 22px; color: blue; }<br>
h2 { font-family: Arial; font-size: 16px; color: green; }<br>
p { font-family: Arial; font-size: 12px; color: red; }<br>
</code></div>
<h1><h1>Je suis un titre de niveau 1</h1></h1>
<h2><h2>Je suis un titre de niveau 2</h2></h2>
<p><p>Je suis un paragraphe</p></p>
<h1><h1>Je suis un autre titre de niveau 1</h1></h1>
<hr>
<h3>Application d'un style individuel (id) aux balises h1, h2 et p :</h3>
<div><code>
#id_h1 { font-family: Courier; color: black; } /* on ne touche pas à la taille */<br>
#id_h2 { font-family: Courier; color: black; }<br>
#id_p { font-family: Courier; color: black; }<br>
</code></div>
<h1 id="id_h1"><h1 id="id_h1">Je suis un titre de niveau 1 (avec un
id)</h1></h1>
<h2 id="id_h2"><h2 id="id_h2">Je suis un titre de niveau 2 (avec un
id)</h2></h2>
<p id="id_p"><p id="id_p">Je suis un paragraphe (avec un id)</p></p>
<h1><h1>Je suis un autre titre de niveau 1 (sans id)</h1></h1>
<div><em>Remarque : h1, h2 et p ont hérité de la taille (font-size) définie globalement pour ces
balises.<br>Attention, l'id doit être défini et utilisé qu'une fois, car un id(entifiant) est toujours
unique.</em></div>
<hr>
<h3>Application d'une classe de style (class) commune aux balises h1, h2 et p :</h3>
<div><code>
.my_class { font-family: Tahoma; font-size: 16px; } /* on ne touche pas à la couleur */<br>
</code></div>
<h1 class="my_class"><h1 class="my_class">Je suis un titre de niveau 1 (avec
my_class)</h1></h1>
<h2 class="my_class"><h2 class="my_class">Je suis un titre de niveau 2 (avec
my_class)</h2></h2>
<p class="my_class"><p class="my_class">Je suis un paragraphe (avec
my_class)</p></p>
<h1><h1>Je suis un autre titre de niveau 1 (sans my_class)</h1></h1>
<div><em>Remarque : h1, h2 et p ont hérité de leur couleur (color) définie globalement pour ces
balises.</em></div>
<hr>
</body>
</html>
Ce qui donne :
Exemple
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Exemple - CSS</title>
<link rel="stylesheet" href="./[Link]" type="text/css">
</head>
<body>
<header>
L'en-tête ...
</header>
<div id="left">
Le côté gauche ...
</div>
<div id="right">
Le côté droit ...
</div>
<div id="middle">
Le milieu ...
</div>
<footer>
Le pied de page ...
</footer>
</body>
</html>
/* Structure */
body
{
margin: 10px;
padding: 0px;
}
header
{
margin: 0px;
padding: 1%;
clear: both;
height: 5%;
}
div#left
{
margin: 0px;
padding: 1%;
float: left;
width: 20%;
height: auto;
}
div#right
{
margin: 0px;
padding: 1%;
float: right;
height: 80%;
width: 10%;
}
div#middle
{
float: left;
width: 60%;
margin: 1%;
padding: 1%;
}
footer
{
margin: 0px;
padding: 1%;
height: auto;
clear: both;
}
/* Décoration */
header
{
border: 2px dashed #FF8822;
color: #FF8822;
}
div#left
{
border: 2px dashed rgb(51, 204, 255);
color: rgb(51, 204, 255);
}
div#right
{
border: 2px dashed #2288FF;
color: #2288FF;
}
div#middle
{
border: 2px dashed blue;
color: blue;
}
footer
{
border: 2px dashed red;
color: red;
}
On obtient :
Les deux attributs importants sont (au moins un attribut data et un attribut type doivent être définis) :
• data : l'adresse de la ressource, une URL valide..
• type : le type MIME de la ressource définie par data.
L'élément EMBED
L'élément HTML <embed> représente aussi un point d'intégration pour une application externe ou pour
du contenu interactif (autrement dit, pour un plugin).
Remarque : Il faut garder à l'esprit que la plupart des navigateurs ont dépréciés voire retirer la prise en
charge des plugins. Aussi, mieux vaut ne pas utiliser sur <embed> si on souhaite qu'un site ou une
application soit fonctionnelle sur un navigateur moyen.
L'élément AUDIO
L'élément HTML <audio> est utilisé afin d'intégrer un contenu sonore dans un document. Il peut
contenir une ou plusieurs sources audio représentées avec l'attribut src ou l'élément <source>. S'il y a
plusieurs sources, le navigateur choisira celle qui convient le mieux.
<figure>
<figcaption>Écoutez Kaamelott</figcaption>
<audio controls src="datas/mortel.mp3" width="200" height="20">
Votre navigateur ne supporte pas la balise <code>audio</code>.
</audio>
</figure>
L'élément VIDEO
L'élément HTML <video> intègre un contenu vidéo dans un document.
Remarque : Les navigateurs ne prennent pas en charge l'ensemble des formats vidéo et il est possible de
fournir plusieurs sources grâce à des éléments <source>, le navigateur utilisera la première ressource
dont il connaît le format.
Les attributs importants sont :
• autoplay : un booléen qui indique que la vidéo doit automatiquement être lancée dès qu'elle peut
être jouée sans être arrêtée par le chargement des données.
• controls : si cet attribut est présent, le navigateur affichera des contrôles pour permettre à
l'utilisateur de contrôler la lecture de la vidéo, le volume et la mise sur pause.
• loop : un booléen, qui, lorsqu'il est présent, indique que la vidéo doit être jouée en boucle.
Lien : [Link]
• HTML4 : [Link]
• HTML5 : [Link]
WebM
WebM est un format multimédia ouvert qui a été lancé par Google (après rachat de la société On2
Technologies). L'utilisation est en libre et gratuite.
Lien : [Link]
Lire : [Link]
H.264/MP4
H.264 est supporté par le Moving Picture Experts Group. C'est un format non-libre (soumis à brevets) et
non-gratuit. Toutefois, il est gratuit dans certaines utilisations (la diffusion gratuite de vidéos par des sites
Web par exemple).
Les fichiers MP4 utilisant le codec H.264 sont lisibles nativement sur les navigateurs Apple (Safari,
Safari Mobile), Opera, Google Chrome et Firefox.
Remarque : Il est recommandé de placer ce format en premier dans une liste car il est supporté par les
iPhone, iPad et autres iPod.
Lien : [Link]
OGG/Theora
Theora est un format de compression vidéo open-source, sans brevets. Ceci donne le droit à tous d'utiliser
Theora (à des fins non commerciales tout comme à des fins commerciales) sans devoir payer de
redevance au consortium MPEG.
OGG/Theora est lisible sur Firefox, Opera, et Google Chrome.
Lien : [Link]
WebM/VP8
WebM est un format multimédia ouvert qui a été lancé par Google (après rachat de la société On2
Technologies). L'utilisation est en libre et gratuite.
Lien : [Link]
Dans un fichier AVI, chaque composante audio ou vidéo peut être compressée par n'importe quel codec.
Le format DivX est souvent utilisé comme codec vidéo, et le format mp3 comme codec audio, mais
d'autres codecs peuvent également être utilisés, par exemple XviD ou MPEG pour la vidéo, et mp2, WAV
etc. pour l'audio.
MOV (QuickTime)
Un fichier QuickTime contient une ou plusieurs pistes, chacune comporte un type de données particuliers
: audio, vidéo, effet ou texte (pour des sous-titres par exemple). Ces fichiers ont le plus souvent
l'extension .mov.
QuickTime est un framework multimédia développé par Apple. QuickTime est utilisé par de nombreuses
personnes pour la lecture en streaming, ce qui en fait un des logiciels majeurs pour cet usage.