Aller au contenu

Un mot pour Fahmio

Tu écris. Tu continues.

Un problème, une idée — assez pour qu’on comprenne, puis tu retournes à ta copie.

On lit. Tu n’as rien d’autre à faire.

Où veux-tu aller ?

↑ ↓ pour parcourir · Entrée pour ouvrir · Échap pour fermer

Fahmio
Fahmio
Bac Tunisie
WB-FWeb et TIC

CSS — relier sélecteurs (classe, id, élément, :hover) et rendu, règles appliquées à un élément, écrire des règles depuis une liste

Idée directrice

Chaque session du bac Sciences de l’informatique depuis 2023 pose une question de CSS sur la page du site étudié : une feuille de style et un aperçu sont donnés, et il faut décider quelle déclaration HTML (class, id, balise) produit le rendu demandé, nommer le type d’un sélecteur, lister les règles qui s’appliquent à un élément ou écrire des règles à partir d’une liste d’instructions. La méthode ne change pas : relier chaque attribut de la balise aux règles qui le ciblent, cumuler leurs propriétés, comparer au rendu.

Ce qui aide à reconnaître la démarche

« répondre par V si la déclaration HTML5 proposée répond à la situation donnée » ; « indiquer le type de sélecteur utilisé (classe, identifiant, élément), si la règle est liée à un évènement » ; « Quels sont les numéros des règles … qui vont s’appliquer » ; « écrire dans la colonne « Code CSS » le code CSS adéquat à chaque mise en forme demandée » ; « pour chaque étiquette, entourer la proposition correcte »

Besoin d’un point de départ ? Voir la méthode
  • Relever pour chaque balise son nom, son id et sa class ; .x vise class="x", #x vise id="x", p vise toutes les balises p.
  • Cumuler toutes les règles qui correspondent (une règle groupée par virgules s’applique dès qu’un sélecteur correspond) puis comparer au rendu exigé.
  • Une règle input ne s’applique pas à <textarea> ; une règle :hover ne s’applique que pendant le survol.
  • Vocabulaire : padding = marge intérieure, margin = extérieure ; dashed = hachée, dotted = pointillée, solid = pleine ; inline-block, none ; border-radius : 50 % pour un disque.
Les pièges à vérifier dans ta démarche

Écrire #saisie quand la balise porte class="saisie" (ou l’inverse) ; croire qu’un name déclenche une règle #… ; appliquer une règle input à un <textarea> ; oublier qu’une règle :hover n’agit qu’au survol ; confondre padding et margin, dashed et dotted ; lire la virgule d’une règle groupée comme un « et ».

Sujet principal

Exercice 2 — analyse et interprétation du code CSS, dans l’esprit des sessions 2023–2025

