Rappels Web et bases HTML 5 [balises fondamentales - listes - tableaux - formulaires]
Objectifs
Dans cette première partie, après avoir revu quelques rappels sur le Web (ou world wide web ou "la toile"), vous allez construire des pages web HTML 5 autour des balises fondamentales, des listes, des tableaux et des formulaires.
Préambule (vu le contexte de TP en distanciel)
Vous êtes logué(e) sur une machine personnelle (Linux, Windows, Mac)
Vous travaillerez dans un répertoire TP1 lui même inclus dans un répertoire M1106 créé pour ce module.
Vous déposerez alors en fin de séance une archive zip de ce répertoire sur Moodle (dépôt de vos archives zip TP). Un seul dépôt (une seule archive) pour les parties 1 et 2.
Données de ce TP
Toutes les données de ce TP (fichiers, images, ...) se trouvent dans le fichier zip TP11_donnees.zip.
Le World Wide Web Consortium a.k.a. W3C
Le World Wide Web Consortium (W3C) est un organisme international qui développe des recommandations ("open standards") pour assurer à long terme la croissance du World Wide Web (HTML, CSS, PNG, SVG, ...). Référence : https://www.w3.org/
Nous utiliserons Sublime Text à l'IUT pour éditer les fichiers HTML (et CSS) sous Linux.
Vous pourrez aussi utiliser sur vos machines personnelles Sublime Text que l'on vous recommande ou un autre éditeur généraliste comme
geany, gedit, nano, vim, emacs,... disponibles sous Linux. Sous Windows vous avez Notepad++.
Sous Mac vous avez aussi BBEdit par exemple.
Par la suite vous pourrez utilisez des éditeurs dédiés
aux développements Web et plus généralement à la programmation et à tous développements informatiques :
des IDE (integrated development environment) parmi lesquels
on trouve Netbeans (qu'on utilisera dans des futurs TP) et Eclipse.
Pour tester des bouts de code et les partager, vous pouvez également utiliser des
plateformes en ligne comme codepen
ou jsfiddle par exemple.
Voir par exemple dans ce
tuto MDN sur les formulaires HTML ou encore celui-ci, ce dernier lien juste pour vous donner envie, chez vous, de découvrir un peu ce langage JavaScript, désolé nous ne pouvons pas
l'aborder dans les 30h de ce module, il y a bien des choses à faire en HTML et CSS, mais sachez que vous l'utiliserez
au moins indirectement via le framework Bootstrap pour votre deuxième projet.
Choix du navigateur
Nous utiliserons (Mozilla) Firefox à l'IUT.
Il ne faut pas vouloir développer sur un navigateur en particulier. La bonne méthode de programmation Web (créer des pages Web) consiste à d'abord suivre
les recommandations du W3C puis, seulement après, une fois votre site créé, vous vérifiez la bonne navigation sur les navigateurs les plus courants : (Google) Chrome, (Mozilla) Firefox, Internet Explorer/Microsoft Edge, Safari et Opéra (Parts de marché 2020, source wikipédia, ici).
Site web adaptatif (en français) / Responsive Web Design (in English)
De nos jours un site web peut se consulter sur de nombreux appareils : écrans d'ordinateurs fixes ou portables, tablettes,
téléphones mobiles, liseuses, interfaces mode texte / consoles, ...
Vous verrez dans des prochains TP comment avec CSS, il est possible d'adapter son site sur n'importe quel écran et
ainsi le rendre "Responsive" ("Responsable").
Définition à retenir : un site web adapatif (ou "responsive") est un site offrant
une bonne expérience de lecture et de navigation sur n'importe quel appareil. En gros : le site s'adapte au support (taille de l'écran principalement, on pourrait imaginer aussi d'autres particularités : couleurs etc.)
Travail demandé
Introduction
Dans cette première partie de TP vous allez faire un tour d'horizon des balises HTML 5 usuelles employées.
On fera attention à bien séparer le fond (c'est-à-dire le contenu) qui sera réalisé en HTML, de la forme (c'est-à-dire l'habillage du texte et de la page) qui sera réalisée avec des feuilles de style CSS.
Vous allez donc devoir résister dans ce TP à toutes les tentations d'alignement de texte, de centrage, de mise en gras, de mise en italique, ... Tout cela sera fait plus tard avec des feuilles de style CSS. Dans cette première partie du TP 1 vous allez vous concentrer sur la réalisation de contenu. L'habillage sera vu dans la seconde partie du TP.
On fera aussi attention à écrire son code HTML de la manière suivante :
Toutes les balises s'écrivent en minuscule,
Toutes les balises se ferment,
Tous les attributs de balises sont écrits entre guillemets.
Exemples :
Quelque chose d'important
Une dernière chose avant (d'enfin) créer vos pages, rappelez vous que HTML
signifie HyperText Markup Language, soit en français langage de balise hyper texte,
c'est un langage informatique de balise en charge de représenter le contenu d'une page Web.
L'acronyme HTTP désigne quant à lui un protocole réseau, HTTP signifie HyperText Transfer Protocol,
soit en français protocole de transfert hyper texte, c'est un protocole réseau de couche 5 (couche application)
encapsulant des contenus Web.
C'était sur les erreurs 404, mais je ne la retrouve plus... 😅😂
Qu'est-ce que le Web (ou World Wide Web, ou la Toile) ?
C'est l'ensemble
des contenus (pages) accessibles via un navigateur.
Qu'est-ce qu'Internet ?
C'est le réseau informatique mondial accessible au public (le réseau des réseaux).
Allez c'est parti pour faire du TP et des jolies pages Web... 😁
Bien sûr tout ce qui est au dessus, il faut le savoir 🧐, c'est un condensé du minimum de théorie à connaître 😎.
Une première page : c'est parti
Réalisation d'une page minimale HTML 5
Créer une page page1.html contenant le code suivant.
TP n°1 : page de tests HTML 5
Test d'un titre avec accent : tôtô
<!doctype html> : déclaration du type de document, il s'agit d'un document HTML 5
(le 5 n'est pas précisé dans le doctype car en fait il indique "cette page utilise la dernière version d'HTML"
qui se trouve être la 5 à ce jour.
<meta charset="utf-8"/> : spécifie l'encodage de la page.
<!-- un commentaire HTML --> : le navigateur ne l'affichera pas.
Testez cette page en l'ouvrant avec le navigateur Firefox.
Mettez en commentaire la balise meta et observez le résultat dans le navigateur.
Ajoutez le code suivant dans le corps de votre page html.
Test d'une vidéo
La vidéo video.webm se trouve dans les données de ce TP.
Placez ce fichier dans l'arborescence adéquate de façon à correspondre au chemin source de la vidéo (voir balise source).
Testez votre page sous le navigateur Firefox.
C'est généralement une bonne chose de ne pas mélanger ses pages html avec ses fichiers d'images et de vidéos de son site. Comme dans cet exemple, rangez vos images et vidéos dans un répertoire.
Ajout d'une image avec légende
Ajoutez le code suivant dans le corps de votre page html.
Test d'une image avec légende
Le bâtiment R&T de Béthune.
L'image bat-RT.png se trouve dans les données de ce TP.
Testez votre page.
Notez bien le type de chemin employé pour indiquer le chemin du fichier image !
On utilise des chemins relatifs ! Et pas des chemins absolus genre "c:\MonSuperSite\images\bat-RT.png".
En effet des chemins absolus ne vont fonctionner qu'en local sur votre machine. Dès que vous
transférerez votre site sur un autre ordinateur, votre hébergeur par exemple (ou à l'enseignant pour qu'il note votre site)
cela ne fonctionnera pas. Les chemins ne seront plus bons. Donc pour faciliter le transfert et le déploiement de votre site,
n'utilisez que des chemins relatifs et ranger vos fichiers par catégorie : images, css, ....
Ajout de titres h1,h2,h3,h4,h5,h6 à votre page
Ajoutez 6 titres de niveau h1 à h6 dans votre page et tester votre page sous Firefox.
Ces balises titre h1, h2, ..., h6 indique le niveau du titre : h2 suit h1, h3 suit h2 etc.
Une grosse erreur consisterait à croire que vous allez utiliser h1, h2 ou h6 en fonction de la taille du texte que vous voulez obtenir.
Que nenni ! (oui un peu désuet... Vous pouvez le remplacer par "Pas du tout !") L'habillage de vos balises pourra dans un second temps être réglé par l'utilisation d'une feuille de style CSS.
Test de balises dans du texte
Ajoutez le code suivant dans le corps de votre page html.
Un paragraphe contenant un texte important,
un texte en relief (mis en emphase), un texte en hauteur,
un texte en bas par exemple la molécule H20.
Pour régler l'habillage (c'est-à-dire la mise en forme) que prendront
l'importance du texte et la mise en emphase, vous emploierez des feuilles
de style CSS dans un prochain TP.
Vous pouvez d'ores et déjà utiliser un style en ligne avec la balise
<span> (le style en ligne étant spécifié dans la propriété style),
par exemple pour souligner :
un mot souligné.
La balise <span> est dite générique, elle ne fait rien,
elle sert de support pour mettre des propriétés CSS en ligne. La balise
générique des éléments de type bloc est la balise <div>.
On peut aussi mettre une image dans du texte, par exemple
.
La balise <img> est une balise en ligne, c'est-à-dire qu'elle
s'affiche au fil du texte. Les balises de type en ligne
s'affichent les unes à la suite des autres. Les balises de type
bloc s'affiche les unes sous les autres. La balise de
paragraphe <p> est de type bloc. La balise d'image <img>
est de type en-ligne.
L'image logo-RT.png se trouve dans les données de ce TP.
Testez votre page sous le navigateur Firefox.
Parmi les balises ajoutées, quelles sont celles de type en ligne et celles de type bloc ?
Ajoutez un paragraphe contenant votre réponse dans votre page Web.
Les balises de type en ligne s'affichent les unes à la suite des autres comme du texte. Une balise de type en ligne n'occupe que l'espace dont elle a besoin en largeur. Lorsque deux balises de type en ligne se suivent, elles sont positionnées (par défaut) l'une à côté de l'autre.
Les balises de type bloc s'affichent les unes sous les autres. Une balise de type bloc occupe toute la largeur disponible. Lorsque deux balises de type bloc se suivent, elles sont positionnées (par défaut) l'une sous l'autre.
Ces notions sont importantes pour l'habillage.
Vous voyez que les symboles inférieur (<) et supérieur (>) sont réservés en HTML, pour les écrire il faut utiliser un codage spécial. Pour obtenir le symbole < vous allez donc écrire < Pour obtenir le symbole > vous allez donc écrire > Un dernier exemple : DUT R&T, le symbole & est codé par &
Ajout de listes
Ajoutez le code suivant à votre page.
Les listes
Les listes ordonnées
Blabla 1
Blabla 2
Blabla 3
Les listes non ordonnées
Blabla 1
Blabla 2
Blabla 3
Les listes de définitions
HTML
Hypertext Markup Language
WWW
World Wide Web
W3C
World Wide Web Consortium : organisme émettant des recommandations
sur les technologies employées sur le Web.
Navigateur
Logiciel spécialisé dans l'affichage de pages web
Puis testez votre page sous Firefox.
Retenez ces différentes façon de faire des listes en HTML.
Ajout d'un tableau
Voici les balises à retenir pour créer un tableau en HTML
Balises élémentaires
<table> : crée un tableau
<caption> : légende du tableau (optionnel)
<tr> : ligne du tableau (tr signifie "table row", soit en français une ligne de tableau)
<th> : cellule/case d'en-tête du tableau (th signifie "table head", soit en français un en-tête de tableau)
<td> : cellule/case du tableau (td signifie "table data", soit en français une donnée du tableau)
Balises complémentaires
<thead> : groupe de cellules d'en-tête
<tbody> : groupe de cellules de corps de tableau
<tfoot> : groupe de cellules de pied de tableau
Propriétés permettant de coller des cellules
colspan : groupe des colonnes, par exemple : <td colspan="2"> (cette cellule et celle située juste à côté à droite sur la même ligne sont regroupées en une cellule)
rowspan : groupe des lignes, par exemple : <td rowspan="2"> (cette cellule et celle située juste en dessous sont regroupées en une cellule)
Ajouter à votre page le code HTML permettant d'obtenir le tableau suivant
Pour cela compléter le code suivant
[...]
[...]
[...]
[...]
...
...
...
[...]
[...]
[...]
Ce tableau comporte 5 lignes et 4 colonnes.
En faisant un clic droit sur le tableau puis Examiner l'élément vous avez accès à l'inspecteur
Firefox qui va vous montrer les cases (blocs) de votre tableau.
Cet inspecteur
Firefox vous sera très utile dans la suite de ce module pour étudier finement vos pages (HTML et CSS). Il permet également de tester des modifications en direct.
Remarque : attention, les tableaux ne sont pas faits pour habiller une page. Cela a pu se faire au début de l'HTML quand peu d'outils étaient disponibles. De nos jours on utilise des feuilles de style CSS qui sont faites pour cela.
Formulaires
Pour finir cette première partie de TP sur les bases HTML 5 et Web, vous allez ajouter à votre page un formulaire.
Les formulaires permettent d'interagir avec l'utilisateur. Ils permettent de saisir des informations de la part de l'utilisateur.
Leurs traitements ne fait pas parti des obejctifs de ce module M1106. Ce que peut faire le serveur avec ces données saisies sera vu dans le prochain module de programmation Web dynamique M2105 (on a alors besoin d'un langage
de programmation Web dynamique comme par exemple PHP, Java, Python, Ruby, Javascript, ...).
L'aide spécifique w3schools sur les champs input de formulaire qui pourra bien vous aider 😎 : HTML Input Types w3schools
Commencez par ajouter à votre page le formulaire ci-dessous et testez-le.
La balise <form> est utilisée pour créer un formulaire. L'attribut method spécifie la méthode à employer pour envoyer les données saisies du formulaire vers le serveur (Message HTTP). Cette méthode peut être la méthode get où les données sont envoyées via l'URL ou la méthode post où les données sont envoyés dans la requête HTTP.
La balise ou champ <input> de type text (<input type="text" name="nom" id="nom"/>) permet se saisir une chaîne de caractères. La valeur peut être déjà mise avec l'attribut value (e.g. <input type="text" name="nom" id="nom" value="Nom déjà mis"/>). On peut aussi mettre un exemple de valeur, mais qui n'est pas mis comme valeur si les données étaient envoyées, avec l'attribut placeholder (e.g. <input type="text" name="nom" id="nom" placeholder="un exemple"/>) Plus d'infos là : HTML Input Types w3schools.
La balise ou champ <input> de type submit (<input type="submit" ...) crée un bouton servant à envoyer les données à une page de traitement dont l'url est donnée par l'attribut action de la balise form (<form method="post" action="page-de-traitement.<php ou jsp ou js ou ...>">, ici on ne traite pas les données c'est pour ça qu'on a mis action="#", le bouton renvoie sur la page actuelle (#)).
Vous verrez comment faire ce traitement au second semestre dans le module M2105 (Web dynamique).
L'attribut name d'un champ est utilisé lors de l'envoi de données du formulaire, il sert à référencer les données saisies pour y accéder dans la page de traitement au niveau du serveur. L'attribut id sert d'identifiant unique au niveau du client (CSS, JS, ...). Ces deux attributs n'ont pas toujours la même valeur comme vous le verrez au niveau des boutons radio. Vous pouvez avoir plusieurs boutons radio avec des identifiants différents, mais le même attribut name (ils sont liés, quand vous cochez sur un bouton autre que celui initialement coché, ce dernier se décoche. Lors de la soumission, il n'y a qu'une seule valeur dans la réponse - le bouton radio que vous avez sélectionné.
Testez la méthode get à la place de la méthode post pour voir comment sont transmises les informations saisies via l'URL (Remplissez le champ Nom et appuyer sur Envoyer)
Revenez à la méthode post.
Pour mieux délimiter votre formulaire vous pouvez utiliser un champ fieldset et y ajouter une légende comme ceci (Remplacez et Testez):
Pour mettre plus facilement le curseur dans une case de saisie, on peut faire en sorte que le clic de la souris sur une étiquette ou label renvoie le curseur dans une case de saisie. Ajoutez une étiquette sur "Nom" renvoyant dans la case de saisie du nom. Aide : la valeur de l'attribut for de la balise label doit être la même que celle de l'attribut id du champ vers lequel renvoie l'étiquette :
Essayez de cliquer sur Nom pour voir si le curseur de la souris est bien renvoyé dans la case de saisie du nom.
Ajoutez à votre formulaire un nouveau champ de saisie de texte pour le prénom ayant déjà pour valeur Téo.
:
Ajoutez à votre formulaire un nouveau champ de saisie de longueur 10 de texte pour le pseudo qui ne doit pas dépasser 10 caractères.
:
Ajoutez de quoi saisir un courriel.
Un champ input de type email permet de le faire.
:
Ajoutez de quoi saisir un mot de passe avec un exemple (qui n'est pas une valeur saisie).
Un champ input de type password permet de le faire pour pas qu'il s'affiche en clair au moment de la saisie.
:
Ajoutez maintenant des lignes horizontales <hr/> comme ceci pour structurer et aérer votre formulaire, et aussi un bouton reset (<input type="reset" name="init" id="init" value="Réinitialiser"/>) pour réinitialiser votre formulaire au besoin :
Ajoutez une ligne horizontale puis ajoutez deux boutons radios liés indiquant le genre de la personne Homme ou Femme.
input type="radio", les boutons doivent avoir la même valeur d'attribut name pour être liés.
C'est un exemple de cas où les attributs name et id ont des valeurs différentes. Les boutons radio sont liés par l'attribut name qui ne peut avoir qu'une seule valeur. Quand vous cochez sur un bouton autre que celui initialement coché, ce dernier se décoche. Lors de la soumission, il n'y a qu'une seule valeur dans la réponse : le bouton radio que vous avez sélectionné.
Ajoutez ensuite :
Un champ de sélection de fichier (voir input type="file")
un menu de sélection (voir balise <select>)
comment faîtes vous pour en sélectionner une par défaut ?
Des cases à cocher (voir input type="checkbox")
comment faîtes vous pour en cocher par défaut ?
Une zone de texte (un champ <textarea>)
Un champ de date (voir input type="date")
Quizz HTML w3schools
Pour finaliser cette partie de TP sur HTML 5, faites le test de connaissance HTML du w3schools situé ici :
Test HTML w3schools
(cliquez sur l'encadré bleu "Start the HTML Quiz").
Complétez vos connaissances en HTML http://www.w3schools.com/, refaites le quiz pour avoir le maximum de point au besoin.
Des questions seront reprises dans des futurs tests de connaissance (Colle(s) ou DS).
Faire valider les résultats de votre test à l'enseignant (tout juste 😁).
Une pause de 10 mn est possible avant de passer à la deuxième partie une fois tout fini. Si vous avez fini avant les 2h aidez les autres à finir aussi :-)