Partie 2 : Implémenter une page web statique**
Ce guide couvre l'intégralité des concepts, syntaxes, attributs et exemples de la Partie 2. Il est conçu pour une préparation d'examen rigoureuse, sans omission des détails techniques.
1. Concepts & Définitions
- Page web statique : Une page dont le contenu est envoyé par le serveur HTTP tel quel (sous forme de balises HTML) et interprété par le navigateur pour affichage. Le contenu ne change pas dynamiquement en fonction de l'utilisateur.
- Responsive Web Design : Consiste à utiliser HTML et CSS pour redimensionner, masquer, rétrécir ou agrandir automatiquement un site Web afin de le rendre compatible à tous les appareils (ordinateurs de bureau, tablettes et téléphones).
- Formulaire : Une section d'un document web qui permet Ă un utilisateur de fournir des informations via des contrĂŽles interactifs.
- Méthode
GET: Méthode d'envoi de données de formulaire qui permet d'envoyer les données sous forme de chaßne de paramÚtres à travers l'URL. Les données sont visibles dans la barre d'adresse. - Méthode
POST: MĂ©thode d'envoi de donnĂ©es de formulaire qui permet d'envoyer les donnĂ©es (invisibles) Ă travers une requĂȘte HTTP. - Validation cĂŽtĂ© client : Validation effectuĂ©e au niveau du navigateur, avant de soumettre les donnĂ©es au serveur. Elle peut ĂȘtre mise en Ćuvre via JavaScript ou les fonctions intĂ©grĂ©es dans HTML5.
- Validation cÎté serveur : Validation opérée sur le serveur, aprÚs soumission des données et avant leur enregistrement.
2. Syntaxes & Codes
- Structure de base d'un formulaire :
<form action="[URL de traitement]" method="[get|post]"> <!-- ĂlĂ©ments du formulaire (input, label, textarea, etc.) --> </form> - Structure d'un champ de saisie :
<label for="[id_input]">Texte du label</label> <input type="[type_valeur]" id="[id_input]" name="[nom_champ]"> - Structure d'une zone de texte multiligne :
<textarea>Contenu initial</textarea> - Structure d'une liste de sélection :
<select name="[nom_champ]" id="[id_select]"> <option value="[valeur_option]">Texte de l'option</option> </select> - Structure pour images réactives :
<picture> <source srcset="[URL_image]" media="[media_query]"> <img src="[URL_image_defaut]" alt="[texte_alternatif]"> </picture> - Structure pour une liste de données (autocomplétion) :
<input list="[id_datalist]"> <datalist id="[id_datalist]"> <option value="[valeur_suggerée]"> </datalist>
3. Attributs & Propriétés
Balise <form>
action: SpĂ©cifie la ressource (URL) qui va recevoir et traiter les donnĂ©es du formulaire.method: SpĂ©cifie la mĂ©thode d'envoi des donnĂ©es.get: Les donnĂ©es sont visibles dans l'URL.post: Les donnĂ©es sont envoyĂ©es dans le corps de la requĂȘte HTTP (invisibles).
novalidate: Attribut boolĂ©en qui, lorsqu'il est prĂ©sent, spĂ©cifie que les donnĂ©es du formulaire ne doivent pas ĂȘtre validĂ©es lors de son envoi.
Balise <input>
type: DĂ©finit le type de champ de saisie. Valeurs possibles :text: Champ de texte sur une seule ligne.password: Champ de mot de passe (caractĂšres masquĂ©s).button: Bouton cliquable (souvent utilisĂ© avec JavaScript).checkbox: Case Ă cocher (sĂ©lection multiple possible).color: SĂ©lecteur de couleur.date: SĂ©lecteur de date (jour, mois, annĂ©e).datetime-local: SĂ©lecteur de date et d'heure sans fuseau horaire.email: Champ pour une adresse e-mail (validation de format).file: Champ de sĂ©lection de fichier avec un bouton "Parcourir".hidden: Champ de donnĂ©es non visible par l'utilisateur.image: Bouton de soumission sous forme d'image.month: SĂ©lecteur de mois et d'annĂ©e.number: Champ pour une valeur numĂ©rique.radio: Bouton radio (une seule sĂ©lection possible dans un groupe de mĂȘmename).range: Curseur pour sĂ©lectionner une valeur dans un intervalle.reset: Bouton qui rĂ©initialise toutes les valeurs du formulaire.search: Champ de recherche.submit: Bouton qui soumet le formulaire.tel: Champ pour un numĂ©ro de tĂ©lĂ©phone.time: SĂ©lecteur d'heure.url: Champ pour une URL (validation de format).week: SĂ©lecteur de semaine et d'annĂ©e.
id: Identifiant unique pour l'élément, utilisé par les balises<label>.name: Nom du champ, envoyé avec la valeur lors de la soumission du formulaire.value: Spécifie la valeur initiale du champ.readonly: Attribut booléen qui spécifie qu'un champ est en lecture seule.maxlength: Spécifie le nombre maximum de caractÚres autorisés.multiple: Attribut booléen qui autorise la saisie de plusieurs valeurs (pourtype="email"ettype="file").pattern: Spécifie une expression réguliÚre pour valider la valeur du champ.placeholder: Fournit un indice (texte d'exemple) qui disparaßt lorsque l'utilisateur commence à saisir.required: Attribut booléen qui rend le champ obligatoire.step: Spécifie les intervalles de numéros légaux pour les champs numériques.autofocus: Attribut booléen qui donne automatiquement le focus au champ lors du chargement de la page.list: Fait référence à l'idd'un élément<datalist>pour fournir des options d'autocomplétion.min/max: Spécifie les valeurs minimale et maximale pour les champs numériques ou de date.onclick: Attribut d'événement pour exécuter un script (ex:alert(...)).
Balise <select>
id: Identifiant unique pour la liste.name: Nom du point de donnĂ©es associĂ©.multiple: Attribut boolĂ©en qui permet de sĂ©lectionner plusieurs options.size: SpĂ©cifie combien d'options doivent ĂȘtre visibles Ă la fois.
Balise <option>
value: La valeur qui sera envoyée au serveur si cette option est sélectionnée.selected: Attribut booléen qui rend l'option sélectionnée par défaut.
4. Exemples Pratiques (Codes complets du PDF)
Afficher différentes images en fonction de la largeur du navigateur :
<picture> <source srcset="img_smallflower.jpg" media="(max-width: 600px)"> <source srcset="img_flowers.jpg" media="(max-width: 1500px)"> <source srcset="flowers.jpg"> <img src="img_smallflower.jpg" alt="Flowers"> </picture> <!-- NB : nâoubliez pas de mettre la balise suivante dans la balise <head> --> <meta name="viewport" content="width=device-width, initial-scale=1.0">Taille du texte rĂ©actif :
<h1 style="font-size: 10vw">Hello World</h1>Formulaire de base avec méthode
POST:<form action="authentification.php" method="post"> <!-- Ici on insÚre les éléments du formulaire--> </form>Champs
textetpasswordavec<label>:<!-- Type texte --> <form> <label for="fname">First name:</label><br> <input type="text" id="fname" name="fname"><br> <label for="lname">Last name:</label><br> <input type="text" id="lname" name="lname"> </form> <!-- Type password --> <form> <label for="username">Username:</label><br> <input type="text" id="username" name="username"><br> <label for="pwd">Password:</label><br> <input type="password" id="pwd" name="pwd"> </form>Champ
textarea:<textarea>L'Office de la formation professionnelle et de la promotion du travail (OFPPT) est un opérateur public en formation professionnelle.</textarea>Boutons
radioet champnumber:<!-- Type radio --> <form> <input type="radio" id="male" name="sexe" value="Masculin"> <label for="male">Masculin</label><br> <input type="radio" id="female" name="sexe" value="Féminin"> <label for="female">Féminin</label><br> </form> <!-- Type number --> <form> <label for="quantité">Quantité :</label> <input type="number" id="quantity" name="quantity" min="0" max="100" step="10" value="30"> </form>Cases à cocher
checkbox:<form> <input type="checkbox" id="vehicle1" name="vehicle1" value="Bike"> <label for="vehicle1"> J'ai un vélo</label><br> <input type="checkbox" id="vehicle2" name="vehicle2" value="Car"> <label for="vehicle2">J'ai une voiture</label><br> <input type="checkbox" id="vehicle3" name="vehicle3" value="Boat"> <label for="vehicle3"> J'ai un bateau</label> </form>Liste de sélection
select:<label for="langage">Sélectionner un langage de programmation:</label> <select name="lg" id="langage"> <option value="">--Choisir --</option> <option value="Python">Python</option> <option value="CSharp">C#</option> <option value="java">java</option> </select>Attribut
patternpour un numéro de téléphone :<form> <label for="phone">Enter your phone number:</label> <input type="tel" id="phone" name="phone" pattern="[0-9]{3}-[0-9]{2}-[0-9]{3}"> </form>Attribut
required:<form> <label for="username">Username:</label> <input type="text" id="username" name="username" required> </form>Boutons
submitetreset:<!-- Bouton Submit --> <form action="/action_page.php"> <label for="fname">First name:</label><br> <input type="text" id="fname" name="fname"><br> <label for="lname">Last name:</label><br> <input type="text" id="lname" name="lname"><br> <br> <input type="submit" value="Submit"> </form> <!-- Bouton Reset --> <form action="/action_page.php"> <label for="fname">First name:</label><br> <input type="text" id="fname" name="fname"><br> <label for="lname">Last name:</label><br> <input type="text" id="lname" name="lname"><br> <br> <input type="submit" value="Submit"> <input type="reset" value="Réinitialiser"> </form>
5. Spécifications Techniques
- Cinq façons de créer des dispositions d'éléments :
- Tableaux HTML (non recommandé)
- Propriété
floatCSS (méthode ancienne) - Flexbox CSS
- Framework CSS (W3.CSS ou Bootstrap)
- Grille CSS
- Validation HTML5 intégrée :
required: Rend une entrée obligatoire.pattern: Valide selon une expression réguliÚre.minlengthetmaxlength: Limite la taille des entrées textuelles.minetmax: Limite la valeur pour les champs numériques.
- Fonctionnement de
GETvsPOST:GETajoute les pairesnom=valeurĂ l'URL, ce qui est non sĂ©curisĂ© pour les donnĂ©es sensibles et a une limite de longueur.POSTenvoie les donnĂ©es dans le corps de la requĂȘte HTTP, ce qui est plus sĂ©curisĂ© et n'a pas de limite de taille. - UnitĂ©
vw: "largeur de la fenĂȘtre" (viewport width).10vwsignifie 10% de la largeur de la fenĂȘtre du navigateur.
6. Points Critiques
- Recommandations de méthode : Le document déconseille l'utilisation des tableaux HTML pour la mise en page et qualifie la méthode
floatd'ancienne. - Balise
<meta name="viewport">: Cette balise est indispensable dans le<head>pour que le Responsive Web Design fonctionne correctement sur les appareils mobiles. - Groupement des boutons radio : Pour que les boutons radio fonctionnent comme un groupe oĂč un seul choix est possible, ils doivent tous partager le mĂȘme attribut
name. - Désactivation de la validation : L'attribut
novalidatesur la balise<form>désactive toute la validation HTML5 intégrée pour ce formulaire. - Liaison
<label>et<input>: L'attributforde la balise<label>doit correspondre à l'attributidde la balise<input>pour les lier sémantiquement et améliorer l'accessibilité.