4 questionsFigure fournieCorrigé masqué

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 formeCode 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 (.saisie donne largeur et bordure mais pas la hauteur de 90 px ; la règle input (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 (#velo et .cadre) — V (le sélecteur input et #velo ne dépendent pas du type : même rendu) — F (la règle #velo vise 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ègleType de sélecteurLiée à un évènementEffet
2identifiant (deux sélecteurs groupés par une virgule)Fauxlargeur de 110 px pour les éléments d’id tel et velo
5élémentFauxhauteur de 26 px pour toutes les balises input (zones de texte et boutons)
7classe (avec la pseudo-classe :hover)Vraiarrière-plan #f2b705 (jaune orangé) quand la souris survole un élément de classe bouton
8élément (deux sélecteurs groupés)Fauxtexte 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 label de 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 ; }

Changer d’énoncé, garder le raisonnement

Choisis un seul transfert après le sujet principal. Qu’est-ce qui change ? Quel résultat ou quelle méthode peux-tu réutiliser ? Les autres exercices restent disponibles pour une prochaine séance.

Variantes rencontrées : V/F sur la déclaration HTML5 (class, id) qui donne la largeur et la bordure demandées (principale et contrôle 2023) ; type de sélecteur, lien à un évènement et effet de trois règles, puis règles qui s’appliquent à un élément (contrôle 2024) ; entourer la bonne valeur de display, border-radius et font-weight (principale 2024) ; QCM sur des règles à ajouter et rôle d’une règle :hover (contrôle 2025) ; écrire trois règles à partir d’une liste d’instructions (principale 2025) ; compléter sélecteurs et couples propriété : valeur (principale et contrôle 2026).

Exercices d'entraînement — une nuance à la fois

1 Drill WB-F.1 — marge intérieure (padding) ou marge extérieure (margin) ?
Entraînement 01 / 04

Drill WB-F.1 — marge intérieure (padding) ou marge extérieure (margin) ?

3 questionsCorrigé masqué

Sur la page web stations.html du site VéloCité, chaque station est affichée dans une boîte : <div class="station">Gare : 18 places</div>. On veut écrire la règle .station { … } du fichier CSS lié à cette page HTML.

  1. Pour chaque mise en forme, choisir la déclaration correcte (mettre une croix) :
    1. un espace de 12 pixels entre le texte et la bordure de la boîte : ☐ margin : 12px ☐ padding : 12px ☐ border : 12px
    2. un espace de 20 pixels entre la bordure d’une boîte et les boîtes voisines : ☐ margin : 20px ☐ padding : 20px ☐ width : 20px
    3. une marge extérieure droite de 15 pixels, les autres marges extérieures étant nulles : ☐ margin : 0px 0px 0px 15px ☐ margin : 15px 0px 0px 0px ☐ margin : 0px 15px 0px 0px
    4. une marge intérieure haute de 5 pixels, les autres étant nulles : ☐ padding : 5px 0px 0px 0px ☐ padding : 0px 0px 5px 0px ☐ margin-top : 5px
  2. Décrire l’effet de chacune des déclarations suivantes : margin : 5px 0px 5px 0px ; et margin : 10px 20px ;.
  3. Écrire la règle .station qui donne : une marge intérieure de 8 pixels sur les quatre côtés et une marge extérieure basse de 6 pixels seulement.
Voir la correction commentéeAprès avoir posé votre démarche

1. Idée : padding = intérieur (entre le contenu et la bordure), margin = extérieur (au-delà de la bordure) ; avec quatre valeurs, l’ordre est haut, droite, bas, gauche (sens des aiguilles d’une montre).

  • a. padding : 12px ;
  • b. margin : 20px ;
  • c. margin : 0px 15px 0px 0px (la 2ᵉ valeur est la marge droite ; 0px 0px 0px 15px donnerait la gauche) ;
  • d. padding : 5px 0px 0px 0px (margin-top serait une marge extérieure).

2. margin : 5px 0px 5px 0px : marges extérieures haute et basse de 5 px, gauche et droite nulles. margin : 10px 20px : deux valeurs → 10 px en haut et en bas, 20 px à droite et à gauche.

3.

.station { padding : 8px ; margin : 0px 0px 6px 0px ; }
2 Drill WB-F.2 — style de bordure : solid, dashed, dotted, double
Entraînement 02 / 04

Drill WB-F.2 — style de bordure : solid, dashed, dotted, double

7 questionsCorrigé masqué

La page HTML formules.html du site VéloCité affiche trois cartes : <div class="f1">Journalier</div>, <div class="f2">Mensuel</div> et <div class="f3">Annuel</div>. On veut, respectivement :

  • pour la classe f1, une bordure pleine verte de 2 pixels ;
  • pour la classe f2, une bordure orange de 2 pixels en tirets (hachée) ;
  • pour la classe f3, une bordure bleue de 3 pixels en pointillés ;
  • pour le bouton <input type="submit" id="choisir" value="Choisir">, une bordure noire double de 4 pixels.
  1. Écrire les quatre règles CSS correspondantes.
  2. Répondre par V ou F : a. border : orange dashed 2px ; est équivalente à border : 2px dashed orange ; ; b. border-style : dashed ; seule fixe aussi l’épaisseur et la couleur ; c. border : 2px hachée orange ; est une déclaration correcte.
  3. Quelle déclaration donne une bordure uniquement en bas de chaque carte, pleine, noire, de 4 pixels ?
Voir la correction commentéeAprès avoir posé votre démarche

1. Idée : la propriété raccourcie border réunit épaisseur, style et couleur ; les mots-clés de style sont anglais : solid (pleine), dashed (tirets), dotted (pointillés), double.

.f1 { border : 2px solid green ; }
.f2 { border : 2px dashed orange ; }
.f3 { border : 3px dotted blue ; }
#choisir { border : 4px double black ; }

Le bouton porte un id : on utilise #choisir.

2. a. V : dans border, l’ordre des trois valeurs est libre. b. F : elle ne fixe que le style (épaisseur et couleur gardent leur valeur par défaut). c. F : « hachée » n’est pas un mot-clé CSS, il faut dashed.

3. border-bottom : 4px solid black ;

3 Drill WB-F.3 — sélecteur de classe (.x) ou d’identifiant (#x)
Entraînement 03 / 04

Drill WB-F.3 — sélecteur de classe (.x) ou d’identifiant (#x)

3 questionsCorrigé masqué

Le code HTML suivant fait partie d’une page web du site VéloCité ; la feuille de style qui lui est liée est donnée ensuite, avec les numéros de ses règles.

1 <p class="info">Station Bab Bhar : 15 places</p>
2 <p id="info">Station Gare : 18 places</p>
3 <p class="alerte" id="gare2">Station Taparura : complète</p>
4 <div class="info">Mise à jour : 8 h</div>
1 .info           { color : green ; }
2 #info           { font-weight : bold ; }
3 p               { font-size : 14px ; }
4 .alerte, #gare2 { color : red ; }
  1. Pour chacune des lignes HTML 1 à 4, donner les numéros des règles qui s’appliquent et décrire le rendu du texte.
  2. Un élève veut que la ligne 4 soit aussi en gras ; il écrit id="info" sur la balise <div>. Pourquoi est-ce incorrect ? Proposer une solution.
  3. Répondre par V ou F : a. la règle info { color : green ; } s’applique aux éléments de classe info ; b. une même classe peut être portée par des balises différentes ; c. dans la règle 4, la virgule signifie « et » : seul un élément ayant à la fois la classe alerte et l’id gare2 est concerné.
Voir la correction commentéeAprès avoir posé votre démarche

1. Idée : .info vise l’attribut class, #info l’attribut id, p toutes les balises p ; on cumule les règles qui correspondent.

  • ligne 1 : règles 1, 3 → texte vert, 14 px ;
  • ligne 2 : règles 2, 3 → texte en gras, 14 px, couleur par défaut (la règle .info ne s’applique pas à un id) ;
  • ligne 3 : règles 3, 4 → texte rouge, 14 px (les deux sélecteurs de la règle 4 correspondent) ;
  • ligne 4 : règle 1 → texte vert (la règle p ne vise pas <div>).

2. Un identifiant doit être unique dans la page : info est déjà l’id de la ligne 2. Il faut passer par une classe, par exemple <div class="info gras"> avec la règle .gras { font-weight : bold ; } (un élément peut porter plusieurs classes séparées par un espace).

3. a. F : sans point, info est un sélecteur d’élément (une balise <info> qui n’existe pas). b. V (lignes 1 et 4). c. F : la virgule groupe deux sélecteurs, la règle s’applique à tout élément de classe alerte ou d’id gare2.

4 Drill WB-F.4 — compléter des règles : border-radius, display, background-image, transform
Entraînement 04 / 04

Drill WB-F.4 — compléter des règles : border-radius, display, background-image, transform

3 questionsCorrigé masqué

La page carte.html du site VéloCité affiche une carte de Sfax (<div class="carte">), les stations sous forme de points (<div class="point" id="s1"></div>, …), un menu (<a class="menu" href="…">) et un paragraphe d’aide <p id="aide"> qui doit rester invisible au chargement. Voici un extrait incomplet de la feuille de style :

1 .point       { width : 20px ; height : 20px ; ……①…… ; }
2 #aide        { ……②…… ; }
3 .menu        { display : ……③…… ; margin : 0px 10px 0px 0px ; }
4 .carte       { ……④…… : url(sfax.png) ; }
5 .point:hover { ……⑤…… : scale(1.5) ; }
  1. Pour chaque étiquette, entourer la proposition correcte :
    1. ① afficher chaque point sous forme de disque : ☐ border-radius : 50% ☐ border-width : 50% ☐ border-style : round
    2. ② ne pas afficher le paragraphe d’aide : ☐ display : block ☐ display : none ☐ visibility : visible
    3. ③ afficher les liens du menu côte à côte : ☐ inline ☐ none ☐ block
    4. ④ afficher sfax.png en image de fond de la carte : ☐ img ☐ list-style-image ☐ background-image
    5. ⑤ agrandir un point de 1,5 fois quand la souris le survole : ☐ zoom-in ☐ transform ☐ scale
  2. Que devient l’aspect des points si l’on remplace, en ①, 50% par 5px ?
  3. Quelle différence y a-t-il entre display : none et visibility : hidden ?
Voir la correction commentéeAprès avoir posé votre démarche

1. ① border-radius : 50% : un carré de 20 px × 20 px aux coins arrondis de moitié devient un disque. ② display : none : l’élément n’est pas affiché. ③ inline : les liens restent sur la même ligne (block les empilerait, none les cacherait). ④ background-image. ⑤ transform (scale(1.5) est la valeur de la propriété transform).

2. Un rayon de 5 px ne fait qu’arrondir légèrement les coins : les points restent des carrés aux coins arrondis.

3. Avec display : none, l’élément est retiré de la mise en page (sa place est libérée) ; avec visibility : hidden, il est invisible mais garde sa place.

Relier ce raisonnement au bac

Choisis une filière pour voir les sujets qui étayent ce scénario.