Exercice 2 — analyse et interprétation du code CSS, dans l’esprit des sessions 2023–2025
On s’intéresse à la page signalement.html du site VéloCité, qui permet de signaler un vélo en panne (figure 1), et à la feuille de style styleVelo.css qui lui est liée (les deux fichiers sont dans le même dossier). Sachant que :
- la largeur des zones de saisie des champs Nom et prénom et E-mail est égale à 240 px ;
- la largeur des zones de saisie des champs Téléphone et N° du vélo est égale à 110 px ;
- la zone de saisie multiligne Description de la panne a une largeur de 240 px et une hauteur de 90 px ;
- toutes les zones de saisie ont une bordure pleine (solid) de 2 px de couleur #1d6b8f.
Figure 2 — contenu de styleVelo.css (numéros de règle) :
1 .large { width : 240px ; }
2 #tel, #velo { width : 110px ; }
3 .cadre { border : 2px solid #1d6b8f ; }
4 .saisie { width : 240px ; border : 2px solid #1d6b8f ; }
5 input { height : 26px ; }
6 .zoneTexte { width : 240px ; height : 90px ; border : 2px solid #1d6b8f ; }
7 .bouton:hover { background-color : #f2b705 ; }
8 legend, label { color : #1d6b8f ; font-weight : bold ; }Figure 3 — extrait du code HTML de signalement.html :
1 <header>
2 <h1>Signaler une panne</h1>
3 <nav> <a class="menu" href="index.html">Accueil</a> <a class="menu" href="stations.html">Stations</a> </nav>
4 </header>
5 <p class="aide">Indiquez le numéro inscrit sous la selle du vélo.</p>
6 <form action="panne.php" method="post">
7 <fieldset>
8 <legend>Votre signalement</legend>
9 <!-- zones de saisie : voir la question 1 -->
10 <input type="submit" class="bouton" value="Envoyer">
11 <input type="reset" class="bouton" value="Effacer">
12 </fieldset>
13 </form>1. Pour chacune des situations suivantes, répondre par V si la déclaration HTML5 proposée répond à la situation donnée, ou par F dans le cas contraire. Toute case vide ou comportant une réponse autre que V ou F est considérée erronée.
1.1 Mettre en forme la zone de saisie du champ Téléphone conformément à l’aperçu.
- ☐ <input type="text" id="tel" name="tel" class="cadre">
- ☐ <input type="text" id="telephone" name="tel" class="cadre">
- ☐ <input type="text" id="tel" name="tel">
1.2 Mettre en forme la zone de saisie du champ Nom et prénom conformément à l’aperçu.
- ☐ <input type="text" id="nom" name="nom" class="saisie">
- ☐ <input type="text" id="large" name="nom" class="cadre">
- ☐ <input type="text" id="nom" name="nom" class="large">
1.3 Mettre en forme la zone de saisie multiligne du champ Description de la panne conformément à l’aperçu.
- ☐ <textarea id="desc" name="desc" class="saisie"></textarea>
- ☐ <textarea id="desc" name="desc" class="zoneTexte"></textarea>
- ☐ <textarea id="zoneTexte" name="desc"></textarea>
1.4 Mettre en forme la zone de saisie du champ N° du vélo conformément à l’aperçu.
- ☐ <input type="text" id="velo" name="velo" class="cadre">
- ☐ <input type="number" id="velo" name="velo" class="cadre">
- ☐ <input type="text" name="velo" class="cadre">
2. Pour chacune des règles 2, 5, 7 et 8, indiquer le type de sélecteur utilisé (classe, identifiant, élément), si la règle est liée à un évènement (Vrai/Faux) et son effet.
3. Donner les numéros des règles de styleVelo.css qui s’appliquent à chacun des éléments suivants :
- a. <input type="text" id="velo" name="velo" class="cadre">
- b. <textarea id="desc" name="desc" class="zoneTexte"></textarea>
- c. <input type="submit" class="bouton" value="Envoyer">
- d. <label>Téléphone :</label>
4. En utilisant uniquement les instructions de la liste ci-dessous, écrire les règles CSS qui réalisent les trois mises en forme demandées (voir les figures 1 et 3).
Liste d’instructions : color : white | background-color : #1d6b8f | text-align : center | font-size : 22px | font-style : italic | font-weight : bold | border : 1px dashed gray | border : 1px solid gray | padding : 10px | margin : 10px | display : inline-block | display : none | h1 | #h1 | .aide | #aide | .menu | #menu
| Mise en forme | Code CSS |
|---|---|
| Le titre « Signaler une panne » : texte blanc ; arrière-plan de couleur #1d6b8f ; texte centré ; taille de caractères de 22 pixels. | ………… { ………… } |
| Le paragraphe d’aide : style de caractères italique ; bordure grise hachée de 1 pixel ; marge intérieure de 10 pixels. | ………… { ………… } |
| Les liens du menu : comportement d’affichage bloc en ligne ; marge extérieure de 10 pixels. | ………… { ………… } |
Voir la correction commentéeAprès avoir posé votre démarche
1. Idée : pour chaque déclaration, relever sa balise, son id et sa class, cumuler les règles qui les ciblent, puis comparer au rendu demandé.
- 1.1 V (
#tel(règle 2) donne 110 px,.cadre(règle 3) la bordure) — F (aucune règle ne cible l’identifiant « telephone » : pas de largeur) — F (largeur 110 px mais aucune bordure). - 1.2 V (
.saisie(règle 4) donne 240 px et la bordure) — F (l’identifiant « large » ne déclenche pas la règle de classe.large: bordure sans largeur) — F (largeur 240 px mais aucune bordure). - 1.3 F (
.saisiedonne largeur et bordure mais pas la hauteur de 90 px ; la règleinput(règle 5) ne s’applique pas à<textarea>) — V (.zoneTexte(règle 6) donne largeur, hauteur et bordure) — F (l’identifiant « zoneTexte » ne déclenche pas la règle de classe : aucune mise en forme). - 1.4 V (
#veloet.cadre) — V (le sélecteurinputet#velone dépendent pas du type : même rendu) — F (la règle#velovise l’attribut id, pas name : pas de largeur).
2. Idée : . → classe, # → identifiant, nom de balise → élément ; une pseudo-classe :hover lie la règle au survol de la souris.
| Règle | Type de sélecteur | Liée à un évènement | Effet |
|---|---|---|---|
| 2 | identifiant (deux sélecteurs groupés par une virgule) | Faux | largeur de 110 px pour les éléments d’id tel et velo |
| 5 | élément | Faux | hauteur de 26 px pour toutes les balises input (zones de texte et boutons) |
| 7 | classe (avec la pseudo-classe :hover) | Vrai | arrière-plan #f2b705 (jaune orangé) quand la souris survole un élément de classe bouton |
| 8 | élément (deux sélecteurs groupés) | Faux | texte de couleur #1d6b8f et en gras pour les légendes et les libellés |
3. Idée : une règle groupée s’applique dès qu’un de ses sélecteurs correspond ; une règle input ne vise pas textarea ; une règle :hover ne s’applique que pendant le survol.
- a. règles 2, 3, 5 (
#velo,.cadre,input) ; - b. règle 6 seulement (
<textarea>n’est pas une balise input) ; - c. règle 5, et la règle 7 en plus pendant le survol ;
- d. règle 8 (sélecteur
labelde la règle groupée).
4. Idée : <h1> n’a ni classe ni id → sélecteur d’élément ; le paragraphe et les liens portent class → sélecteurs .aide et .menu ; « hachée » = dashed ; marge intérieure = padding, extérieure = margin.
h1 { color : white ; background-color : #1d6b8f ; text-align : center ; font-size : 22px ; }
.aide { font-style : italic ; border : 1px dashed gray ; padding : 10px ; }
.menu { display : inline-block ; margin : 10px ; }