<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/Première/CSS : mise en forme</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Feuilles de style en cascade (CSS), syntaxe d'une règle,<br/>
sélecteurs (élément, classe, identifiant), propriétés<br/>
courantes (couleur, taille, marges), modèle de boîte,<br/>
cascade et héritage, intégration au HTML.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q01 : Que signifie CSS ?</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que signifie l'acronyme <strong>CSS</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>CSS sépare la <strong>structure</strong> (HTML) de la<br/>
<strong>présentation</strong> (CSS). Bonne pratique pour la<br/>
maintenabilité.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Color and Style System</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette appellation n'a<br/>
pas d'existence officielle.<br/>
Le standard porte le nom<br/>
<em>Cascading Style Sheets</em>,<br/>
mis au point par le W3C.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Cascading Style Sheets</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : feuilles de style en<br/>
cascade. La cascade décrit comment les<br/>
règles s'appliquent et se combinent quand<br/>
plusieurs s'opposent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Computer Style Sheet</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le sigle officiel est<br/>
<em>Cascading Style Sheets</em>.<br/>
La notion de « cascade »<br/>
est essentielle, car elle<br/>
décrit comment les règles<br/>
se combinent ou se<br/>
surchargent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Centralized Style Standard</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cette dénomination est<br/>
inventée. Le sigle CSS<br/>
renvoie aux <em>Cascading<br/>
Style Sheets</em>, défini par<br/>
le W3C dès 1996.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q02 : Syntaxe d'une règle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la structure d'une règle CSS ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Exemple : p { color: red; font-size: 16px; }.<br/>
Le ; final est facultatif sur la dernière<br/>
déclaration mais recommandé.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>`<code>css<br/>
sélecteur { propriété: valeur; ... }<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sélecteur (qui ?), accolades,<br/>
paires propriété : valeur séparées par des<br/>
points-virgules.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>css<br/>
&lt;sélecteur propriété="valeur"&gt;<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est plutôt une syntaxe HTML.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>css<br/>
sélecteur (propriété = valeur)<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas de parenthèses ni de signe<br/>
égal.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>css<br/>
sélecteur -&gt; propriété -&gt; valeur<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : syntaxe inventée.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q03 : Sélecteur d'élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment écrire une règle qui s'applique à<br/>
<strong>tous</strong> les paragraphes &lt;p&gt; ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sélecteur d'élément : nom seul (h1, p,<br/>
div...). Il sélectionne tous les éléments<br/>
de ce type dans la page.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>p { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on désigne le <strong>type<br/>
d'élément</strong> par son nom (sans &lt;&gt;).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>&lt;p&gt; { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas de chevrons en CSS.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>#p { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : # désigne un id, pas un<br/>
élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>.p { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : . désigne une classe.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q04 : Sélecteur de classe</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment cibler les éléments ayant<br/>
class="bouton" ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Mnémonique : <strong>.</strong> = <strong>c</strong>lass (commencent<br/>
tous deux par 'c' à l'oreille). Une classe peut<br/>
être appliquée à plusieurs éléments.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>bouton { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans préfixe, ce serait un<br/>
sélecteur d'élément (qui n'existerait pas).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>@bouton { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : @ introduit des règles<br/>
spéciales (@media, @import...).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>#bouton { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : # désigne un id (élément<br/>
unique).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>.bouton { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le <strong>point</strong> désigne une<br/>
classe. Très utilisé pour réutiliser un<br/>
style sur plusieurs éléments.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q05 : Sélecteur d'id</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment cibler l'élément ayant id="navigation" ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois sélecteurs de base : élément (sans<br/>
préfixe), classe (.), id (#). On peut les<br/>
combiner : p.important (paragraphes ayant<br/>
la classe « important »).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>navigation { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans préfixe, ce serait un<br/>
sélecteur d'élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>.navigation { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : . désigne une classe.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>*navigation { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : * est le sélecteur universel<br/>
(tous les éléments).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>#navigation { ... }</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le <strong>dièse</strong> (#) désigne<br/>
un id. Comme un id doit être unique, ce<br/>
sélecteur cible un seul élément.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q06 : Couleur du texte</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle propriété change la <strong>couleur du texte</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Distinguer color (texte) et<br/>
background-color (fond). Plusieurs syntaxes<br/>
pour les couleurs : nommée (red),<br/>
hexadécimale (#ff0000), rgb, rgba, hsl.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>background</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : background (ou<br/>
background-color) change la couleur <strong>de<br/>
fond</strong>, pas du texte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>color</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : color: red;,<br/>
color: #ff0000;, color: rgb(255, 0, 0);.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>font-color</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : propriété inexistante.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>text-color</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : propriété inexistante.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q07 : Intégrer du CSS</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la <strong>meilleure pratique</strong> pour<br/>
intégrer du CSS dans un projet HTML ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois façons d'intégrer CSS : externe<br/>
(&lt;link&gt;), interne (&lt;style&gt;), inline<br/>
(style="..."). L'externe est la meilleure<br/>
pratique.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Mettre tout le CSS dans un fichier .css séparé, lié via &lt;link&gt; dans &lt;head&gt;</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : séparation des<br/>
préoccupations, mise en cache par le<br/>
navigateur, partage entre pages, code<br/>
maintenable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Mettre du CSS dans chaque attribut style="..."</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Pratique courante mais à éviter :<br/>
répétitions, difficile à maintenir, ne<br/>
permet pas la réutilisation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Mettre tout le CSS dans une balise &lt;style&gt; à la fin du &lt;body&gt;</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Acceptable pour un prototype, mais le<br/>
fichier séparé est meilleur pour les<br/>
projets.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Écrire le CSS dans le code JavaScript</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Existe (CSS-in-JS) mais hors programme NSI<br/>
et peu adapté à des projets simples.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q08 : Taille de texte</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle propriété change la <strong>taille du texte</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Bonnes pratiques : utiliser des unités<br/>
relatives (em, rem) pour la<br/>
responsivité ; px pour les éléments<br/>
d'interface précis.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>font-size</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : font-size: 16px;,<br/>
font-size: 1.2em;. Unités courantes :<br/>
px (pixel), em (relatif au parent),<br/>
rem (relatif à la racine), %.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>large</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : large est une <strong>valeur</strong>, pas<br/>
une propriété (font-size: large;).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>size</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : propriété inexistante en CSS.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>text-size</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : propriété inexistante.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q09 : Commentaires CSS</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment écrire un <strong>commentaire</strong> en CSS ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Bonne pratique : commenter les sections<br/>
principales et les valeurs non triviales<br/>
(couleurs spécifiques, hacks de<br/>
compatibilité).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>/<em> commentaire </em>/</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : seule syntaxe valide en<br/>
CSS, peut s'étendre sur plusieurs lignes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>// commentaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la syntaxe JavaScript, C++,<br/>
Java. CSS ne reconnaît pas //.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>-- commentaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la syntaxe SQL.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p># commentaire</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la syntaxe Python.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q10 : Lien vers fichier CSS</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Comment lier un fichier style.css à une page<br/>
HTML ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Convention : nommer la feuille style.css ou<br/>
main.css. Pour des styles spécifiques à<br/>
certaines pages, plusieurs feuilles peuvent<br/>
coexister.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>html<br/>
&lt;import "style.css"&gt;<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : balise inexistante. CSS a @import<br/>
mais c'est en CSS, pas en HTML.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>html<br/>
&lt;style src="style.css"&gt;<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : &lt;style&gt; n'a pas d'attribut<br/>
src. Il sert à inclure du CSS inline.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>`<code>html<br/>
&lt;css href="style.css" /&gt;<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : balise inexistante.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>`<code>html<br/>
&lt;link rel="stylesheet" href="style.css"&gt;<br/>
</code>`</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : balise &lt;link&gt; avec<br/>
rel="stylesheet" (relation = feuille de<br/>
style) et href (chemin). À placer dans<br/>
&lt;head&gt;.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q11 : Modèle de boîte</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans le <strong>modèle de boîte</strong> CSS, quels sont les<br/>
quatre composants concentriques d'un élément<br/>
(de l'intérieur vers l'extérieur) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Comme une carte postale dans une enveloppe :<br/>
contenu (la carte), padding (le matelas<br/>
autour), border (l'enveloppe), margin<br/>
(l'espace entre l'enveloppe et la suivante).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>bordure, marge, padding, contenu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ordre incorrect.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>padding, contenu, marge, bordure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ordre incorrect.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>contenu, padding, bordure, marge</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <strong>content</strong> (contenu),<br/>
<strong>padding</strong> (rembourrage interne),<br/>
<strong>border</strong> (bordure), <strong>margin</strong> (marge<br/>
externe).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>marge, contenu, bordure, padding</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ordre incorrect.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q12 : Cascade et priorité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Si deux règles s'appliquent au même élément,<br/>
laquelle l'emporte ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Calcul de spécificité : (a, b, c) où a =<br/>
nombre d'id, b = nombre de classes, c =<br/>
nombre d'éléments. Comparaison<br/>
lexicographique.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Au hasard</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la cascade est déterministe.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Celle ayant le plus court sélecteur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'opposé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Celle ayant la plus grande spécificité (id &gt; classe &gt; élément), ou à spécificité égale, la dernière écrite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la cascade hiérarchise par<br/>
spécificité, puis par ordre de<br/>
déclaration. !important outrepasse<br/>
tout (à éviter).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La première écrite dans le fichier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse pour la même<br/>
spécificité (la dernière écrite l'emporte).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q13 : Héritage</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que signifie qu'une propriété CSS est<br/>
<strong>héritée</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Toutes les propriétés ne sont pas héritées :<br/>
color, font-family oui ; border,<br/>
padding, margin non. Forcer<br/>
l'héritage : inherit.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle ne fonctionne que sur le premier élément</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>L'héritage en CSS n'est<br/>
pas restreint au premier<br/>
élément ; il se propage<br/>
dans toute la sous-arborescence,<br/>
du parent vers ses<br/>
descendants.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle s'applique à tous les éléments de la page</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas global, mais hiérarchique.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Elle est transmise du parent à ses enfants dans l'arbre HTML, sauf surcharge</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : par exemple, color est<br/>
héritée : body { color: blue; } rend<br/>
tout le texte de la page bleu, sauf si<br/>
un descendant la redéfinit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Elle est interdite par CSS3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : très utilisée.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q14 : Unités CSS</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle unité est la plus adaptée pour une<br/>
taille de texte qui s'<strong>adapte</strong> à la taille<br/>
du parent ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Bonne pratique d'accessibilité : utiliser<br/>
rem pour le texte. L'utilisateur peut<br/>
ajuster la taille de base (préférences<br/>
navigateur), tout le site s'adapte<br/>
proportionnellement.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>em ou rem</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : em est relatif au<br/>
parent (1.2em = 120 % de la taille du<br/>
parent), rem est relatif à la racine.<br/>
Adaptatif et accessible.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>%</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Possible mais moins idiomatique pour<br/>
font-size.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>cm</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : unité physique, peu adaptée à<br/>
l'écran.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>px (pixel)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : taille fixe, pas adaptative.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q15 : Sélecteurs combinés</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que cible le sélecteur nav a (avec un<br/>
espace) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Combinateurs :   (descendant), &gt; (enfant<br/>
direct), + (frère adjacent), ~ (frère).<br/>
Et , pour grouper plusieurs sélecteurs.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le premier &lt;a&gt; après un &lt;nav&gt;</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait nav + a (frère adjacent).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Tous les &lt;a&gt; descendants d'un &lt;nav&gt; (à n'importe quel niveau d'imbrication)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'<strong>espace</strong> est le<br/>
combinateur de descendance. Pour les<br/>
enfants directs : nav &gt; a.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucun élément</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le sélecteur nav a<br/>
est parfaitement valide<br/>
et cible bien des éléments :<br/>
tous les liens situés à<br/>
l'intérieur d'une zone<br/>
de navigation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Les éléments qui sont à la fois &lt;nav&gt; et &lt;a&gt;</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est nav,a (virgule) qui ciblerait<br/>
les deux. Et un élément ne peut être à<br/>
la fois nav et a.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q16 : Pseudo-classes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>À quoi sert a:hover { color: red; } ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pseudo-classes courantes : :hover (survol),<br/>
:active (clic), :focus (focus clavier),<br/>
:visited (lien visité), :nth-child(n)<br/>
(n-ième enfant).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À cacher tous les liens</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Cacher des éléments<br/>
relèverait plutôt de<br/>
display: none ou<br/>
visibility: hidden.<br/>
La pseudo-classe :hover<br/>
réagit au survol de la<br/>
souris ; elle ne masque<br/>
rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À sélectionner tous les liens visités</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait :visited.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À empêcher le clic sur les liens</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Désactiver un lien se<br/>
ferait avec pointer-events: none<br/>
ou en supprimant l'attribut<br/>
href. La pseudo-classe<br/>
:hover n'altère en rien<br/>
le comportement du clic.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À changer la couleur des liens lorsque la souris passe dessus</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : :hover est une <strong>pseudo-<br/>
classe</strong> qui réagit à un état (survol<br/>
souris). Utile pour le retour visuel.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q17 : Couleurs en CSS</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Lesquels de ces formats désignent <strong>la même<br/>
couleur</strong> (rouge pur) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Quatre formats principaux : nommés (147<br/>
noms), hex (#rrggbb), rgb/rgba (transparence<br/>
via le 4ᵉ canal), hsl/hsla (teinte/saturation/<br/>
luminosité, plus intuitif).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>red, #ff0000, rgb(255, 0, 0), hsl(0, 100%, 50%)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : tous ces formats<br/>
représentent le rouge pur. Choisir selon<br/>
ce qui est plus lisible/calculable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Seulement red et #ff0000</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les quatre sont équivalents.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucun</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Au moins l'un de ces<br/>
formats représente bien<br/>
du rouge ; en réalité,<br/>
tous les quatre désignent<br/>
exactement la même couleur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Seulement rgb(255, 0, 0)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>La notation rgb(255, 0, 0)<br/>
n'est pas la seule à<br/>
désigner du rouge pur.<br/>
Le mot-clé red, le code<br/>
hexadécimal #ff0000 et<br/>
la notation HSL produisent<br/>
le même résultat.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q18 : Trace CSS</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>css<br/>
p { color: blue; }<br/>
.important { color: red; }<br/>
</code><br/>
<code>html<br/>
&lt;p class="important"&gt;Texte&lt;/p&gt;<br/>
</code>`<br/>
Quelle est la couleur du texte ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Calcul de spécificité (a,b,c) : a = id, b =<br/>
classe/attribut/pseudo-classe, c = élément/<br/>
pseudo-élément. Comparaison<br/>
lexicographique : (0,1,0) &gt; (0,0,1).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Bleu (la première règle gagne)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : .important a une plus grande<br/>
spécificité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Rouge (le sélecteur de classe l'emporte sur le sélecteur d'élément)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : spécificité (0,1,0) pour<br/>
.important &gt; spécificité (0,0,1) pour<br/>
p. Donc rouge.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune (conflit, le texte reste noir)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la cascade résout les conflits.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Violet (mélange)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le moteur CSS ne réalise<br/>
aucun mélange de couleurs<br/>
en cas de règles concurrentes.<br/>
C'est la règle la plus<br/>
spécifique qui s'applique<br/>
telle quelle.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q19 : Design responsive</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'est-ce qu'un design <strong>responsive</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Trois piliers du responsive : grilles<br/>
flexibles (% au lieu de px), images<br/>
flexibles (max-width: 100%), media<br/>
queries (@media (max-width: 600px)).</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un design qui change de couleur selon l'humeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le terme <em>responsive</em><br/>
renvoie strictement à<br/>
l'adaptation à la taille<br/>
de l'écran, pas à un<br/>
comportement émotionnel.<br/>
La détection d'humeur<br/>
n'a aucune réalité dans<br/>
ce cadre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un site qui répond rapidement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>C'est lié à la <strong>performance</strong>, pas au<br/>
responsive.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un design qui s'adapte automatiquement à différentes tailles d'écran (mobile, tablette, ordinateur)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : utilise @media,<br/>
unités relatives, mises en page flexibles<br/>
(Flexbox, Grid). Essentiel à l'ère du<br/>
mobile.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un design avec animations</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans rapport (animations =<br/>
transition, animation).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q20 : Plusieurs classes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un élément peut-il avoir <strong>plusieurs classes</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Multi-classes = principe de <strong>composition</strong>.<br/>
Très utilisé par les frameworks (Bootstrap,<br/>
Tailwind) : combiner de petits utilitaires<br/>
pour bâtir une mise en forme.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, séparées par des virgules</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : virgule produirait une classe<br/>
unique nommée « bouton, primaire, grand ».</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, une seule par élément</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on peut en mettre plusieurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Oui : class="bouton primaire grand" (séparées par des espaces)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pratique pour combiner<br/>
des styles modulaires. Chaque classe est<br/>
appliquée indépendamment.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Non, il faut utiliser un id</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : id et class sont indépendants.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q21 : Style ne s'applique pas</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Mon CSS ne semble pas s'appliquer à un élément.<br/>
Quelles sont les <strong>causes les plus probables</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Réflexe : ouvrir l'inspecteur (F12),<br/>
sélectionner l'élément, regarder l'onglet<br/>
« Styles » pour voir quelles règles<br/>
s'appliquent et lesquelles sont surchargées.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>HTML5 ne supporte pas CSS</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Faute de frappe dans le sélecteur (ex. .bouton au lieu de .button), ou règle plus spécifique qui surcharge, ou fichier CSS non chargé (vérifier la console).</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : trois pistes classiques.<br/>
Outils de débogage : inspecteur du<br/>
navigateur (F12), onglet « Computed »<br/>
montre les styles appliqués réellement et<br/>
d'où ils viennent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Il faut redémarrer le serveur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Possiblement (cache navigateur), mais<br/>
rarement la cause profonde.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le CSS est lent</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Le moteur de rendu CSS<br/>
applique les règles<br/>
quasi instantanément.<br/>
Si un style ne s'affiche<br/>
pas, la cause est presque<br/>
toujours un sélecteur<br/>
erroné, une règle plus<br/>
spécifique ou un fichier<br/>
mal chargé.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q22 : Flexbox</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>À quoi sert display: flex; sur un parent ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Flexbox (1D) et Grid (2D) sont les deux<br/>
systèmes modernes de mise en page. Avant<br/>
eux, on faisait des mises en page à coups de<br/>
float ou de &lt;table&gt;.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À cacher l'élément</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : display: none; cache.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À forcer une bordure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans rapport.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>À empêcher le clic</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans rapport.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>À transformer le parent en conteneur flexible, dont les enfants se disposent en ligne (par défaut) et peuvent être alignés/distribués facilement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : Flexbox est devenu le<br/>
standard pour les mises en page 1D (en ligne ou<br/>
en colonne). Propriétés clés :<br/>
justify-content, align-items, gap.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q23 : Media queries</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que fait @media (max-width: 600px) { ... } ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Stratégie « mobile-first » moderne :<br/>
écrire d'abord les styles pour mobile, puis<br/>
ajouter @media (min-width: ...) pour les<br/>
écrans plus grands.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Empêche l'affichage sur mobile</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Charge un autre fichier CSS</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ne charge rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>S'applique uniquement à l'impression</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait @media print.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Applique les règles sur les écrans de 600 pixels de large ou moins (typiquement les téléphones)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : c'est la base du<br/>
responsive. Permet d'avoir une mise en<br/>
page spécifique aux petits écrans (police<br/>
plus grande, menu hamburger, colonnes<br/>
empilées...).</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q24 : Le mot-clé !important</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Pourquoi faut-il <strong>éviter</strong> d'utiliser<br/>
!important en CSS ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Maxime CSS : « Spécificité bien pensée &gt;<br/>
!important ». Si on a besoin de<br/>
!important, c'est souvent qu'il y a un<br/>
problème de structure plus en amont.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'il rend les sites lents</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pas d'impact significatif sur la<br/>
performance.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Parce qu'il outrepasse la cascade normale et rend le code difficile à maintenir et à déboguer (on doit alors mettre !important partout pour gagner)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : !important est l'arme<br/>
nucléaire de CSS. À réserver à des cas<br/>
précis (surcharger une bibliothèque<br/>
tierce qu'on ne peut pas modifier).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce que c'est invalide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est valide.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Parce qu'il ne fonctionne pas en HTML5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : fonctionne.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q25 : Synthèse</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi les affirmations suivantes sur CSS,<br/>
laquelle est <strong>fausse</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Mnémonique : .classe = catégorie (peut<br/>
regrouper N éléments) ; #id = identifiant<br/>
(un seul). À ne pas confondre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le modèle de boîte CSS comprend contenu, padding, bordure, marge</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Vrai : modèle fondamental.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>CSS sépare la présentation de la structure (HTML)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Vrai : principe fondamental.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>La spécificité hiérarchise les sélecteurs : id &gt; classe &gt; élément</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Vrai : règle de la cascade.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un sélecteur de classe (préfixé par .) cible un seul élément à la fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Faux (donc bonne réponse) : une classe<br/>
peut être appliquée à plusieurs<br/>
éléments. C'est le <strong>id</strong> qui est unique<br/>
par convention.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q26 : Modèle de boîte</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans le modèle de boîte CSS, quel est l'ordre des<br/>
espaces autour du contenu, en partant du contenu<br/>
vers l'extérieur ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le modèle de boîte CSS est central pour<br/>
comprendre la mise en page. La propriété<br/>
box-sizing: border-box modifie la convention<br/>
de mesure : la largeur et la hauteur incluent<br/>
alors la bordure et le padding, ce qui simplifie<br/>
les calculs de dimensions.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Bordure, marge, padding</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la marge se trouve toujours à<br/>
l'extérieur. La bordure est entre le padding<br/>
et la marge, pas avant le padding.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Marge, padding, bordure</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ordre est inversé. Le padding est<br/>
le plus proche du contenu, la marge la plus<br/>
éloignée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Padding, bordure, marge</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : autour du contenu, on trouve<br/>
d'abord le <strong>padding</strong> (espace intérieur entre<br/>
le contenu et la bordure), puis la <strong>bordure</strong><br/>
elle-même, puis la <strong>marge</strong> (espace extérieur<br/>
séparant l'élément des autres).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Bordure, padding, marge</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le padding est à l'intérieur de la<br/>
bordure, pas à l'extérieur. La séquence<br/>
correcte commence par le padding.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q27 : Unités relatives em et rem</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle est la différence entre les unités CSS em<br/>
et rem ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Bonne pratique : utiliser rem pour les tailles<br/>
globales (texte, marges principales) et em pour<br/>
les ajustements relatifs à un composant<br/>
particulier. Les deux respectent la taille de<br/>
base définie par l'utilisateur dans son<br/>
navigateur, ce qui aide l'accessibilité.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>em est en pixels, rem est en pourcentage</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce sont toutes deux des unités<br/>
<strong>relatives</strong> sans dimension fixe en pixels.<br/>
Elles dépendent toujours d'une taille de<br/>
référence.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>em ne fonctionne que sur les polices, rem que sur les marges</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux unités s'appliquent à<br/>
n'importe quelle propriété de longueur (taille<br/>
de texte, marges, paddings, etc.). Aucune<br/>
n'est restreinte à un type particulier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Aucune, ce sont deux noms équivalents</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ces deux unités existent toutes les<br/>
deux et ne se réfèrent pas à la même grandeur.<br/>
Confondre les deux peut conduire à des tailles<br/>
imprévisibles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>em est relatif à la taille du parent ; rem est relatif à la taille de la racine (élément &lt;html&gt;)</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : un même 1em peut donner des<br/>
tailles différentes selon le parent et<br/>
s'amplifier en cas d'imbrication ; rem reste<br/>
stable en se référant toujours à<br/>
&lt;html&gt;. C'est pourquoi rem est privilégié<br/>
pour la typographie globale.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>CSS : mise en forme — Q28 : Spécificité d'un sélecteur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Parmi les sélecteurs suivants, lequel a la <strong>plus<br/>
grande spécificité</strong> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le calcul de spécificité s'écrit en triplet<br/>
(a, b, c) : a = nombre d'id, b = nombre de<br/>
classes, attributs et pseudo-classes, c =<br/>
nombre d'éléments et pseudo-éléments. La<br/>
comparaison est lexicographique. Le mot-clé<br/>
!important court-circuite ce calcul, mais il<br/>
est à éviter car il rend les styles difficiles à<br/>
maintenir.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>#header</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : un identifiant a la<br/>
spécificité (1, 0, 0), supérieure à toute<br/>
combinaison ne comportant pas d'identifiant.<br/>
C'est pourquoi il faut utiliser les id avec<br/>
parcimonie : ils sont difficiles à surcharger<br/>
ensuite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>p</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un sélecteur d'élément seul a la plus<br/>
faible spécificité, à savoir (0, 0, 1). Tout<br/>
autre sélecteur listé ici le surclasse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>.menu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un sélecteur de classe a la<br/>
spécificité (0, 1, 0), supérieure à un<br/>
élément, mais inférieure à un identifiant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>p.menu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce sélecteur combine un élément et<br/>
une classe, soit la spécificité (0, 1, 1).<br/>
C'est plus fort qu'une simple classe ou un<br/>
simple élément, mais cela reste inférieur à<br/>
un identifiant.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
