Sélecteurs et cascade CSS : mettre en forme une page web

Apprends à mettre en forme des pages web avec CSS. Écris des règles et relie une feuille de style, pars des styles par défaut du navigateur et sélectionne précisément les éléments souhaités. Prévois le style qui l’emporte en cas de conflit entre les règles grâce à la cascade, à la spécificité et à l’héritage. Écris des couleurs et choisis des unités, dimensionne et espace les éléments avec le modèle de boîte, puis mets en forme les polices, le texte, les listes, les liens, les arrière-plans et les bordures.

DébutantUnité 4 sur 8 de la formation Formation : HTML et CSS : création et publication de sites web

Ce que tu vas apprendre

  1. Écris des règles CSS valides, relie une feuille de style à une page HTML et pars des styles que le navigateur applique déjà, en utilisant les outils de développement pour comprendre ce qui se passe.
    • Écris des règles CSS et relie une feuille de style à une page
      Lis et écris les parties d’une règle CSS, choisis entre une feuille de style externe, un élément <style> et des styles en ligne, et découvre comment le navigateur traite les erreurs.
    • Pars des styles par défaut du navigateur et inspecte-les
      Reconnais les styles que chaque navigateur applique avant les tiens, décide lesquels réinitialiser et utilise les outils de développement pour comprendre l’apparence d’un élément.
  2. Cible précisément les éléments souhaités avec des sélecteurs de type, de classe et d’identifiant, des sélecteurs d’attribut, des pseudo-classes, des pseudo-éléments et des combinateurs.
    • Sélectionne les éléments par type, par classe et par identifiant
      Sélectionne les éléments par nom, classe ou identifiant, combine des sélecteurs qui doivent correspondre au même élément et regroupe plusieurs sélecteurs dans une règle.
    • Sélectionne les éléments selon leurs attributs, leurs états et leurs parties
      Utilise des sélecteurs d’attribut, des pseudo-classes pour les états et les positions, et des pseudo-éléments qui mettent en forme une partie d’un élément ou ajoutent du contenu généré.
    • Combine les sélecteurs selon la place des éléments dans la page
      Sélectionne les éléments selon leur relation avec d’autres éléments dans l’arbre HTML : à n’importe quelle profondeur à l’intérieur, directement à l’intérieur, juste après ou plus loin après un autre élément.
  3. Détermine la déclaration qui s’applique lorsque plusieurs règles définissent la même propriété, calcule la spécificité et explique comment les éléments obtiennent des valeurs qu’aucune règle ne leur a données directement.
    • Suis la cascade pour trouver la déclaration qui l’emporte
      Applique les étapes de la cascade (origine et importance, spécificité, puis ordre d’apparition) et utilise avec précaution les styles en ligne, !important et les couches de cascade.
    • Calcule et compare la spécificité
      Calcule le score de tout sélecteur au format identifiants-classes-types, compare les scores colonne par colonne et garde une spécificité faible pour que les styles restent faciles à remplacer.
    • Utilise l’héritage et les mots-clés globaux
      Sache quelles propriétés passent du parent à l’enfant, utilise l’héritage pour écrire moins de CSS et contrôle-le avec inherit, initial, unset et revert.
  4. Écris des couleurs dans les principales notations CSS, rends le texte lisible sur son arrière-plan et choisis entre des unités absolues et relatives pour le texte, les espacements et les dimensions.
    • Écris des couleurs avec des mots-clés, la notation hexadécimale, rgb() et hsl()
      Utilise des mots-clés de couleur, des codes hexadécimaux, rgb() et hsl(), ajoute de la transparence et vérifie que le texte contraste suffisamment avec son arrière-plan.
    • Choisis les longueurs et les unités
      Utilise correctement les pixels, em, rem, les pourcentages et les unités relatives à la zone d’affichage, sache à quoi chaque unité relative se rapporte et combine des unités avec calc().
  5. Explique comment chaque élément est dessiné sous forme d’une boîte composée d’un contenu, d’une marge intérieure, d’une bordure et d’une marge extérieure, calcule ses dimensions et règle l’espace à l’intérieur et entre les boîtes.
    • Calcule les dimensions des boîtes à partir du contenu, des marges intérieures, des bordures et des marges extérieures
      Nomme les quatre parties d’une boîte, écris les propriétés raccourcies d’espacement et calcule les dimensions d’un élément dans les modèles de boîte standard et alternatif.
    • Règle l’espacement entre les boîtes de bloc et les boîtes en ligne
      Prévois comment les boîtes de bloc, en ligne et inline-block occupent l’espace, centre un bloc avec des marges automatiques et reconnais les situations où les marges verticales fusionnent.
  6. Choisis et charge des polices, rends le texte lisible, mets en forme les listes et les liens et décore les boîtes avec des arrière-plans, des dégradés, des bordures, des coins arrondis et des ombres.
    • Choisis des polices et charge des polices web
      Écris des piles de polices avec des solutions de repli, définis la taille, la graisse et le style, utilise la propriété raccourcie font et charge une police personnalisée avec @font-face.
    • Mets en forme le texte, les listes et les liens pour faciliter la lecture
      Définis la hauteur de ligne, l’alignement, la décoration, la casse et l’espacement, modifie les marqueurs et le retrait des listes, et donne aux liens des états clairs et accessibles.
    • Ajoute des couleurs, des images et des dégradés d’arrière-plan
      Remplis les boîtes avec des couleurs, des images et des dégradés, règle la répétition, la taille et la position des images d’arrière-plan et écris la propriété raccourcie background.
    • Dessine des bordures, des coins arrondis, des contours et des ombres
      Écris des propriétés raccourcies de bordure pour tous les côtés ou un seul, arrondis les coins avec border-radius et ajoute des contours et des ombres sans modifier la mise en page.

Sélecteurs et cascade CSS : cours

6 chapitres

1

Relie le CSS et inspecte le résultat

CSS transforme une page HTML structurée et porteuse de sens en une page dont les couleurs, les polices et les espacements sont choisis. Pour fonctionner, une règle doit avoir une syntaxe valide et être reliée au document. Le navigateur apporte aussi ses propres styles : tu pars donc toujours d’une apparence existante. Apprends à relier une feuille de style externe, à apporter une petite modification et à la suivre dans les outils de développement lorsque le résultat diffère de tes attentes.

1.1 Règles, déclarations et feuilles de style

HTML décrit le contenu et son sens. CSS, abréviation de Cascading Style Sheets, décrit la présentation : couleurs, polices, espacements, bordures et arrière-plans. Modifier une feuille de style peut donner une apparence différente au même document HTML sans changer ses titres, ses paragraphes ou ses liens.

Lire une règle
p {
  color: navy;
  font-size: 18px;
}

Le sélecteur p correspond aux paragraphes. Les accolades encadrent le bloc de déclarations. Chaque déclaration comporte une propriété, deux-points, une valeur et un point-virgule. Ici, color et font-size sont des propriétés ; navy et 18px sont des valeurs. Les sauts de ligne et les espaces entre ces parties rendent le code plus facile à lire sans modifier son effet.

Un point-virgule sépare une déclaration de la suivante. Le dernier est facultatif, mais le conserver évite des erreurs lorsque tu ajoutes une ligne. Dans color: navy font-size: 18px;, le navigateur lit une seule valeur de couleur invalide. Il ne peut pas retrouver les deux déclarations que tu voulais écrire : ce texte ne définit donc aucun des deux styles.

Relier le CSS

Une feuille de style externe est un fichier CSS distinct, relié depuis le head du document HTML :

<link rel="stylesheet" href="css/styles.css">

Ce chemin indique qu’un dossier nommé css se trouve à côté du fichier HTML et contient styles.css. Un fichier externe peut mettre en forme plusieurs pages. Enregistrer une modification dans ce fichier met à jour les règles chargées par ces pages.

Un élément style dans le head contient des règles pour une page. Un attribut style en ligne contient des déclarations pour un élément, comme <p style="color: crimson;">Hello.</p>. Les feuilles de style externes sont généralement plus faciles à maintenir. Les déclarations en ligne normales sont aussi prioritaires sur les règles normales des feuilles de style de l’auteur, ce qui peut compliquer les modifications ultérieures.

Pour obtenir un premier résultat, place body { font-family: Arial, sans-serif; } et h1 { color: darkslateblue; } dans le fichier relié. Recharge la page. Le corps du texte prend la police Arial lorsqu’elle est disponible, avec une police sans empattement en repli ; le titre change de couleur. Les contrôles comme les boutons peuvent conserver leur propre police définie par le navigateur jusqu’à ce que tu leur demandes explicitement d’hériter de la police.

Trouver les erreurs de syntaxe et de chemin

Les navigateurs ignorent les déclarations invalides et poursuivent. color: 12px; est invalide car une longueur n’est pas une couleur. font-size: 16 px; est invalide car le nombre et l’unité doivent être accolés. Une propriété mal orthographiée est également ignorée. Une déclaration de bordure valide dans le même bloc peut toujours fonctionner : un changement visible ne prouve donc pas que toutes les déclarations sont valides.

Les commentaires CSS utilisent /* Header styles */ et peuvent s’étendre sur plusieurs lignes. // ne commence pas un commentaire CSS ; il peut conduire le navigateur à ignorer le code qui suit. Les noms de propriétés et les valeurs ordinaires sous forme de mots-clés ne sont pas sensibles à la casse ; écris-les en minuscules par convention. Les noms de classes et les chemins de fichiers doivent correspondre à leur orthographe et à leur casse réelles.

Si aucun style n’apparaît, vérifie la requête dans le panneau Réseau. Un chemin incorrect comme style.css peut renvoyer un statut 404 même si la page HTML elle-même s’ouvre normalement.

Considérer les propriétés raccourcies comme des réglages complets

Une propriété raccourcie définit plusieurs propriétés associées à la fois. margin: 10px 20px; définit les quatre marges extérieures. Les parties omises reprennent leur valeur initiale : background-image: url("sky.jpg"); suivi de background: lightblue; supprime l’image. Place d’abord la propriété raccourcie, puis les exceptions sous forme de propriétés détaillées qui doivent être conservées.

Points clés

  • Écris chaque déclaration sous la forme property: value; dans une règle.
  • Relie une feuille de style externe depuis le head du document HTML ; résous son chemin à partir du fichier HTML.
  • Un navigateur ignore le CSS invalide et poursuit avec les déclarations valides.
  • Utilise /* ... */ pour les commentaires CSS.
  • Une propriété raccourcie réinitialise les propriétés détaillées associées qu’elle omet.

1.2 Styles par défaut du navigateur et outils de développement

Une page HTML brute comporte tout de même de grands titres, des espaces entre les paragraphes, des marqueurs de liste et des liens soulignés. Ils proviennent de la feuille de style du navigateur, le CSS intégré au navigateur. Tes styles partent de ces valeurs par défaut ; une page sans mise en forme personnalisée n’est pas une page sans règles CSS.

Choisir le sens avant l’apparence

Les valeurs par défaut courantes comprennent une marge extérieure de 8px sur le corps, des marges verticales de 1em sur les paragraphes et une marge intérieure de 40px au début des listes. Les valeurs par défaut des titres comprennent 2em pour h1 et 1.5em pour h2, avec des marges verticales de 0.67em pour h1. Le texte d’importance forte est en gras ; le texte marqué par une emphase est en italique. Les liens non visités sont généralement bleus et les liens visités violets. Les paramètres et les implémentations des navigateurs peuvent influer sur les valeurs par défaut : inspecte donc la page réelle lorsque la précision compte.

La taille de texte par défaut est généralement de 16px, avec une police choisie dans les paramètres du navigateur. Les lecteurs peuvent modifier cette taille. Les tailles de police relatives peuvent suivre leur choix.

Choisis un élément HTML pour son sens, puis mets-le en forme. Si un h2 paraît trop grand, utilise h2 { font-size: 1.25rem; }. Choisir un h4 uniquement pour obtenir des caractères plus petits modifierait la structure des titres. Modifier la taille en CSS préserve le sens du titre de deuxième niveau.

Les valeurs par défaut déterminent aussi comment les éléments occupent l’espace. Les paragraphes et les sections forment normalement des boîtes de bloc. Les éléments span et les liens s’insèrent normalement dans les lignes. Les éléments de liste ont display: list-item, ce qui leur donne une boîte de niveau bloc et un marqueur. Une modification de display en CSS change le comportement de la boîte tout en préservant le sens HTML de l’élément.

Ne réinitialiser que ce que tu souhaites

Une réinitialisation CSS supprime certaines valeurs par défaut. body { margin: 0; } supprime l’espace extérieur. Une règle générale comme * { margin: 0; padding: 0; } supprime aussi l’espacement des paragraphes et le retrait des listes, que tu dois ensuite rétablir. Une approche normalize conserve les valeurs par défaut utiles et corrige les différences.

Les contrôles de formulaire ont souvent des polices que le navigateur leur attribue directement. Pour qu’ils utilisent la police de la page, écris :

button, input, select, textarea {
  font: inherit;
}

Commence le document HTML par <!DOCTYPE html>. Cette déclaration sélectionne le mode standard. Son omission peut déclencher le mode de compatibilité, dans lequel d’anciens comportements de compatibilité modifient certaines dimensions et d’autres résultats CSS.

Inspecter la propriété qui te surprend

Fais un clic droit sur un élément et choisis Inspecter. Le panneau Styles montre les règles correspondantes, y compris les règles du navigateur portant une mention de feuille de style du navigateur. Une déclaration barrée a perdu face à une autre ; un avertissement peut signaler du CSS invalide. Les déclarations gagnantes sont choisies propriété par propriété : une règle peut donc perdre pour la couleur tout en fournissant la marge intérieure.

Le panneau des styles calculés montre les valeurs finales des propriétés ainsi que le contenu, la marge intérieure, la bordure et la marge extérieure du modèle de boîte. Si un titre présente un espace inattendu, inspecte sa marge extérieure avant d’ajouter une marge intérieure à un autre élément. Teste une modification directement dans les outils de développement, puis copie la règle qui fonctionne dans ta feuille de style : les modifications faites pendant l’inspection disparaissent au rechargement.

Lorsqu’un style ne fonctionne pas, suis un ordre utile : vérifie que la feuille de style est chargée, que le sélecteur correspond, que la déclaration est valide, qu’elle l’emporte et que la propriété agit sur ce type de boîte. Un width: 200px valide ne dimensionne toujours pas un span ordinaire affiché en ligne.

Points clés

  • La feuille de style du navigateur fournit des valeurs par défaut lisibles avant l’application de ton CSS.
  • Choisis les éléments HTML selon leur sens et modifie leur apparence avec CSS.
  • Une réinitialisation CSS supprime des valeurs par défaut que tu devras peut-être rétablir.
  • Utilise le mode standard avec <!DOCTYPE html>.
  • Inspecte les règles correspondantes, leur validité et les déclarations barrées avant de modifier le code.
  • Enregistre dans la feuille de style les modifications testées avec succès dans les outils de développement.
2

Sélectionne précisément les éléments souhaités

Un sélecteur décrit les éléments auxquels une règle s’applique. Certains sélecteurs correspondent à des noms ou à des attributs ; d’autres correspondent à un état, à une partie d’un élément ou à une relation dans l’arbre HTML. De petits changements de ponctuation comptent : un espace, une virgule et un point ont chacun un sens différent. Pars de l’élément que tu veux mettre en forme, puis remonte les conditions qui le définissent, afin qu’une règle atteigne tous les éléments souhaités sans toucher aux autres.

2.1 Sélecteurs de type, de classe, d’identifiant et composés

Un sélecteur répond à une question pratique : quels éléments doivent recevoir ces déclarations ? Commence par le sélecteur le plus simple qui exprime le rôle souhaité. Une classe peut être réutilisée sur de nombreux éléments sans lier le style à un emplacement précis de la page.

Sélectionner par nom et par attribut
SélecteurCorrespondance
pTous les paragraphes
.warningTous les éléments de classe warning
#site-headerL’élément d’identifiant site-header
*Tous les éléments

Un sélecteur de type est un nom d’élément. Un sélecteur de classe commence par un point ; un sélecteur d’identifiant commence par #. La ponctuation appartient au sélecteur CSS, pas à la valeur de l’attribut HTML. Écris <p class="warning">, pas <p class=".warning">.

Un élément peut avoir plusieurs classes séparées par des espaces. <p class="warning"> et <div class="box warning"> correspondent tous deux à .warning. Un identifiant doit être unique dans une page. Sa spécificité élevée rend aussi les styles fondés sur un identifiant plus difficiles à remplacer : les classes sont donc généralement le principal outil pour les styles réutilisables.

Utilise des noms qui décrivent un rôle, comme .error-message ou .product-card. Un nom comme .red-text devient trompeur si la présentation change de couleur. Les noms de classes sont sensibles à la casse : .Warning et .warning sont différents. Un nom commençant par un chiffre doit être échappé dans un sélecteur CSS ; choisir .three-columns évite la forme non échappée invalide .3-columns.

Exiger plusieurs conditions sur un même élément

Écrire des sélecteurs les uns à la suite des autres crée un sélecteur composé. Le même élément doit satisfaire à chaque partie. p.intro correspond aux paragraphes qui ont la classe intro. .card.featured correspond à un élément qui possède les deux classes.

<p class="note important">Doors open at 19:00.</p>
<p class="note">Bring your ticket.</p>
.note { color: #333333; }
.important { font-weight: bold; }
p.note.important { border-left: 4px solid crimson; }

Trouve d’abord les correspondances. Les deux paragraphes ont note : leur texte devient donc gris foncé. Seul le premier possède important : lui seul devient donc gras. Le sélecteur composé ajoute la bordure gauche à ce même premier paragraphe, car c’est un p qui possède les deux classes. Aucun conteneur supplémentaire n’est nécessaire.

Un espace change la sélection : p .intro sélectionne un élément de classe intro à l’intérieur d’un paragraphe. Il ne sélectionne pas le paragraphe lui-même. Garde les parties accolées lorsqu’elles décrivent le même élément.

Partager un bloc de déclarations

Une virgule crée une liste de sélecteurs :

h1, h2, h3 { font-family: Georgia, serif; }

Chaque sélecteur correspond indépendamment à son niveau de titre. Sans les virgules, h1 h2 h3 désignerait un h3 à l’intérieur d’un h2 lui-même à l’intérieur d’un h1.

Un sélecteur invalide dans une liste de sélecteurs ordinaire peut invalider toute la règle. h1, h2..title, h3 ne met en forme aucun de ces titres, car le double point est invalide. Lorsqu’une règle partagée semble absente, vérifie tous les sélecteurs de la liste, pas seulement celui de l’élément inspecté.

Points clés

  • Une classe peut apparaître sur de nombreux éléments, et un élément peut avoir plusieurs classes.
  • Un identifiant doit être unique sur la page et son sélecteur a une spécificité élevée.
  • p.intro exige les deux conditions sur un même élément ; p .intro décrit un descendant.
  • Les virgules créent des sélecteurs indépendants qui partagent des déclarations.

2.2 Attributs, états et parties

Certaines conditions de mise en forme sont déjà présentes dans les attributs HTML. D’autres dépendent de ce que fait le lecteur ou de la place d’un élément parmi ses éléments frères. CSS peut reconnaître ces conditions sans ajouter une classe pour chacune.

Sélectionner un attribut ou sa valeur

Les sélecteurs d’attribut utilisent des crochets. [alt] correspond à la présence d’un attribut, même si sa valeur est vide. input[type="email"] exige la valeur d’attribut exacte.

ExpressionSignification
[href^="https"]La valeur commence par https
[href$=".pdf"]La valeur se termine par .pdf
[href*="example"]La valeur contient example
[class~="note"]Une liste séparée par des espaces contient le mot note
`[lang="en"]`

Ajoute i avant le crochet fermant pour ignorer la casse, comme dans a[href$=".pdf" i]. Ce sélecteur atteint aussi un lien se terminant par .PDF. La recherche d’un mot entier évite que note corresponde par accident à un mot de classe plus long comme notebook.

Sélectionner un état ou une position

Une pseudo-classe utilise un signe deux-points : :hover, :focus, :checked ou :disabled. :focus-visible sélectionne un élément qui a le focus lorsque le navigateur détermine qu’un indicateur visible est nécessaire, généralement pendant la navigation au clavier.

Un lien peut être visité et survolé en même temps. Pour des règles concurrentes de même spécificité, écris les états de lien dans cet ordre : :link, :visited, :focus, :hover, :active. Sinon, une règle de couleur pour les liens visités placée plus tard l’emporterait sur une règle de couleur au survol placée plus tôt, pour un lien visité. Pour protéger la vie privée, les navigateurs limitent :visited à certains changements de couleur ; définir sa graisse ne fonctionne pas et la transparence ne peut pas révéler l’historique des visites.

Les pseudo-classes structurelles comptent les éléments frères. :first-child désigne le premier élément enfant de son parent. Dans <article><h2>News</h2><p>Update</p></article>, p:first-child ne correspond à rien. p:first-of-type correspond bien à ce paragraphe.

:nth-child(3) sélectionne le troisième enfant. odd sélectionne les positions 1, 3, 5 ; even sélectionne 2, 4, 6. Dans :nth-child(3n+1), commence par n = 0, puis 1, 2 et 3 : les positions correspondantes sont 1, 4, 7 et 10. li:not(:last-child) exclut le dernier élément, ce qui permet d’ajouter des séparateurs uniquement entre les éléments.

Mettre en forme une partie ou ajouter une indication

Un pseudo-élément utilise deux signes deux-points. ::first-line et ::first-letter mettent en forme des parties du texte ; ::marker met en forme les marqueurs de liste, ::placeholder le texte indicatif d’un champ et ::selection le texte sélectionné. Les anciennes formes à un seul signe deux-points pour before, after, first-line et first-letter fonctionnent toujours.

.required::after {
  content: " *";
  color: crimson;
}

::after crée du contenu dans l’élément sélectionné après son contenu existant. ::before le crée avant. Les deux ont besoin d’une valeur content ; même content: "" crée une boîte décorative. Les informations essentielles doivent figurer dans le HTML, où elles restent un véritable contenu du document. Utilise ces pseudo-éléments pour la décoration ou de petites indications, car le texte généré ne peut pas toujours être sélectionné ou copié comme le texte HTML.

Points clés

  • Les opérateurs d’attribut distinguent la présence, les valeurs exactes, les fragments de texte et les mots entiers.
  • Une pseudo-classe sélectionne un état ou une position ; un pseudo-élément met en forme une partie ou du contenu généré.
  • :first-child compte tous les éléments frères, tandis que :first-of-type compte les éléments du même type.
  • Les états d’un lien peuvent se chevaucher : les règles d’état concurrentes doivent donc suivre un ordre choisi.
  • ::before et ::after ont besoin de content ; les informations essentielles doivent figurer dans le HTML.

2.3 Relations dans l’arbre HTML

Les éléments HTML forment un arbre. Un élément placé directement dans un autre est son enfant ; tout élément imbriqué à l’intérieur est un descendant. Les éléments qui partagent un parent sont des éléments frères. Un combinateur relie des sélecteurs par l’une de ces relations.

Suivre la relation jusqu’à la cible
CombinateurExempleCible
Espacenav aTout lien situé à l’intérieur d’un nav, à n’importe quelle profondeur
>.menu > liUn li directement à l’intérieur de .menu
+h2 + pUn paragraphe immédiatement après un h2, avec le même parent
~h2 ~ pTout paragraphe frère situé après un h2

La partie la plus à droite désigne l’élément qui reçoit les déclarations. h2 + p met en forme le paragraphe, pas le titre. Les deux combinateurs de voisin recherchent vers l’avant parmi les éléments frères ; aucun ne sélectionne un parent ou un élément frère précédent.

Suivre une liste imbriquée
<ul class="menu">
  <li>Guides</li>
  <li>Topics
    <ul>
      <li>Typography</li>
    </ul>
  </li>
</ul>

.menu li correspond aux trois éléments de liste, car tous trois sont des descendants de la liste extérieure. .menu > li ne correspond qu’à « Guides » et « Topics » : leur parent est la liste de classe menu. Le parent de l’élément « Typography » est le ul intérieur, qui ne porte pas cette classe.

Cette distinction compte lorsque les éléments de premier niveau ont besoin d’une grande marge intérieure, mais que les éléments imbriqués doivent avoir un espacement compact. Un sélecteur de descendant atteint toutes les profondeurs, sauf si une autre condition restreint sa portée.

Suivre les éléments frères suivants
<article>
  <h2>Opening hours</h2>
  <p>Visit in the morning.</p>
  <aside>Closed on holidays.</aside>
  <p>Booking is optional.</p>
</article>

h2 + p correspond au paragraphe qui invite à venir le matin. Il ne saute pas le aside pour trouver un autre paragraphe. h2 ~ p correspond aux deux paragraphes, car tous deux suivent le titre et partagent son parent. Si un paragraphe se trouvait à l’intérieur du aside, il ne serait pas un élément frère du titre et ne correspondrait donc à aucun des deux sélecteurs.

Combiner les relations sans sélectionner trop largement

.sidebar > ul a:hover correspond aux liens survolés situés à n’importe quelle profondeur dans un ul dont le parent direct possède la classe sidebar. Lis de droite à gauche : un lien survolé ; dans une liste ; cette liste directement dans la barre latérale. L’espace autorise des éléments intermédiaires entre la liste et le lien.

Les combinateurs n’ajoutent aucune spécificité. Les parties du sélecteur qui désignent des éléments, des classes, des identifiants ou d’autres correspondances en ajoutent toujours. Les longues chaînes peuvent donc rendre les règles plus difficiles à maintenir, même si les symboles de relation n’ajoutent aucun point : modifier l’imbrication HTML peut empêcher les correspondances. Une classe descriptive sur la cible, comme .menu-link, exprime souvent plus clairement un rôle réutilisable.

Lorsqu’une règle ne trouve pas de correspondance, inspecte l’arbre réel au lieu de te fier aux espaces visibles. Deux éléments peuvent apparaître côte à côte à l’écran tout en ayant des parents différents dans le HTML. Les commentaires et les espaces ne comptent pas comme des éléments frères pour ces combinateurs.

Points clés

  • Un espace atteint les descendants à toute profondeur ; > atteint les enfants directs.
  • + atteint l’élément frère immédiatement suivant ; ~ atteint les éléments frères correspondants situés plus loin.
  • Le sélecteur le plus à droite désigne l’élément mis en forme.
  • Les combinateurs n’ajoutent aucune spécificité, mais les longues chaînes de sélecteurs dépendent fortement de la structure HTML.
3

Détermine la déclaration qui l’emporte

Plusieurs règles peuvent correspondre à un élément et chacune peut contribuer à une partie différente de son apparence. La cascade choisit une valeur pour chaque propriété par une série de comparaisons. La spécificité ne compte qu’après une égalité dans les comparaisons prioritaires. L’héritage permet ensuite aux styles de texte de se transmettre dans la page sans écrire une règle pour chaque élément. Distinguer ces rôles facilite l’explication et la correction d’une déclaration barrée.

3.1 La cascade, les styles en ligne et les couches

La cascade choisit une déclaration gagnante pour chaque propriété de chaque élément. Elle ne choisit pas une règle entière en rejetant toutes les autres. Avec p { color: gray; font-size: 18px; } et .lead { color: black; }, un paragraphe de classe lead peut prendre sa couleur dans la règle de classe et sa taille dans la règle de type.

Comparer dans le bon ordre

Écarte d’abord les déclarations qui ne s’appliquent pas : leurs sélecteurs doivent correspondre et les éventuelles conditions doivent être remplies. Compare ensuite l’origine et l’importance, y compris la priorité des couches de cascade. Les styles en ligne normaux de l’auteur sont prioritaires sur les règles normales de ses feuilles de style. Lorsque des déclarations restent à égalité après ces étapes, compare la spécificité ; utilise l’ordre d’apparition s’il reste une égalité.

Origine d’une déclaration normalePriorité
Auteur : le CSS du siteLa plus élevée des trois
Utilisateur : les styles personnalisés d’un lecteurEntre l’auteur et le navigateur
Navigateur : ses valeurs par défautLa plus faible

Deux règles .button de même priorité qui définissent des couleurs d’arrière-plan différentes sont départagées par l’ordre : la dernière l’emporte. Les feuilles de style reliées plus loin dans le HTML viennent aussi plus tard pour ces égalités. Un fichier qui arrive plus vite par le réseau ne vient pas pour autant plus tard dans la cascade.

Comprendre l’importance avant de l’ajouter

Une déclaration en ligne comme style="color: purple;" l’emporte sur les sélecteurs normaux des feuilles de style de l’auteur, même sur ceux qui contiennent des identifiants. Une déclaration !important d’une feuille de style de l’auteur peut l’emporter sur cette déclaration en ligne normale.

<p class="note" style="color: purple;">Check the time.</p>
p { color: gray !important; }
.note { color: blue; }

Le paragraphe est gris. L’importance est comparée avant la spécificité du sélecteur ou l’avantage du style en ligne normal. Si la couleur en ligne comporte elle aussi !important, cette déclaration en ligne importante l’emporte sur la règle importante de la feuille de style de l’auteur.

Pour les déclarations importantes, la priorité des origines s’inverse : les déclarations importantes du navigateur l’emportent sur celles de l’utilisateur, qui l’emportent sur celles de l’auteur. Cela protège les règles que les lecteurs ou les navigateurs doivent imposer. Au sein d’une même origine, la priorité des styles en ligne et celle des couches viennent toujours avant la spécificité et l’ordre dans le code source.

Utiliser !important pour chaque conflit crée des styles de plus en plus difficiles à remplacer. Préfère un sélecteur plus simple ou un ordre choisi. Remplacer des règles tierces que tu ne peux pas modifier peut justifier une déclaration importante ; cela doit rester une exception réfléchie.

Regrouper les règles en couches de cascade
@layer reset, base, components;
@layer base {
  p { margin: 0 0 1rem; }
}

Cela déclare l’ordre des couches avant leurs règles. Pour les déclarations normales, les couches ultérieures l’emportent sur les couches antérieures, quelle que soit la spécificité des sélecteurs. Les règles normales hors couche l’emportent sur les règles normales placées dans des couches. Une règle de composant de faible spécificité peut donc remplacer une règle de base très spécifique sans ajouter d’identifiants.

Les déclarations importantes inversent cet ordre des couches : les couches antérieures l’emportent sur les suivantes, et les déclarations importantes placées dans des couches l’emportent sur celles qui sont hors couche. Cette inversion préserve les protections importantes des couches de base. Lorsque tu examines un conflit, détermine l’origine, l’importance et le groupe de couches gagnants avant de consacrer du temps à compter les parties des sélecteurs.

Points clés

  • La cascade sélectionne les déclarations séparément pour chaque propriété.
  • L’origine, l’importance, la priorité des styles en ligne et celle des couches viennent avant la spécificité.
  • Les styles en ligne normaux de l’auteur l’emportent sur les règles normales de ses feuilles de style.
  • !important modifie la priorité ; il n’ajoute pas de spécificité.
  • Pour les déclarations normales, les couches ultérieures et les règles hors couche sont prioritaires ; pour les déclarations importantes, cette priorité s’inverse.
  • L’ordre d’apparition ne départage les déclarations qu’après une égalité dans les comparaisons précédentes.

3.2 Calculer la spécificité sans deviner

La spécificité mesure le poids d’un sélecteur pour cibler un élément. Compare-la uniquement entre les déclarations encore à égalité aux étapes précédentes de la cascade, notamment pour l’origine, l’importance, la couche et la priorité des styles en ligne.

Compter trois colonnes

Écris la spécificité sous la forme identifiants-classes-types, comme 0-1-1.

ColonneÉléments à compter
IdentifiantsSélecteurs d’identifiant comme #menu
ClassesClasses, sélecteurs d’attribut et pseudo-classes ordinaires
TypesSélecteurs de type et pseudo-éléments

Le sélecteur universel * et les combinateurs n’ajoutent rien. Pour a[href^="https"]:focus, compte zéro identifiant, deux éléments dans la colonne des classes (l’attribut et :focus) et un dans celle des types (a). Le résultat est 0-2-1.

Autres exemples : .nav a vaut 0-1-1 ; ul li a:hover vaut 0-1-3 ; #main .card > h2 vaut 1-1-1 ; article p::first-line vaut 0-0-3. Un pseudo-élément compte dans les types même si son nom commence par des signes deux-points.

Comparer à partir de la gauche

Compare d’abord les identifiants. En cas d’égalité, compare les classes ; si elles sont aussi à égalité, compare les types. Seuls des triplets égaux passent à l’ordre dans le code source. Ce sont des décomptes distincts, pas les chiffres d’un nombre décimal : 0-11-0 perd tout de même face à 1-0-0. Des classes supplémentaires ne se reportent pas dans la colonne des identifiants.

<nav id="site-nav">
  <a class="active" href="/">Home</a>
</nav>
#site-nav a { color: white; }
nav a.active { color: orange; }
.active { color: yellow; }

Supposons que ce sont des déclarations normales dans la même couche de l’auteur. Leurs scores sont 1-0-1, 0-1-2 et 0-1-0. La première l’emporte : le lien est donc blanc. Sa colonne des identifiants tranche la comparaison avant que les nombres de classes ou de types ne comptent.

#site-nav .active l’emporterait avec 1-1-0, mais une conception fondée sur des classes est plus facile à étendre : .site-nav a peut fournir le style de base, et .site-nav .active modifier le lien actif. Cela maintient une spécificité faible et assez homogène.

Connaître les exceptions des fonctions

:is(), :not() et :has() n’ajoutent aucun poids pour la fonction elle-même. Leur argument le plus spécifique fournit le poids. Ainsi, li:not(.done) vaut 0-1-1, et :is(#intro, p) a vaut 1-0-1. Compte le sélecteur le plus spécifique de la liste d’arguments, pas celui qui te semble visuellement le plus proche de l’élément.

:where() et tout son contenu contribuent toujours pour zéro. :where(#main) p obtient donc le score 0-0-1. Cette fonction est utile pour les styles par défaut qui doivent être faciles à remplacer.

La distance jusqu’à un ancêtre ne compte pas. body h1 et html h1 ont tous deux le score 0-0-2 : une déclaration ultérieure départage donc leur égalité. Les styles en ligne sont traités avant la spécificité des sélecteurs, et !important relève de l’importance. Aucun des deux n’est une partie ordinaire de sélecteur à ajouter au triplet.

Points clés

  • Compte les identifiants, puis les classes, attributs et pseudo-classes, puis les types et pseudo-éléments.
  • Compare les triplets colonne par colonne ; une colonne moins prioritaire ne peut pas l’emporter sur une colonne plus prioritaire.
  • Les combinateurs et * ajoutent zéro.
  • :is(), :not() et :has() prennent leur argument le plus spécifique ; :where() contribue pour zéro.
  • La distance jusqu’à un ancêtre n’affecte pas la spécificité.

3.3 Valeurs héritées et réinitialisations choisies

L’héritage permet à un enfant de recevoir une valeur de son parent lorsque la propriété est normalement héritée et qu’aucune déclaration ne fournit une valeur différente sur l’enfant. C’est pourquoi une seule règle sur le corps peut définir la couleur et la police du texte pour une grande partie de la page.

Distinguer le texte hérité des réglages de boîte

La plupart des propriétés du texte sont héritées : color, les propriétés de police, line-height, letter-spacing, text-align et text-transform. Les styles de liste et visibility sont également hérités. Les propriétés de boîte comme les marges extérieures et intérieures, les bordures, la largeur, la hauteur, les arrière-plans, l’affichage et le dimensionnement des boîtes ne le sont pas.

body { color: #222222; font-family: Georgia, serif; }
h1, h2 { font-family: Arial, sans-serif; }
footer { color: #666666; }

Le texte ordinaire du corps utilise Georgia en gris foncé. Les titres reçoivent la famille de polices qui leur est directement attribuée et conservent la couleur héritée. Le texte du pied de page hérite de Georgia tandis que sa couleur change localement.

L’arrière-plan transparent d’un enfant laisse apparaître celui de son parent ; cela ne signifie pas que l’enfant a hérité de la couleur d’arrière-plan. De même, les enfants d’une boîte bordée ne reçoivent pas automatiquement leurs propres bordures.

Les valeurs attribuées directement priment sur les valeurs héritées

Avec #content { color: red; } et p { color: blue; }, un paragraphe dans la zone de contenu est bleu. La spécificité de l’identifiant ne concurrence pas la règle du paragraphe, car les déclarations ciblent des éléments différents. Le paragraphe a déjà une couleur attribuée directement : il n’a donc pas besoin du rouge hérité.

Les enfants héritent généralement des valeurs calculées. Si une section a font-size: 20px et son enfant font-size: 0.8em, la taille calculée de cet enfant est 16px. Un paragraphe à l’intérieur hérite de 16px ; il ne multiplie pas une seconde fois par 0.8. Une hauteur de ligne sans unité est utile, car la valeur héritée reste un multiplicateur de la taille de police propre à chaque enfant.

Choisir le sens d’une réinitialisation
Mot-cléEffet
inheritPrendre la valeur calculée du parent
initialUtiliser la valeur initiale de la propriété CSS
unsetHériter pour une propriété héritée ; réinitialiser les autres
revertAnnuler les styles de l’origine actuelle
revert-layerAnnuler les styles de la couche de cascade actuelle

Pour le CSS de l’auteur, revert laisse apparaître les styles de l’utilisateur ou du navigateur. La différence compte sur un div : display: initial donne la valeur initiale inline de la propriété, tandis que display: revert rétablit son affichage block habituel dans le navigateur. Une valeur initiale appartient à la propriété CSS ; une valeur par défaut du navigateur peut dépendre de l’élément HTML.

inherit fonctionne même sur une propriété qui n’est normalement pas héritée, comme dans border: inherit. button, input { font: inherit; } remplace les polices directement attribuées aux contrôles par celle de leur parent. all: unset réinitialise presque toutes les propriétés à la fois, ce qui supprime aussi une apparence intégrée utile.

Un soulignement est une exception apparente. text-decoration n’est pas héritée, mais le soulignement d’un parent est tracé sous ses descendants en ligne. Définir text-decoration: none sur un span imbriqué ne peut pas effacer la ligne du parent. Supprime-la du parent et applique-la uniquement au texte qui doit être souligné.

Points clés

  • La plupart des propriétés du texte sont héritées ; les propriétés de boîte ne le sont généralement pas.
  • Une valeur attribuée directement à un enfant est prioritaire sur une valeur héritée du parent.
  • initial désigne la valeur initiale CSS ; revert peut rétablir les valeurs par défaut du navigateur pour l’élément.
  • unset choisit l’héritage ou la réinitialisation selon la propriété.
  • revert-layer retire la couche actuelle du choix de valeur pour cette propriété.
  • Le soulignement d’un parent est tracé sous ses descendants en ligne sans être hérité.
4

Écris des couleurs et choisis des unités utiles

Les valeurs CSS doivent avoir un sens clair et être écrites correctement. Une couleur peut s’écrire par son nom, par les valeurs de ses canaux ou par sa teinte, et la transparence modifie ce que le lecteur voit finalement. Une longueur peut suivre le texte, un conteneur ou la fenêtre du navigateur. Apprends à quelle référence chaque unité se rapporte, puis calcule la valeur avant de la vérifier dans le navigateur. Ces choix aident à garder les styles lisibles lorsque le contenu et les réglages du lecteur changent.

4.1 Valeurs de couleur, canal alpha et contraste

color définit la couleur du texte. Les arrière-plans, bordures, contours, décorations et ombres acceptent aussi des valeurs de couleur. Une même couleur peut s’écrire sous plusieurs formes ; choisis une notation qui facilite la compréhension du changement souhaité.

Lire les noms et les canaux hexadécimaux

CSS compte environ 150 couleurs nommées, dont navy, tomato et rebeccapurple. Les noms sont pratiques pour des essais rapides, mais leur sens courant peut surprendre : green vaut #008000, tandis que le vert pur vif est lime, soit #00ff00. Les valeurs exactes suppriment cette incertitude.

Une couleur hexadécimale à six chiffres comporte trois paires de canaux : rouge, vert et bleu. Chaque paire va de 00 à ff, ce qui équivaut à 0 jusqu’à 255. Toutes les valeurs à zéro donnent du noir ; toutes au maximum donnent du blanc. Des paires égales produisent un gris, comme dans #808080.

La notation hexadécimale à trois chiffres double chaque chiffre : #f0a se développe en #ff00aa. Elle n’ajoute pas de zéros. Une couleur comme #1e90ff ne peut pas être abrégée, car toutes ses paires ne répètent pas leur chiffre. Les lettres hexadécimales majuscules et minuscules représentent les mêmes valeurs.

Pour convertir une paire, multiplie son premier chiffre par 16 et ajoute le second. Les lettres a à f représentent 10 à 15. Pour #1e90ff, 1e donne 30, 90 donne 144 et ff donne 255. La notation RVB correspondante est rgb(30 144 255). Du code plus ancien peut utiliser des virgules ou rgba() ; ces formes fonctionnent toujours.

Décrire la teinte ou la transparence

hsl() indique la teinte, la saturation et la luminosité. La teinte est un angle : 0 ou 360 est rouge, 120 vert et 240 bleu. La saturation va du gris à 0 % à la couleur pleine à 100 %. La luminosité va du noir à 0 % au blanc à 100 %. Une teinte pure a une saturation de 100 % et une luminosité de 50 %, comme dans hsl(0 100% 50%). Modifier uniquement la luminosité produit des versions foncées et pâles apparentées.

Une valeur du canal alpha suit une barre oblique : rgb(0 0 0 / 0.6) est du noir à 60 % d’opacité. Zéro est entièrement transparent et un entièrement opaque. La notation hexadécimale à huit chiffres ajoute une paire pour le canal alpha : #00000080 a une valeur de 128 sur 255, soit environ 50 % pour le canal alpha. transparent est entièrement transparent.

.notice {
  color: white;
  background-color: rgb(0 0 0 / 0.6);
}

Ici, seul l’arrière-plan est partiellement transparent. opacity: 0.6 rendrait au contraire tout l’élément translucide, y compris son texte et ses enfants. Cette différence compte lorsque tu veux un texte opaque et lisible sur une surface teintée.

Réutiliser une couleur et vérifier le résultat

currentColor désigne la couleur du texte de l’élément lui-même. Avec color: #0055aa; border: 2px solid currentColor;, la bordure suit le texte. Modifier la couleur du texte modifie aussi cette bordure sans répéter une valeur de couleur.

Le niveau AA des WCAG 2.2 exige un contraste d’au moins 4,5:1 pour le texte normal et 3:1 pour le texte de grande taille, soit environ 24px ou environ 18,5px en gras. #767676 sur blanc donne environ 4,54:1 ; #999999 sur blanc donne environ 2,85:1 et ne satisfait à aucun des deux seuils. Utilise un vérificateur de contraste ou les outils de couleur du navigateur sur la paire réelle de couleurs du premier plan et de l’arrière-plan, en tenant compte de l’effet de la transparence.

Points clés

  • Les couleurs hexadécimales codent le rouge, le vert et le bleu ; la forme à trois chiffres répète chaque chiffre.
  • rgb() donne les canaux, tandis que hsl() donne la teinte, la saturation et la luminosité.
  • Le canal alpha d’une couleur d’arrière-plan affecte cette couleur ; opacity rend tout l’élément translucide.
  • currentColor suit la couleur du texte de l’élément.
  • Au niveau AA des WCAG, le texte normal exige un contraste d’au moins 4,5:1 et le texte de grande taille de 3:1.

4.2 Pixels et longueurs relatives

Une longueur associe un nombre à une unité, comme 16px ou 1.5rem. Il n’y a pas d’espace entre les deux. Une largeur non nulle a besoin d’une unité : width: 300; est invalide. Zéro peut être écrit sans unité. Certaines propriétés acceptent volontairement des nombres seuls, notamment line-height: 1.5, opacity: 0.8 et font-weight: 700.

Associer l’unité à sa référence
UnitéRéférence
pxUn pixel de référence CSS
em dans font-sizeLa taille de police du parent
em dans les espacements et autres longueursLa taille de police de l’élément lui-même
remLa taille de police de l’élément racine
%Une référence déterminée par la propriété
vw, vhLa largeur ou la hauteur de la zone d’affichage
chLa largeur du caractère zéro dans la police

Un pixel CSS n’est pas nécessairement un point physique de l’écran. Les écrans à haute densité peuvent utiliser plusieurs pixels de l’appareil pour un pixel CSS. Les relations fixes entre unités comprennent 1in = 96px = 2,54cm et 1pt = 1/72in. Ainsi, 12pt équivaut à 16px et 1cm à environ 37,8px. Ces conversions ne garantissent pas une mesure physique sur tous les écrans.

Calculer les valeurs relatives à la police

Supposons qu’un parent ait une police de 16px et que son enfant ait font-size: 1.25em; padding: 2em;. Calcule d’abord la taille de police : 1,25 fois 16px donne 20px. La marge intérieure utilise ensuite la taille de l’enfant lui-même : 2 fois 20px donne donc 40px de chaque côté.

Les tailles de police en em peuvent se multiplier dans les éléments imbriqués. Avec li { font-size: 1.25em; }, trois niveaux imbriqués partant de 16px donnent 20px, 25px et 31,25px. 1.25rem donne en revanche 20px à chaque niveau lorsque la taille racine est de 16px.

Laisser la taille racine à la valeur par défaut du navigateur, ou la définir en pourcentage, permet au texte en taille relative de s’adapter lorsqu’un lecteur modifie cette valeur par défaut. Une taille fixe html { font-size: 16px; } remplace ce réglage. Une pratique utile consiste à employer rem pour la taille de police et em pour la marge intérieure d’un bouton, afin que son espacement grandisse avec son propre texte.

Vérifier les pourcentages et la zone d’affichage

La propriété détermine la référence du pourcentage. Un bloc englobant fournit une référence pour les dimensions de la boîte ; dans ces exemples de flux normal, il s’agit généralement de la zone de contenu du parent. Un enfant avec width: 40% dans un bloc englobant de 600px mesure 240px de large avant l’ajout éventuel de marges intérieures ou de bordures dans le modèle content-box. font-size: 150% utilise la taille de police du parent. Même les marges intérieures et extérieures supérieure et inférieure en pourcentage utilisent la largeur du bloc englobant, et non sa hauteur.

1vw vaut 1 % de la largeur de la zone d’affichage ; 1vh vaut 1 % de sa hauteur. Dans une zone d’affichage de 1 280 × 800 pixels CSS, 50vw vaut 640px et 10vh vaut 80px. 100vw peut inclure la largeur de la barre de défilement et provoquer un débordement horizontal là où 100% du parent tiendrait.

max-width: 65ch donne à une colonne de texte une largeur liée à la police. C’est une mesure approximative de longueur de lecture, pas la garantie que chaque ligne comporte exactement 65 caractères.

Combiner des unités par un calcul

width: calc(100% - 40px); soustrait une quantité fixe d’une dimension relative. Garde des espaces autour de + et - ; calc(100%-40px) est invalide. Les navigateurs calculent les longueurs relatives à la police en pixels, tandis que les pourcentages de la taille du conteneur sont résolus pendant la mise en page. Les outils de développement affichent les dimensions obtenues afin que tu puisses vérifier la référence et le calcul.

Points clés

  • Accole directement les nombres à leurs unités ; zéro peut être écrit seul.
  • em utilise le parent pour la taille de police et l’élément lui-même pour les autres longueurs.
  • rem suit l’élément racine et évite la multiplication des tailles de police imbriquées.
  • La référence d’un pourcentage dépend de la propriété ; les marges intérieures en pourcentage utilisent la largeur du conteneur.
  • Les unités relatives à la zone d’affichage suivent la fenêtre ; ch suit la police.
  • Utilise des espaces autour de l’addition et de la soustraction dans calc().
5

Mesure les boîtes et règle les espacements

Chaque élément visible occupe de l’espace sous forme d’une boîte. La largeur que tu écris peut décrire uniquement le contenu ou toute la boîte jusqu’à la bordure, et les marges extérieures ajoutent une autre couche d’espacement autour. Le type d’affichage modifie les propriétés de dimension et d’espacement qui prennent effet. Apprends à calculer les dimensions d’une boîte avant de les modifier, puis explique les surprises courantes, comme une carte à pleine largeur qui déborde, un lien en ligne qui ignore sa largeur ou deux marges verticales qui se combinent.

5.1 Contenu, marge intérieure, bordure et marge extérieure

De l’intérieur vers l’extérieur, une boîte comporte un contenu, une marge intérieure, une bordure et une marge extérieure. Le contenu comprend du texte, des images ou des éléments enfants. La marge intérieure crée de l’espace autour de ce contenu. La bordure entoure la marge intérieure ; la marge extérieure sépare la boîte, bordure comprise, de ses voisines.

Un arrière-plan remplit le contenu et la marge intérieure et s’étend sous la bordure, mais ne colore jamais la marge extérieure. Utilise une marge intérieure lorsque l’espace doit faire partie d’une carte colorée. Utilise une marge extérieure pour l’espace autour. Les marges extérieures peuvent être négatives ; les marges intérieures ne le peuvent pas.

Lire les propriétés raccourcies d’espacement

margin, padding et border-width acceptent de une à quatre valeurs :

ValeursCôtés définis
10pxLes quatre
10px 20pxHaut et bas, puis gauche et droite
10px 20px 30pxHaut, gauche et droite, bas
10px 20px 30px 40pxHaut, droite, bas, gauche

L’ordre à quatre valeurs suit le sens des aiguilles d’une montre à partir du haut. Utilise des propriétés détaillées comme padding-left pour ne modifier qu’un côté après la propriété raccourcie. Ne lis pas la deuxième valeur d’une forme à deux valeurs comme le bas : elle définit les deux côtés horizontaux.

Calculer la boîte de contenu par défaut
.card {
  width: 300px;
  padding: 20px;
  border: 5px solid;
  margin: 10px;
}

La valeur initiale de box-sizing est content-box. La largeur déclarée de 300px ne couvre que le contenu. Ajoute deux fois 20px de marge intérieure et deux fois 5px de bordure : la boîte jusqu’à la bordure mesure 350px de large. Ajoute les deux marges extérieures de 10px pour obtenir 370px d’espace horizontal.

La hauteur fonctionne de la même façon lorsqu’elle est définie explicitement, mais le texte a souvent besoin d’une boîte qui peut grandir. Laisser height: auto évite d’enfermer un contenu changeant dans une hauteur fixe.

Inclure la marge intérieure et la bordure dans la largeur

Avec box-sizing: border-box, la même largeur déclarée inclut la marge intérieure et la bordure. La boîte jusqu’à la bordure reste à 300px ; soustrais 40px de marge intérieure et 10px de bordure pour trouver une zone de contenu de 250px. Les marges extérieures restent à l’extérieur, ce qui donne 320px d’espace horizontal.

Une réinitialisation courante applique ce modèle aux éléments et à leurs parties générées :

*, *::before, *::after { box-sizing: border-box; }

box-sizing n’est pas hérité automatiquement : la règle sélectionne donc directement les boîtes.

Un enfant à pleine largeur permet de voir facilement la différence. Dans un conteneur de 600px, width: 100%; padding: 0 20px; donne une boîte de 640px jusqu’à la bordure avec le dimensionnement content-box, avant même l’ajout d’une bordure. Avec le dimensionnement border-box, la même largeur déclarée de 600px inclut la marge intérieure et s’ajuste au conteneur.

Laisser le contenu tenir sans risque

min-height définit une hauteur minimale tout en permettant à la boîte de grandir. max-width: 800px permet à un bloc de largeur automatique de rétrécir dans un conteneur étroit tout en l’empêchant de dépasser 800px de large.

Si le contenu dépasse une boîte fixe, overflow contrôle le résultat : visible laisse déborder, hidden coupe, scroll demande des barres de défilement et auto permet le défilement si nécessaire. pre { overflow: auto; } donne à une longue ligne de code sa propre zone de défilement. Couper un texte dont les lecteurs ont encore besoin est une mauvaise solution ; vérifie d’abord si la dimension fixe est nécessaire.

Utilise le schéma de boîte du panneau des styles calculés pour comparer les valeurs de contenu, de marge intérieure, de bordure et de marge extérieure du navigateur avec ton calcul.

Points clés

  • La marge intérieure est à l’intérieur de la bordure ; la marge extérieure est à l’extérieur et reste transparente.
  • La largeur en content-box exclut la marge intérieure et la bordure.
  • La largeur en border-box inclut la marge intérieure et la bordure, mais jamais la marge extérieure.
  • Les propriétés raccourcies d’espacement suivent le sens des aiguilles d’une montre à partir du haut ; les formes courtes partagent leurs valeurs entre plusieurs côtés.
  • Utilise une hauteur souple et des dimensions limites pour accueillir un contenu changeant.
  • overflow contrôle le contenu qui dépasse de la boîte.

5.2 Affichage, centrage et fusion des marges

Le type d’affichage détermine comment une boîte s’insère parmi les éléments qui l’entourent. Un bloc commence normalement sur une nouvelle ligne et remplit la largeur disponible lorsque sa largeur est automatique. Une boîte en ligne ordinaire s’insère dans le texte et prend les dimensions de son contenu. Une boîte inline-block garde sa place en ligne tout en acceptant des dimensions explicites.

Choisir le comportement nécessaire
AffichageLargeur et hauteurComportement des espacements
blockS’appliquentLes marges extérieures et intérieures séparent les boîtes
inline ordinaireNe dimensionnent pas la boîteL’espacement horizontal affecte le texte voisin
inline-blockS’appliquentLes espacements verticaux et horizontaux affectent la mise en page environnante

Pour les éléments en ligne ordinaires comme span et a, les marges extérieures supérieure et inférieure n’ont aucun effet. Les marges intérieures et les bordures verticales sont dessinées mais ne repoussent pas les lignes voisines : elles peuvent donc les chevaucher. Les marges intérieures, bordures et marges extérieures horizontales occupent bien de l’espace le long de la ligne.

nav a {
  display: inline-block;
  padding: 8px 16px;
}

Ces liens restent sur une ligne tandis que leurs boîtes avec marge intérieure réservent de l’espace vertical. display: block donnerait à chaque lien sa propre ligne. Les images sont un cas particulier parmi les éléments en ligne : elles acceptent la largeur et la hauteur. Leur alignement par défaut sur la ligne de base peut laisser un petit espace en dessous pour les parties descendantes des lettres ; img { display: block; } supprime cet espace.

display: none supprime la boîte et l’espace qu’elle occupe, et la retire de la lecture par les lecteurs d’écran. visibility: hidden la masque tout en conservant son espace.

Centrer une boîte ou centrer son contenu
.page {
  max-width: 960px;
  margin: 0 auto;
}

Dans un conteneur plus large, le bloc cesse de grandir à 960px et les deux marges horizontales automatiques se partagent également l’espace restant. Un bloc qui remplit le conteneur n’a aucun espace horizontal restant à partager. Les marges automatiques ne centrent pas une boîte en ligne ordinaire, et les marges verticales automatiques valent zéro dans le flux normal des blocs.

text-align: center remplit un autre rôle : il centre le contenu en ligne dans un bloc. Une boîte de paragraphe centrée peut toujours avoir son texte aligné à gauche ; un paragraphe à pleine largeur peut avoir son texte centré sans devenir une boîte centrée plus étroite.

Reconnaître la fusion des marges verticales

Dans le flux normal des blocs, les marges supérieure et inférieure adjacentes peuvent fusionner. Deux marges positives deviennent la plus grande des deux. Un titre avec une marge inférieure de 24px suivi d’un paragraphe avec une marge supérieure de 16px laisse un espace de 24px, et non de 40px. Les marges horizontales ne fusionnent pas.

Avec des marges positives et négatives, combine la plus grande marge positive avec la plus négative : 20px et −8px donnent 12px. Si elles sont toutes négatives, la plus négative l’emporte. Une boîte vide sans contenu, hauteur, bordure ni marge intérieure pour les séparer peut voir ses propres marges supérieure et inférieure fusionner.

La marge supérieure d’un premier enfant peut aussi fusionner avec celle d’un parent sans bordure, marge intérieure ni contenu antérieur pour les séparer. L’espace apparaît alors à l’extérieur de l’arrière-plan du parent. Ajoute une marge intérieure ou une bordure au parent, ou supprime la marge supérieure de l’enfant. Des conditions similaires permettent à la marge inférieure d’un dernier enfant de fusionner ; une hauteur ou une hauteur minimale du parent peut empêcher cette fusion en bas.

Les marges des boîtes inline-block ne fusionnent pas, pas plus que celles des éléments flexibles ou de grille, ni celles des boîtes flottantes ou positionnées absolument. Une méthode simple pour espacer le texte consiste à mettre les marges supérieures à zéro et à utiliser les marges inférieures, avec des marges intérieures pour l’espace dans les conteneurs.

Points clés

  • Les boîtes en ligne ordinaires ignorent la largeur et la hauteur définies ; les boîtes inline-block les acceptent.
  • Des marges horizontales automatiques centrent un bloc plus étroit ; text-align centre son contenu en ligne.
  • Les marges verticales positives adjacentes de blocs peuvent fusionner pour donner la plus grande valeur.
  • Une marge intérieure sur le parent peut séparer la marge d’un premier enfant de celle du parent.
  • display: none supprime l’espace ; visibility: hidden le conserve.
6

Mets en forme un texte lisible et des surfaces soignées

Les polices, l’interligne et les états des liens influent sur le confort d’utilisation d’une page. Les arrière-plans, bordures et ombres distinguent ensuite ses boîtes sans changer leur sens. Construis des styles de texte avec des solutions de repli, garde le contenu essentiel dans le HTML et choisis une décoration qui sert le contenu. Les mêmes règles de boîte et de cascade s’appliquent toujours : une propriété raccourcie peut réinitialiser une graisse de police, une bordure peut ajouter de la largeur et un contour de focus peut montrer un état sans rien déplacer.

6.1 Piles de polices et polices web

Le choix d’une police est une préférence accompagnée d’une solution de repli. Les polices installées diffèrent d’un appareil à l’autre et une police téléchargée peut arriver après le texte. Une pile de polices garde la page lisible tout en conservant un style adapté.

Construire une pile
body {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 1rem;
}

Le navigateur essaie les noms de familles dans l’ordre et utilise une police disponible. Mets entre guillemets les noms contenant des espaces. Laisse les familles génériques sans guillemets : "sans-serif" demande une police portant exactement ce nom ; sans-serif demande au navigateur une police générique adaptée.

Les choix génériques comprennent serif, sans-serif, monospace, cursive, fantasy et system-ui. Ce dernier utilise la police de l’interface du système. Les polices souvent dites sûres pour le Web, comme Arial, Georgia et Verdana, sont courantes, mais leur présence n’est pas garantie. Une famille générique de repli reste nécessaire à la fin.

font-size accepte des longueurs, des pourcentages et des mots-clés de taille. Avec une taille racine de 16px, 1rem donne 16px et 2.5rem donne 40px. Les tailles relatives peuvent suivre les réglages du lecteur.

Définir soigneusement la graisse, le style et la propriété raccourcie

font-weight: normal équivaut à 400 ; bold équivaut à 700. Des valeurs comme 300 et 600 demandent d’autres graisses lorsque la police les propose. Si une graisse demandée est absente, le navigateur en choisit une disponible ou peut produire un faux gras. Si seules les graisses 400 et 700 sont chargées, demander 300 utilise 400. bolder et lighter sont relatifs au parent.

font-style: italic demande une version italique ; normal supprime ce style. La propriété raccourcie font exige à la fois une taille et une famille :

blockquote {
  font: italic 700 1.125rem/1.6 Georgia, serif;
}

Le style, la variante et la graisse facultatifs viennent avant la taille. Une barre oblique rattache la hauteur de ligne à la taille, et la famille vient en dernier. Omettre la taille ou la famille invalide la propriété raccourcie. Les autres réglages de police omis sont réinitialisés : font: 1rem Arial, sans-serif; ramène une graisse précédemment définie en gras à la normale.

Charger un fichier de police
@font-face {
  font-family: "Inter";
  src: url("fonts/inter-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
body { font-family: "Inter", Arial, sans-serif; }

@font-face attribue à un fichier un nom de famille CSS. Utilise ce nom déclaré dans la pile, pas le nom du fichier. Les chemins de fichiers relatifs partent de l’emplacement de la feuille de style. WOFF2 est un format compressé pris en charge par les navigateurs actuels.

Les polices statiques nécessitent généralement des fichiers et des règles distincts pour chaque graisse et chaque style. Les polices variables peuvent contenir une plage de graisses dans un seul fichier. Charge les fichiers réellement utilisés par la mise en forme. font-display: swap affiche immédiatement une police de repli et la remplace dès que la police web est disponible.

Un service de polices peut fournir un lien HTML et la déclaration de famille ; l’hébergement sur ton propre serveur évite une requête de police vers un serveur tiers. Vérifie que la licence de la police autorise son utilisation sur un site web. Si la police paraît incorrecte, inspecte la police affichée et la requête du fichier. Un nom de famille CSS mal orthographié entraîne silencieusement l’utilisation d’une police de repli : un texte lisible ne prouve donc pas à lui seul que la police souhaitée a été chargée.

Points clés

  • Écris une pile de polices avec une famille générique de repli sans guillemets.
  • La graisse dépend des versions ou des plages de graisses réellement disponibles.
  • La propriété raccourcie font exige une taille et une famille et réinitialise les réglages omis.
  • @font-face définit un nom de famille et le fichier qui fournit la police.
  • font-display: swap garde le texte visible dans une police de repli pendant le chargement d’une police web.

6.2 Hauteur de ligne, listes et états des liens

La mise en forme du texte doit résister aux changements de taille, de contenu et de méthode de saisie. Commence par la hauteur de ligne et des largeurs lisibles, puis ajoute aux listes et aux liens des détails qui indiquent aux lecteurs comment utiliser le contenu.

Adapter la hauteur de ligne à chaque taille de police

Utilise une hauteur de ligne sans unité comme line-height: 1.5. Avec un corps de texte de 16px, elle crée des lignes de 24px. Les enfants héritent du nombre : un titre de 32px obtient donc des lignes de 48px. Une valeur de 1.5em ou 150% sur le parent est au contraire calculée à 24px à cet endroit, et un enfant peut hériter de cette hauteur fixe de 24px même si son propre texte est plus grand. La valeur par défaut normal dépend de la police et se situe souvent autour de 1,2.

body { font: 1.125rem/1.6 Georgia, serif; color: #222222; }
h1 { font: 700 2.25rem/1.2 Arial, sans-serif; }
p { max-width: 65ch; }

Avec une taille racine de 16px, le corps du texte mesure 18px sur des lignes de 28,8px ; le titre mesure 36px sur des lignes de 43,2px. La limite imposée aux paragraphes évite les lignes très longues sur un écran large.

text-align positionne le contenu en ligne dans un bloc. Les valeurs comprennent left, right, center, justify, start et end ; start et end suivent le sens de l’écriture. Cette propriété ne déplace pas le bloc lui-même. La justification dans des colonnes étroites peut créer de grands espaces entre les mots.

Modifier la présentation sans réécrire le texte

text-transform peut afficher les mots en majuscules, en minuscules ou avec une majuscule initiale sans modifier le texte HTML. letter-spacing, word-spacing et text-indent contrôlent différents types d’espacement. text-shadow: 1px 1px 2px rgb(0 0 0 / 0.5); indique un décalage horizontal, un décalage vertical, un flou et une couleur.

text-decoration ajoute des lignes sous, au-dessus ou à travers le texte. Cette propriété peut aussi définir le style et la couleur, comme dans underline wavy crimson. L’épaisseur et le décalage du soulignement permettent d’affiner une ligne. Les lecteurs s’attendent à ce qu’un texte souligné soit un lien : réserve donc cette indication à cet usage.

Mettre en forme les listes sans retrait involontaire

list-style-type choisit des marqueurs comme disc, square, decimal ou lower-alpha. list-style-position: outside garde les marqueurs à l’extérieur du bloc de texte ; inside les place dans la première ligne, de sorte que les lignes suivantes peuvent commencer sous le marqueur. list-style-image fournit un marqueur sous forme d’image, et li::marker peut colorer le marqueur seul.

Pour une liste de navigation simple, utilise .menu { list-style: none; margin: 0; padding: 0; }. Supprimer les marqueurs seuls laisse la marge intérieure par défaut au début de la liste. list-style: square inside est une propriété raccourcie qui combine des réglages de marqueur.

Garder les liens visibles pendant leur utilisation

Ordonne les règles d’état de même spécificité ainsi : lien, visité, focus, survol, actif. Un lien peut être à la fois visité et survolé ; l’ordre dans le code source départage leurs déclarations de couleur concurrentes. :active désigne l’état pendant l’activation, pas la page courante.

Garde les liens reconnaissables par un moyen autre que la couleur seule, généralement un soulignement dans le texte courant. Donne au focus clavier un indicateur clair :

a:focus-visible {
  outline: 3px solid #f2a900;
  outline-offset: 2px;
}

Ne supprime pas le contour de focus à moins de le remplacer par un autre style de focus visible. Un contour n’occupe aucun espace dans le modèle de boîte : cette indication ne décale donc pas le texte environnant.

Points clés

  • Une hauteur de ligne sans unité transmet un multiplicateur qui suit la taille de police propre à chaque enfant.
  • text-align déplace le contenu en ligne dans un bloc, pas le bloc lui-même.
  • La transformation de la casse modifie l’apparence sans changer le texte HTML.
  • Supprimer les marqueurs d’une liste ne supprime pas sa marge intérieure par défaut.
  • Les états des liens peuvent se chevaucher ; garde les liens reconnaissables et le focus clavier visible.
  • Les contours montrent le focus sans modifier les dimensions des boîtes.

6.3 Images d’arrière-plan, redimensionnement et couches

Un arrière-plan se trouve derrière le contenu d’une boîte. Sa couleur remplit le contenu et la marge intérieure et s’étend sous la bordure ; la marge extérieure reste transparente. Une image est dessinée au-dessus de la couleur d’arrière-plan : une couleur peut donc fournir une surface fiable pendant le chargement de l’image.

Résoudre le chemin depuis la feuille de style
.hero {
  background-color: #1a2b3c;
  background-image: url("../images/hero.jpg");
}

Si le CSS se trouve dans css/styles.css et l’image dans le dossier images à la racine du site, .. sort de css avant d’entrer dans images. Une URL d’image CSS part du fichier CSS, contrairement au lien vers la feuille de style, qui part du fichier HTML. Vérifie la requête de l’image si une règle valide n’affiche que sa couleur de repli.

Les arrière-plans sont décoratifs. Un lecteur d’écran ne les annonce pas comme des images. Place une image informative dans le HTML avec une alternative textuelle qui a un sens. Une couleur de repli proche de la couleur dominante de l’image aide aussi le texte à rester lisible si l’image est lente à charger ou absente.

Contrôler la répétition, la taille et la position

Par défaut, les images se répètent à leur taille naturelle. no-repeat utilise une copie ; repeat-x crée une rangée et repeat-y une colonne. space répartit des copies entières avec des espaces, tandis que round les ajuste pour qu’un nombre entier tienne dans l’espace.

TailleRésultat
coverRemplit toute la boîte en conservant les proportions ; un recadrage est possible
containFait tenir toute l’image en conservant les proportions ; des espaces peuvent rester vides
200px 100pxDéfinit explicitement les deux dimensions
50% autoDéfinit une largeur relative et conserve les proportions de l’image

Pour une boîte de 800px sur 400px et une image carrée de 1 000px de côté, cover redimensionne l’image à 800px de côté, laissant 400px de sa hauteur à l’extérieur de la boîte. Contain la redimensionne à 400px de côté ; avec no-repeat, 400px de la largeur de la boîte restent à découvert. Définir uniquement contain ne désactive pas la répétition.

La position initiale est en haut à gauche. background-position: center centre une image ; right 20px bottom 10px la décale depuis ces bords. La valeur horizontale vient en premier. Associer center à cover garde le milieu visible lorsqu’un recadrage est nécessaire.

Générer et superposer des images

Un dégradé est une image : place-le donc dans background-image :

background-image: linear-gradient(to right, #1e90ff, #8a2be2);

La première couleur est à gauche et la seconde à droite. Les angles et les positions des points de couleur offrent davantage de contrôle ; radial-gradient(circle, white, steelblue) se propage vers l’extérieur depuis le centre. Un dégradé dans background-color est invalide.

Sépare plusieurs images par des virgules ; la première est au-dessus. Un dégradé noir translucide placé avant une photo peut assombrir l’image sans rendre le texte translucide.

Utiliser la propriété raccourcie avec soin

background: url("hero.jpg") center / cover no-repeat #1a2b3c; combine une image, une position, une taille, une répétition et une couleur. La taille suit la position après une barre oblique. Seule la dernière couche peut avoir une couleur. Les réglages d’arrière-plan omis sont réinitialisés : un background: white; placé plus tard supprime donc une image précédente.

La valeur initiale de background-attachment est scroll : l’arrière-plan se déplace avec l’élément lorsque la page défile. fixed garde l’arrière-plan attaché à la zone d’affichage. Teste la boîte et le texte réels après avoir ajouté une décoration ; le redimensionnement et le recadrage ne doivent pas masquer les informations nécessaires aux lecteurs.

Points clés

  • Les chemins des images CSS sont résolus depuis l’emplacement de la feuille de style.
  • cover remplit la boîte et peut recadrer l’image ; contain fait tenir toute l’image et peut laisser des espaces vides.
  • Les images d’arrière-plan se répètent sauf si la répétition est modifiée.
  • Les dégradés sont des images et la première image d’arrière-plan est dessinée au-dessus.
  • La propriété raccourcie background utilise une barre oblique entre la position et la taille et réinitialise les réglages omis.
  • Place les images informatives dans le HTML ; les arrière-plans servent à la décoration.

6.4 Bordures, coins arrondis, contours et ombres

Une bordure fait partie du modèle de boîte. Un contour ou une ombre est dessiné autour de la boîte sans réserver d’espace supplémentaire. Le choix entre ces éléments modifie à la fois l’apparence et la manière dont le style affecte les dimensions.

Donner un style à une bordure
.note {
  border: 1px solid #cccccc;
  border-left: 4px solid crimson;
  padding-left: 12px;
}

La propriété raccourcie définit la largeur, le style et la couleur ; ces parties peuvent apparaître dans n’importe quel ordre. Le style initial de la bordure est none : définir uniquement la largeur et la couleur ne produit donc pas de bordure visible. Les styles comprennent solid, dashed, dotted, double, groove, ridge, inset et outset, ainsi que none et hidden.

Si la largeur est omise, elle vaut medium, généralement 3px dans les navigateurs actuels. Si la couleur est omise, elle vaut currentColor et correspond à celle du texte de l’élément. Les propriétés raccourcies par côté comme border-top et les propriétés détaillées comme border-left-color permettent d’ajouter une exception après une bordure générale. Par exemple, border-top: none ne supprime que le bord supérieur après une déclaration de bordure sur les quatre côtés.

Avec le dimensionnement content-box, une bordure de 2px de chaque côté ajoute 4px à la largeur et à la hauteur. Augmenter la largeur de la bordure au survol peut donc décaler le contenu voisin. Garde une largeur de bordure stable et change sa couleur, ou utilise un contour comme indication qui n’occupe aucun espace. Avec le dimensionnement border-box, une bordure plus épaisse utilise davantage l’intérieur de la boîte déclarée.

Arrondir les coins dans un ordre prévisible

border-radius: 8px arrondit tous les coins même lorsque la bordure elle-même est invisible. Avec quatre valeurs, l’ordre est supérieur gauche, supérieur droit, inférieur droit, inférieur gauche. Deux valeurs s’appliquent aux paires de coins opposés : la première aux coins supérieur gauche et inférieur droit, la seconde aux coins supérieur droit et inférieur gauche.

border-radius: 50% rend une boîte carrée circulaire et une boîte rectangulaire elliptique. Son propre arrière-plan est découpé selon ce bord arrondi. Le rayon ne découpe pas lui-même le contenu enfant qui déborde ; le contrôle de ce débordement est un réglage distinct. Le rayon n’ajoute rien aux dimensions mesurées de la boîte.

Ajouter une ligne de focus ou de la profondeur
.link:focus-visible {
  outline: 3px solid navy;
  outline-offset: 2px;
}

Un contour est dessiné à l’extérieur de la bordure et n’occupe aucun espace dans la mise en page. Son décalage crée un espace avec la bordure. C’est une indication de focus utile, car elle peut apparaître sans déplacer les boîtes voisines.

box-shadow: 0 2px 6px rgb(0 0 0 / 0.2); donne un décalage horizontal nul, un décalage de 2px vers le bas, un flou de 6px et une couleur noire translucide. Une valeur d’étalement facultative vient après le flou. inset dessine l’ombre à l’intérieur ; des valeurs séparées par des virgules ajoutent plusieurs ombres. Les ombres suivent les coins arrondis et n’ajoutent aucun espace au modèle de boîte.

Vérifier une carte terminée

Une carte avec width: 280px; padding: 16px; border: 1px solid #dddddd; mesure 314px de large en dimensionnement content-box. Ajoute deux fois 16px et deux fois 1px à 280px. En dimensionnement border-box, elle reste à 280px et laisse 246px pour le contenu. Un rayon de courbure de 12px et une ombre douce ne changent aucun des deux calculs. Ils modifient le bord dessiné, pas les dimensions utilisées pour placer les autres boîtes.

Points clés

  • Une bordure visible a besoin d’un style comme solid.
  • Les bordures participent au dimensionnement des boîtes ; les contours et les ombres ne réservent aucun espace supplémentaire dans la mise en page.
  • Les rayons des coins suivent le sens des aiguilles d’une montre à partir du coin supérieur gauche ; les formes courtes associent des coins.
  • Un rayon de 50 % rend un carré circulaire et un rectangle elliptique.
  • Une ombre de boîte indique les décalages horizontal et vertical, puis le flou et l’étalement facultatifs, puis la couleur.

Sélecteurs et cascade CSS : exemples

6 Leçons Interactives

1

Fais fonctionner une feuille de style et inspecte-la

10 étapes
Relie une page à du CSS, suis une règle simple et détermine pourquoi une modification n’apparaît pas.
  1. 1
    IntroductionDu HTML porteur de sens à une page mise en forme

    Un titre et un paragraphe ont déjà des styles fournis par le navigateur. Tu vas leur donner une police et une couleur choisies, puis remonter du résultat jusqu’au CSS.

    La première tâche consiste à établir une liaison fiable entre les fichiers. Ensuite, une règle doit correspondre à l’élément, contenir une déclaration valide et l’emporter pour la propriété concernée. Traite ces points comme des vérifications distinctes lorsque la page ne change pas.

  2. 2
    ExempleRelier un fichier externe

    Supposons que index.html se trouve à côté d’un dossier nommé css, qui contient styles.css. Ajoute ceci dans le head du document HTML :

    <link rel="stylesheet" href="css/styles.css">
    

    Le chemin part du fichier HTML et entre dans le dossier CSS. Enregistrer des règles dans ce fichier externe permet à d’autres pages de se relier à la même présentation. Un chemin mal orthographié peut laisser le HTML lisible alors qu’aucun de ces styles de l’auteur ne se charge.

  3. 3
    ExplicationÉcrire et lire une règle

    Place ceci dans la feuille de style reliée :

    p {
      color: navy;
      font-size: 18px;
    }
    

    p sélectionne les paragraphes. Les accolades contiennent deux déclarations, chacune associant une propriété à une valeur. Les points-virgules séparent les déclarations. Recharge la page : un paragraphe correspondant reçoit un texte bleu marine et une taille de police de 18px, sauf si une déclaration plus prioritaire modifie l’une de ces propriétés.

  4. 4
    DéfiCorriger une valeur invalide

    Une règle indique p { font-size: 18 px; color: teal; }. Prévois son effet et corrige la déclaration de taille.

    ---reveal---

    La couleur bleu-vert peut s’appliquer, mais la déclaration de taille est invalide, car le nombre et l’unité d’une longueur doivent être accolés. Remplace-la par font-size: 18px;. Le navigateur ignore la déclaration invalide, pas tout le bloc : une couleur qui fonctionne ne prouve donc pas que la valeur de taille a été acceptée.

  5. 5
    Point cléRemarquer ce qu’une propriété raccourcie efface

    Ces déclarations ne conservent pas la photo :

    background-image: url("sky.jpg");
    background: lightblue;
    

    La propriété raccourcie réinitialise les propriétés d’arrière-plan qu’elle omet, y compris l’image. Écris d’abord une propriété raccourcie générale, puis l’exception sous forme de propriété détaillée lorsque les deux doivent être conservées. Cela explique une modification d’apparence valide qui disparaît même lorsque le chemin et le sélecteur sont corrects.

  6. 6
    LienConserver les valeurs par défaut utiles du navigateur

    Les grands titres, les espaces entre paragraphes et les marqueurs de liste sont déjà présents grâce à la feuille de style du navigateur. Tes règles modifient ce point de départ.

    body { margin: 0; } supprime un espace précis défini par défaut. Réinitialiser toutes les marges extérieures et intérieures supprime aussi l’espacement utile des paragraphes et le retrait des listes. Choisis le niveau de titre HTML pour son sens, puis modifie sa taille de police ; choisir un niveau de titre inférieur uniquement pour son apparence modifie la structure du document.

  7. 7
    ConseilInspecter une propriété avant de deviner

    Fais un clic droit sur le paragraphe et choisis Inspecter. Cherche sa règle dans le panneau Styles. Une règle absente suggère un problème de correspondance ou de chargement ; un avertissement suggère du CSS invalide ; une déclaration barrée a perdu dans la cascade.

    Le panneau des styles calculés montre les valeurs obtenues et le schéma de boîte. Teste une modification à cet endroit, puis enregistre-la dans ta feuille de style. Une modification faite uniquement pendant l’inspection est temporaire et disparaît lorsque le navigateur recharge les fichiers enregistrés.

  8. 8
    DéfiExpliquer un retrait de liste qui subsiste

    Une liste de navigation a list-style: none, mais ses éléments restent en retrait. La règle est valide et n’est pas barrée. Que dois-tu inspecter et modifier ?

    ---reveal---

    Inspecte la marge intérieure de la liste. Supprimer les marqueurs ne supprime pas sa marge intérieure par défaut au début. Réinitialise cette marge, généralement avec padding: 0, pour supprimer le retrait ; ajoute ensuite un espacement choisi si la présentation le nécessite. Le réglage des marqueurs et l’espacement de la boîte sont des propriétés distinctes.

  9. 9
    DéfiSuivre la modification qui a échoué

    Une page affiche toujours le style de paragraphe par défaut. Le panneau Réseau signale une requête en échec pour styles.css, alors que le fichier réel est css/styles.css. Que dois-tu corriger en premier et comment vérifier le résultat ?

    ---reveal---

    Corrige le lien vers la feuille de style dans le HTML pour qu’il indique css/styles.css. Recharge la page, confirme que la requête réussit, puis inspecte le paragraphe pour trouver la règle qui lui correspond. Augmenter la spécificité du sélecteur ne peut rien résoudre tant que la feuille de style qui le contient ne se charge pas.

  10. 10
    RécapitulatifUne méthode de débogage fiable

    Commence par une déclaration de type de document HTML valide et une feuille de style correctement reliée. Une règle doit ensuite avoir un sélecteur qui correspond à l’élément et des valeurs de propriétés valides. Les propriétés raccourcies peuvent réinitialiser des propriétés détaillées antérieures même lorsque toutes les déclarations sont valides.

    Utilise le panneau Réseau pour le chargement, le panneau Styles pour la correspondance et la priorité, et le panneau des styles calculés pour les dimensions finales. Enregistre les modifications testées avec succès dans le fichier CSS afin qu’elles survivent au rechargement. Les valeurs par défaut du navigateur font toujours partie de l’explication lorsque tes règles ne définissent pas une propriété.

2

Lis les sélecteurs en suivant l’arbre HTML

12 étapes
Fais correspondre des classes réutilisables, des états, des parties et des relations structurelles sans sélectionner d’éléments supplémentaires.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDécrire la sélection souhaitée
  2. 2
    ExempleRéutiliser une classe sur plusieurs éléments
  3. 3
    DéfiUn espace change la cible
  4. 4
    ConseilPartager des règles sans exiger d’imbrication
  5. 5
    ExplicationSélectionner selon les attributs et les états actuels
  6. 6
    ExempleCompter les éléments frères, pas seulement les paragraphes
  7. 7
    DéfiChoisir un marqueur sans remplacer le texte
  8. 8
    ExplicationTrouver les enfants directs dans une liste imbriquée
  9. 9
    ExempleSuivre les deux relations entre éléments frères
  10. 10
    DéfiGarder à l’esprit le parent commun
  11. 11
    DéfiCombiner emplacement et état
  12. 12
    RécapitulatifLire le sélecteur comme un test de correspondance
3

Suis un conflit de la priorité à l’héritage

13 étapes
Trouve les déclarations gagnantes, calcule la spécificité et distingue les valeurs locales des valeurs héritées.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionUn élément peut avoir plusieurs déclarations gagnantes
  2. 2
    ExplicationFiltrer avant de comparer
  3. 3
    ExempleDépartager une couleur en ligne
  4. 4
    Point cléUtiliser les couches avant des sélecteurs plus prioritaires
  5. 5
    DéfiNommer l’étape décisive
  6. 6
    ExempleCompter les parties du sélecteur par colonne
  7. 7
    ExplicationTraiter les sélecteurs fonctionnels
  8. 8
    DéfiComparer sans additionner les colonnes
  9. 9
    LienLaisser le texte hériter et les boîtes rester distinctes
  10. 10
    ExplicationChoisir la réinitialisation souhaitée
  11. 11
    DéfiDistinguer un enfant du sélecteur de son parent
  12. 12
    DéfiSuivre toute la décision
  13. 13
    RécapitulatifDonner à chaque décision son propre rôle
4

Choisis une couleur et calcule une dimension relative

10 étapes
Interprète les canaux de couleur et la transparence, puis suis les références à la police, au conteneur et à la zone d’affichage.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionLire la référence derrière la valeur
  2. 2
    ExempleDécoder trois canaux de couleur
  3. 3
    Point cléGarder un texte opaque sur un fond translucide
  4. 4
    DéfiVérifier le bon seuil
  5. 5
    ExempleCalculer la taille du texte avant son espacement
  6. 6
    LienÉviter la croissance répétée du texte imbriqué
  7. 7
    ExplicationDonner aux pourcentages la bonne référence
  8. 8
    DéfiAppliquer deux références différentes
  9. 9
    DéfiRelier la taille de police au contraste
  10. 10
    RécapitulatifChoisir ce que la valeur doit suivre
5

Mesure une carte et explique ses espacements

11 étapes
Calcule les dimensions dans les deux modèles de boîte, puis suis le comportement en ligne, le centrage et la fusion des marges.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionPartir du contenu et aller vers l’extérieur
  2. 2
    ExplicationNommer les quatre couches
  3. 3
    ExempleCalculer les dimensions d’une carte en content-box
  4. 4
    ExempleChanger ce que la largeur inclut
  5. 5
    DéfiCorriger un débordement à pleine largeur
  6. 6
    LienFaire accepter des dimensions à un lien
  7. 7
    ExemplePartager l’espace horizontal restant
  8. 8
    Point cléCombiner les marges verticales
  9. 9
    DéfiPrévoir un espace avec des marges de signes différents
  10. 10
    DéfiRecalculer la carte centrée
  11. 11
    RécapitulatifMesurer la couche à l’origine du problème
6

Crée un texte lisible et une carte soignée

15 étapes
Définis une police fiable, garde les liens utilisables et ajoute des arrière-plans et des bords sans réinitialisation ni changement de dimensions inattendus.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionDonner une fonction à chaque choix visuel
  2. 2
    ExplicationChoisir une pile de polices fiable
  3. 3
    ExempleCharger une version de police et garder le texte visible
  4. 4
    DéfiRepérer une réinitialisation due à la propriété raccourcie font
  5. 5
    ExempleGarder une hauteur de ligne proportionnelle
  6. 6
    ConseilGarder les menus et les liens compréhensibles
  7. 7
    DéfiDistinguer le bloc de son contenu
  8. 8
    ExempleSuivre un chemin d’arrière-plan
  9. 9
    ExempleAdapter une photo carrée à une boîte large
  10. 10
    Point cléSuperposer une teinte à une photo
  11. 11
    DéfiPréserver la photo entière
  12. 12
    ExplicationDessiner un bord sans déplacer ses voisins
  13. 13
    DéfiArrondir la boîte sans changer sa mesure
  14. 14
    DéfiTerminer une carte interactive stable
  15. 15
    RécapitulatifRelier la décoration aux règles sous-jacentes

Sélecteurs et cascade CSS : QCM

50 Questions Pratiques en 5 séries

Série 1 : Lis les règles et prévois des résultats simples10 Questions Pratiques

Question 1 sur 10

Une règle contient color: 18px; padding: 12px;. Que se passe-t-il pour ces déclarations ?
  1. Les deux déclarations sont ignorées.
  2. La couleur s’applique ; la marge intérieure est ignorée.
  3. La couleur est ignorée ; la marge intérieure s’applique.
  4. Les deux déclarations s’appliquent normalement.
Afficher la réponseMasquer la réponse
Réponse : C
18px est une longueur : ce n’est donc pas une valeur valide pour color et le navigateur ignore cette déclaration. La valeur de la marge intérieure est valide et s’applique toujours. Une valeur incorrecte n’invalide pas toutes les déclarations du même bloc : rejeter les deux ferait perdre un style qui fonctionne.

Question 2 sur 10

Une page ne contient aucun CSS de l’auteur, mais une liste est en retrait et ses éléments ont des puces. D’où viennent ces styles ?
  1. De la feuille de style du navigateur.
  2. Des marges héritées du texte de la liste.
  3. Des déclarations en ligne du fichier HTML.
  4. De la feuille de style automatique de l’éditeur.
Afficher la réponseMasquer la réponse
Réponse : A
Le navigateur fournit du CSS par défaut pour les éléments HTML, y compris les marqueurs et le retrait des listes. Aucune feuille de style de l’auteur n’est nécessaire pour que ces valeurs apparaissent. Les marges ne sont normalement pas héritées, et les marqueurs visibles de la liste ne prouvent pas que le fichier HTML contient des déclarations de style en ligne.

Question 3 sur 10

Un élément possède class="panel featured". Quel sélecteur exige les deux mots de classe sur ce même élément ?
  1. .panel .featured
  2. .panel, .featured
  3. panel.featured
  4. .panel.featured
Afficher la réponseMasquer la réponse
Réponse : D
Accoler les deux sélecteurs de classe sans espace exige qu’un seul élément satisfasse aux deux conditions. Un espace sélectionnerait un descendant featured à l’intérieur d’un panel, ce qui est une autre relation. Une virgule autoriserait chaque classe indépendamment et atteindrait donc aussi les éléments qui ne possèdent qu’une des classes requises.

Question 4 sur 10

Un article contient un h2, puis deux éléments p. Que sélectionne article p:first-child ?
  1. Uniquement le premier paragraphe.
  2. Aucun des deux paragraphes.
  3. Uniquement le second paragraphe.
  4. Les deux paragraphes.
Afficher la réponseMasquer la réponse
Réponse : B
:first-child vérifie si le paragraphe est le premier élément enfant de son parent. Le titre occupe cette place : aucun des deux paragraphes ne correspond donc. Sélectionner le premier paragraphe reviendrait à confondre le premier enfant avec le premier élément de son type ; p:first-of-type exprimerait cette autre demande dans cet article.

Question 5 sur 10

Deux règles normales de l’auteur hors couche sont .badge { color: teal; } suivie de .badge { color: maroon; }. Quelle couleur l’emporte ?
  1. Le bleu-vert.
  2. Le marron.
  3. La couleur du parent.
  4. La couleur par défaut du navigateur.
Afficher la réponseMasquer la réponse
Réponse : B
Les deux déclarations ont la même origine, la même importance, le même statut de couche et la même spécificité de sélecteur. La dernière déclaration l’emporte donc et donne du marron. Choisir le bleu-vert reviendrait à considérer la première déclaration comme permanente, alors que l’ordre dans le code source tranche cette égalité en faveur de la dernière déclaration applicable.

Question 6 sur 10

Quelle est la spécificité identifiants-classes-types de .panel > a:hover ?
  1. 0-1-2
  2. 0-2-2
  3. 1-1-1
  4. 0-2-1
Afficher la réponseMasquer la réponse
Réponse : D
La classe et la pseudo-classe de survol ajoutent chacune un point dans la colonne des classes, et a ajoute un point dans celle des types. Le combinateur d’enfant n’ajoute rien : le résultat est donc 0-2-1. Compter le combinateur comme un autre type donnerait à tort 0-2-2 ; les symboles de relation n’ajoutent aucun poids de spécificité.

Question 7 sur 10

Quelle couleur hexadécimale à six chiffres équivaut à #4bd ?
  1. #44bbdd
  2. #40b0d0
  3. #444bdd
  4. #4b4bdd
Afficher la réponseMasquer la réponse
Réponse : A
La notation hexadécimale à trois chiffres se développe en répétant chaque chiffre dans sa paire de canal : 4 devient 44, b devient bb et d devient dd. Le résultat est #44bbdd. Ajouter des zéros pour obtenir #40b0d0 modifie les valeurs des canaux et crée donc une autre couleur au lieu de développer la forme courte.

Question 8 sur 10

Un élément en content-box possède width: 240px; padding: 12px; border: 3px solid; margin: 8px;. Quelle est sa largeur jusqu’à la bordure ?
  1. 240px.
  2. 255px.
  3. 270px.
  4. 286px.
Afficher la réponseMasquer la réponse
Réponse : C
La largeur du contenu est de 240px, et les deux côtés ajoutent 24px de marge intérieure et 6px de bordure, soit 270px. Les marges latérales de 8px se trouvent à l’extérieur de la boîte jusqu’à la bordure. Les inclure donnerait 286px d’espace horizontal, ce qui correspond à une autre mesure que la largeur demandée.

Question 9 sur 10

Quelle pile de polices propose des choix nommés et une famille générique de repli fonctionnelle ?
  1. "Noto Sans", Arial, "sans-serif"
  2. "Noto Sans Arial", sans-serif
  3. "Noto Sans", "Arial sans-serif"
  4. "Noto Sans", Arial, sans-serif
Afficher la réponseMasquer la réponse
Réponse : D
Les noms de familles sont des choix distincts séparés par des virgules, et la famille générique sans-serif sans guillemets reste disponible lorsque les polices nommées sont absentes. Mettre cette famille générique entre guillemets en fait un nom de police littéral. La pile peut alors perdre la catégorie de repli prévue, même si la déclaration reste analysable.

Question 10 sur 10

Une section possède font-size: 20px; line-height: 1.4;. Son enfant h2 possède font-size: 1.5em et aucune déclaration de hauteur de ligne. Quelles sont la taille de police et la hauteur de ligne du titre ?
  1. Un texte de 30px sur des lignes de 42px.
  2. Un texte de 30px sur des lignes de 28px.
  3. Un texte de 20px sur des lignes de 28px.
  4. Un texte de 30px sur des lignes de 45px.
Afficher la réponseMasquer la réponse
Réponse : A
La taille de police du titre est de 1,5 fois les 20px de son parent : elle devient donc 30px. Il hérite du multiplicateur sans unité 1,4 et l’applique à sa propre taille, ce qui donne des lignes de 42px. Une hauteur de ligne de 28px résulterait de l’héritage d’une longueur calculée fixe, et non du nombre sans unité utilisé ici.
Série 2 : Applique les sélecteurs, les espacements et la décoration10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Le fichier HTML est /site/pages/team.html ; la feuille de style est /site/css/theme.css. Quel href relatif atteint la feuille de style ?
  1. css/theme.css
  2. ../css/theme.css
  3. ../pages/theme.css
  4. ../../css/theme.css
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une section contient un h3, un p, un aside, puis un autre p. Que sélectionne h3 ~ p dans cette section ?
  1. Uniquement le paragraphe suivant.
  2. Uniquement le dernier paragraphe.
  3. Le titre et les deux paragraphes.
  4. Les deux paragraphes frères.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un parent correspond à #article { color: olive; }, et son paragraphe enfant correspond à p { color: purple; }. Quelle couleur utilise le paragraphe ?
  1. Le violet de sa propre règle.
  2. L’olive de l’identifiant du parent.
  3. L’olive jusqu’à l’ajout d’une classe.
  4. La couleur par défaut du navigateur.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un paragraphe possède style="color: coral;" et correspond à .notice { color: indigo !important; } dans le CSS de l’auteur. Quelle couleur est utilisée ?
  1. Le corail.
  2. La couleur du parent.
  3. L’indigo.
  4. La couleur par défaut du navigateur.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

La taille de police d’un parent est de 18px. Son enfant possède font-size: 1.5em; padding: 0.5em;. Quelle marge intérieure est définie de chaque côté ?
  1. 9px.
  2. 27px.
  3. 13,5px.
  4. 36px.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Un lien reste une boîte en ligne ordinaire et width: 180px n’a aucun effet sur sa taille. Quelle valeur d’affichage le maintient au niveau en ligne tout en permettant cette largeur ?
  1. inline-block
  2. inline
  3. none
  4. block
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une carte en border-box possède width: 260px; padding: 18px; border: 2px solid;. Quelle est la largeur de sa zone de contenu ?
  1. 260px.
  2. 224px.
  3. 300px.
  4. 220px.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Une règle utilise background-color: linear-gradient(white, navy);. Pourquoi le dégradé ne s’affiche-t-il pas ?
  1. Un dégradé exige border-style.
  2. Un dégradé est une valeur d’image.
  3. Un dégradé exige une valeur de répétition.
  4. Les couleurs nommées sont des points invalides.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Une boîte possède border-width: 4px; border-color: teal; et aucune autre déclaration de bordure. Pourquoi aucune bordure n’est-elle visible ?
  1. La largeur initiale de la bordure est zéro.
  2. Le style initial de la bordure est none.
  3. La couleur de bordure exige une valeur alpha.
  4. La largeur exige un dimensionnement border-box.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Le CSS normal de l’auteur déclare @layer base, widgets;. Base contient #info { color: teal; } ; widgets contient .card { color: maroon; }. Une règle hors couche p { color: navy; } correspond aussi à <p id="info" class="card">. Quelle couleur l’emporte ?
  1. Le bleu-vert.
  2. Le marron.
  3. La couleur héritée.
  4. Le bleu marine.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Suis les valeurs dans des structures de pages concrètes10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Une déclaration fonctionne après sa modification dans les outils de développement, mais le changement disparaît au rechargement. Que dois-tu faire pour le conserver ?
  1. Enregistrer la déclaration fonctionnelle dans la feuille de style.
  2. Enregistrer une capture d’écran du panneau Styles.
  3. Recharger avec le même élément sélectionné.
  4. Déplacer l’élément vers un autre parent HTML.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une règle .alert.urgent ne correspond pas à <p class="alert"><span class="urgent">Update</span></p>. Quel sélecteur cible le span urgent uniquement lorsqu’il se trouve dans un élément alert ?
  1. .alert.urgent
  2. .alert, .urgent
  3. .alert .urgent
  4. p.alert.urgent
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un lien possède href="manual.PDF". Quel sélecteur correspond à une terminaison PDF quelle que soit la casse ?
  1. a[href^=".pdf" i]
  2. a[href=".pdf" i]
  3. a[href~=".pdf" i]
  4. a[href$=".pdf" i]
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un div class="tools" contient un ul directement enfant avec le lien A dans un li, ainsi qu’une section contenant un autre ul avec le lien B. Les deux liens sont survolés. À quoi correspond .tools > ul a:hover ?
  1. Au lien B uniquement.
  2. Au lien A uniquement.
  3. Aux deux liens A et B.
  4. À aucun des liens A et B.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Deux déclarations normales de l’auteur dans la même couche utilisent #menu a et .menu a.selected. Les deux correspondent à un lien. Quel sélecteur a la plus grande spécificité ?
  1. #menu a
  2. .menu a.selected
  3. Ils ont la même spécificité.
  4. L’ancêtre le plus proche décide.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Le CSS de l’auteur définit div { display: initial; }. Quelle valeur d’affichage le div reçoit-il de cette déclaration ?
  1. block
  2. inline-block
  3. none
  4. inline
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une légende utilise background-color: rgb(0 0 0 / 0.5); color: white; sur une photo. Un développeur remplace l’arrière-plan avec canal alpha par du noir opaque et ajoute opacity: 0.5 à la légende. Qu’est-ce qui change ?
  1. Seul l’arrière-plan reste translucide.
  2. Le texte devient aussi partiellement transparent.
  3. Le texte devient aussi noir opaque.
  4. La photo devient une partie de la légende.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un bloc englobant mesure 420px de large et 300px de haut. À quelle valeur padding-top: 10% est-il résolu sur son enfant ?
  1. 30px.
  2. 10px.
  3. 42px.
  4. 72px.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Dans le flux normal des blocs, deux marges verticales adjacentes fusionnent : la première vaut 26px et la seconde −9px. Quel espace en résulte ?
  1. 26px.
  2. 35px.
  3. 17px.
  4. −9px.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Une photo carrée est utilisée une seule fois, sans répétition, derrière une bannière de 900px sur 300px. Que se passe-t-il avec background-size: contain; background-position: center; ?
  1. Une image carrée de 300px laisse 300px de vide de chaque côté.
  2. Une image carrée de 900px perd 300px en haut et en bas.
  3. Une image de 900px sur 300px remplit la bannière par étirement.
  4. Une image carrée de 300px laisse les 600px à droite.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Départage les styles concurrents et les boîtes qui changent10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Quel commentaire CSS peut nommer un groupe de règles sans perturber le code ?
  1. // Article styles
  2. <!-- Article styles -->
  3. # Article styles
  4. /* Article styles */
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une règle h2, p..lead, blockquote { color: teal; } ne modifie aucun de ces éléments. Qu’est-ce qui explique ce résultat ?
  1. Une virgule exige que tous les sélecteurs correspondent à un seul élément.
  2. Un sélecteur invalide invalide la liste de sélecteurs ordinaire.
  3. Le sélecteur blockquote annule le sélecteur de titre.
  4. Une liste ne peut pas mélanger sélecteurs de classe et de type.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Une section contient <h2>News</h2><aside><p>A</p></aside><p>B</p><p>C</p>. Quels textes sont sélectionnés respectivement par h2 + p et h2 ~ p ?
  1. A ; B et C.
  2. B ; B et C.
  3. Aucun ; B et C.
  4. Aucun ; A, B et C.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Le CSS de l’auteur déclare @layer foundations, details;. Foundations contient .flag { color: teal !important; } ; details contient #notice { color: purple !important; } ; une règle hors couche contient p { color: navy !important; }. Toutes correspondent à un paragraphe. Quelle couleur l’emporte ?
  1. Le bleu-vert.
  2. Le violet.
  3. Le bleu marine.
  4. La couleur du parent.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une couleur de texte de taille normale sur fond blanc présente un contraste mesuré de 4,2:1. Quel est son résultat pour le contraste au niveau AA des WCAG ?
  1. Elle satisfait au minimum du texte normal.
  2. Elle échoue car tout texte exige 7:1.
  3. Elle réussit uniquement grâce au fond blanc.
  4. Elle ne satisfait pas au minimum du texte normal.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Un enfant en content-box possède width: 100%; padding: 0 15px; dans une zone de contenu de 480px de large, sans bordure ni marge extérieure. Quelle est sa largeur jusqu’à la bordure ?
  1. 480px.
  2. 510px.
  3. 495px.
  4. 450px.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

La boîte d’une carte mesure 360px de large jusqu’à la bordure. Sa règle est width: 320px; padding: 18px; border: 2px solid; avec un dimensionnement content-box. Elle doit rester large de 360px après le passage à border-box et l’augmentation de la marge intérieure à 24px. Quelles sont alors la largeur déclarée et la largeur du contenu ?
  1. 360px déclarés ; 308px de contenu.
  2. 320px déclarés ; 268px de contenu.
  3. 360px déclarés ; 312px de contenu.
  4. 372px déclarés ; 320px de contenu.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un élément reçoit d’abord font-weight: 700; font-style: italic;, puis font: 1.25rem/1.4 Arial, sans-serif;. Quelle graisse et quel style s’appliquent après la propriété raccourcie ?
  1. Une graisse grasse et un style italique.
  2. Une graisse normale et un style italique.
  3. Une graisse normale et un style normal.
  4. Une graisse grasse et un style normal.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Une liste de navigation possède list-style: none; mais ses éléments restent en retrait. Quelle règle supplémentaire supprime le retrait par défaut ?
  1. text-indent: 0;
  2. list-style-position: inside;
  3. text-align: start;
  4. padding: 0;
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Un lien inline-block utilise le dimensionnement content-box avec une bordure de 1px. Le survol doit afficher une indication plus marquée tout en conservant la largeur du contenu et toutes les dimensions de la boîte. Quelle modification satisfait à cette exigence ?
  1. Porter la largeur de la bordure à 3px.
  2. Ajouter un contour de 3px au survol.
  3. Passer au dimensionnement border-box.
  4. Ajouter 2px de marge intérieure de chaque côté.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 5 : Diagnostique et explique des combinaisons inédites10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Une requête de feuille de style réussit. Sa règle apparaît pour un span inspecté, et width: 160px est valide et n’est pas barré, mais le span n’est toujours pas plus large que son texte. Qu’est-ce qui l’explique ?
  1. La requête a utilisé la mauvaise feuille de style.
  2. Le span hérite de la largeur d’un parent.
  3. Le span est une boîte en ligne ordinaire.
  4. La marge du span masque sa largeur.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une liste possède exactement huit enfants li et aucun autre élément enfant. Quelles positions d’enfants correspondent à li:nth-child(3n+2) ?
  1. 2, 5 et 8.
  2. 3 et 6.
  3. 1, 4 et 7.
  4. 2, 4, 6 et 8.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Toutes les déclarations sont des règles normales de l’auteur hors couche. Un lien dans <section id="main"> correspond à :where(#main) a { color: teal; }, à :is(#spare, section) a { color: purple; }, puis à .chosen:hover { color: navy; }. Il possède la classe chosen et est survolé. Quelle couleur l’emporte ?
  1. Le bleu-vert.
  2. Le bleu marine.
  3. La couleur héritée.
  4. Le violet.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un conteneur possède color: maroon; background-color: beige;. Son enfant possède color: unset; background-color: unset; et aucun autre style pertinent. Quelles sont les valeurs propres de couleur et d’arrière-plan de l’enfant ?
  1. Un texte marron et un arrière-plan beige.
  2. Un texte marron et un arrière-plan transparent.
  3. La couleur initiale du texte et un arrière-plan transparent.
  4. La couleur initiale du texte et un arrière-plan beige.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

La taille de police racine est de 20px et un conteneur mesure 700px de large. Son enfant en border-box possède width: calc(100% - 4rem); padding: 1em; border: 2px solid; font-size: 1.5rem;. Quelle est la largeur du contenu de l’enfant ?
  1. 620px.
  2. 556px.
  3. 576px.
  4. 616px.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Un bloc de 500px de large n’a ni marge intérieure ni bordure. Son enfant n’a ni marge intérieure ni bordure et est un bloc ordinaire avec width: 320px; margin: 0 auto; text-align: center;. Quelles marges horizontales et quel alignement du texte obtient-on ?
  1. 180px de chaque côté ; texte centré.
  2. 90px de chaque côté ; texte aligné au début.
  3. Marges latérales nulles ; texte centré.
  4. 90px de chaque côté ; texte centré.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une police web est déclarée avec @font-face { font-family: "Lumen Sans"; src: url("fonts/lumen-regular.woff2") format("woff2"); }. Quel nom une pile de polices doit-elle utiliser pour demander cette version ?
  1. "Lumen Sans"
  2. "lumen-regular"
  3. "lumen-regular.woff2"
  4. "fonts/lumen-regular.woff2"
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Des règles de lien de même spécificité définissent d’abord a:hover { color: teal; }, puis a:visited { color: purple; }. Un lien visité est survolé. Quelle modification lui donne la couleur bleu-vert au survol tout en conservant la couleur violette de lien visité lorsqu’il n’est pas survolé ?
  1. Placer la règle de lien visité après celle du survol.
  2. Définir le violet sur le parent du lien.
  3. Placer la règle de survol après celle du lien visité.
  4. Remplacer :hover par :active dans la première règle.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Une page située à /site/index.html est reliée à /site/css/main.css. Ce CSS utilise background-image: url("images/banner.jpg");, mais l’image se trouve à /site/images/banner.jpg. Une règle ultérieure définit aussi background: navy;. Quelle correction conserve le bleu marine derrière l’image ?
  1. Modifier seulement l’URL en ../images/banner.jpg, en gardant l’ordre existant.
  2. Modifier seulement la propriété raccourcie en background-color: navy, en gardant l’URL existante.
  3. Écrire background: navy; avant background-image: url("images/banner.jpg");.
  4. Écrire background: navy; avant background-image: url("../images/banner.jpg");.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Une boîte rectangulaire mesure 160px sur 80px et possède border-radius: 50%. Quelle forme arrondie prend son arrière-plan ?
  1. Un cercle.
  2. Une ellipse.
  3. Un carré arrondi.
  4. Une forme de pilule aux côtés droits.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

84 Mots-Clés, chacun avec sa définition

A

Alignement du texte
L’alignement du texte positionne le contenu en ligne d’un bloc dans l’espace de sa ligne, avec des choix comme start, end, center et justify.
Centrer le texte dans un paragraphe à pleine largeur ne rend pas sa boîte plus étroite et ne déplace pas ses bords.

B

Boîte de bloc
Une boîte de bloc commence normalement sur une nouvelle ligne, accepte des dimensions et remplit la largeur disponible de son conteneur lorsque sa largeur est automatique.
Un paragraphe peut utiliser une largeur maximale et des marges latérales automatiques tout en gardant son texte aligné à gauche.
Boîte en ligne
Une boîte en ligne ordinaire s’insère dans une ligne de texte et prend sa largeur de son contenu, en ignorant une largeur et une hauteur explicites.
Un span ne devient pas large de 200px simplement parce qu’une règle lui attribue width: 200px tant qu’il reste en ligne.
Boîte inline-block
Une boîte inline-block s’insère dans une ligne de texte tout en acceptant des dimensions explicites et en réservant de l’espace vertical pour ses espacements.
Un lien de navigation peut gagner une zone cliquable avec marge intérieure sans forcer chaque lien à passer sur une ligne distincte.
Bordure
Une bordure est le bord mis en forme autour de la zone de marge intérieure d’une boîte ; elle possède une largeur, un style et une couleur et participe au dimensionnement de la boîte.
Deux bordures latérales de 2px ajoutent 4px à la largeur content-box d’une carte, même lorsqu’une ombre douce est aussi dessinée autour de cette carte.

C

Canal alpha
Le canal alpha est la composante d’opacité d’une valeur de couleur, allant de zéro pour une transparence totale à un ou 100 % pour une opacité totale.
Un arrière-plan dont le canal alpha vaut la moitié peut laisser apparaître une photo derrière lui tandis que le texte de l’élément reste entièrement opaque.
Cascade
La cascade est le processus ordonné qui choisit une déclaration gagnante pour chaque propriété de chaque élément lorsque des règles CSS sont en concurrence.
Un paragraphe peut prendre sa couleur dans une règle de classe et sa taille de police dans une règle distincte utilisant un sélecteur de type.
Combinateur de voisin adjacent
Le combinateur de voisin adjacent, +, sélectionne un élément correspondant situé immédiatement après un autre élément lorsque les deux partagent le même parent.
Le sélecteur h2 + p atteint un paragraphe d’introduction, mais ne lui correspond plus lorsqu’un aside apparaît entre les deux.
Combinateur de voisin général
Le combinateur de voisin général, ~, sélectionne les éléments frères correspondants situés après un élément, en autorisant d’autres éléments frères entre eux.
Le sélecteur h2 ~ p peut atteindre deux paragraphes séparés par un aside lorsque tous partagent le parent du titre.
Contenu généré
Le contenu généré est un texte ou une boîte décorative créé par des pseudo-éléments CSS au lieu d’être écrit comme un nœud de contenu HTML.
Un astérisque ajouté avec ::after a besoin d’une valeur content ; les consignes essentielles restent dans le HTML.
Contour
Un contour est une ligne dessinée à l’extérieur de la bordure d’une boîte sans réserver d’espace supplémentaire dans la mise en page ; il sert souvent à indiquer le focus clavier.
Un lien peut recevoir un contour de focus de 3px sans repousser le texte voisin comme le ferait une bordure content-box plus grande.
Couche d’arrière-plan
Une couche d’arrière-plan est une image dans une liste d’arrière-plans séparés par des virgules ; la première image de la liste est dessinée au-dessus des suivantes.
Une couleur sous toutes les couches d’images peut rester visible à travers les parties transparentes et les espaces non couverts.
Couche de cascade
Une couche de cascade est un groupe nommé de règles dont la priorité explicite par rapport aux autres couches est comparée avant la spécificité des sélecteurs.
Une classe normale dans une couche de composants peut l’emporter sur une règle à identifiant dans une couche de base lorsque la couche de composants vient plus tard.
Couleur hexadécimale
Une couleur hexadécimale écrit les valeurs des canaux rouge, vert et bleu en base 16, avec une paire supplémentaire facultative pour la transparence de la couleur.
Développer #3ac donne #33aacc, car chaque chiffre devient une paire répétée pour son propre canal.
Couleur RVB
Une couleur RVB précise les quantités de lumière rouge, verte et bleue, généralement sous forme de nombres de canal de 0 à 255 dans rgb().
La valeur rgb(30 144 255) donne les mêmes quantités par canal que la valeur hexadécimale à six chiffres #1e90ff.
Couleur TSL
Une couleur TSL décrit la teinte par un angle, ainsi que la saturation et la luminosité en pourcentage ; elle offre une autre notation d’une couleur.
Garder la teinte fixe tout en augmentant la luminosité peut transformer un bleu foncé en une version pâle de ce bleu.
CSS
CSS est un langage qui décrit la présentation des éléments HTML, notamment leurs couleurs, polices, espacements, bordures et arrière-plans.
Une page peut garder la même structure de titres tandis qu’une autre feuille de style modifie ses couleurs et sa typographie.

D

Débordement
Le débordement est le contenu qui dépasse les dimensions autorisées d’une boîte ; il est contrôlé par des valeurs comme visible, hidden, scroll et auto.
Un bloc de code avec overflow: auto peut faire défiler sa longue ligne sans élargir toute la page.
Décalage du contour
Le décalage du contour définit l’espace entre le contour d’un élément et sa bordure, ce qui modifie l’indication dessinée sans changer les dimensions de la boîte.
Un décalage de 2px sépare un contour de focus de la bordure d’un lien afin que les deux lignes restent visuellement distinctes.
Déclaration
Une déclaration est une propriété CSS et une valeur reliées par un signe deux-points, qui définissent une partie de l’apparence d’un élément dans une règle.
Dans color: navy;, la déclaration définit la couleur du texte et le point-virgule la sépare du réglage suivant.
Déclaration importante
Une déclaration importante est une déclaration CSS marquée par !important, ce qui lui donne la priorité sur les déclarations normales de la même origine.
Une couleur importante de l’auteur peut l’emporter sur une couleur en ligne normale même lorsque le sélecteur de la feuille de style est simplement p.
Décoration du texte
La décoration du texte trace des lignes sous le texte ou à travers lui, avec des réglages facultatifs de style, de couleur et d’épaisseur.
Un lien peut garder un soulignement comme indication reconnaissable tandis qu’une règle de survol augmente seulement l’épaisseur de la ligne.
Dégradé
Un dégradé est une image générée par le navigateur dont les couleurs changent le long d’une ligne ou vers l’extérieur depuis un centre ; il est utilisé comme valeur d’image.
Un dégradé translucide placé avant une photo peut l’assombrir sans appliquer d’opacité au texte superposé.
Descendant
Un descendant est un élément imbriqué à l’intérieur d’un autre élément, directement ou par l’intermédiaire d’un ou plusieurs éléments.
Le sélecteur nav a atteint un lien de navigation même lorsqu’une liste et un élément de liste se trouvent entre lui et le nav.
Dimensionnement des boîtes
Le dimensionnement des boîtes détermine si une largeur ou une hauteur déclarée mesure uniquement la zone de contenu ou inclut aussi la marge intérieure et la bordure.
Passer une carte à pleine largeur avec marge intérieure en border-box peut permettre à sa largeur extérieure de tenir à nouveau dans son conteneur.

É

Élément frère
Un élément frère est un élément qui partage le même parent qu’un autre élément ; les combinateurs de voisin utilisent leur ordre dans l’arbre HTML.
Un paragraphe dans un aside n’est pas un élément frère d’un titre situé hors de cet aside, même s’ils paraissent adjacents.
État :focus-visible
L’état :focus-visible correspond à un élément qui a le focus lorsque le navigateur détermine que le lecteur a besoin d’un indicateur de focus visible.
Un utilisateur du clavier peut voir un contour sur le lien sélectionné par a:focus-visible avant de l’activer.
État du lien
Un état du lien est une condition de correspondance, comme non visité, visité, avec focus, survolé ou actif, qui permet de sélectionner un lien pour le mettre en forme.
Un lien visité peut aussi être survolé : l’ordre des règles de couleur de même spécificité affecte donc son apparence.

E

Enfant
Un enfant est un élément directement imbriqué dans un élément parent, sans autre élément entre les deux dans l’arbre HTML.
Le sélecteur .menu > li exclut les éléments dont le parent est une liste imbriquée distincte dans le menu.

F

Famille de polices générique
Une famille de polices générique désigne une grande catégorie de polices servant de repli au navigateur, comme serif, sans-serif, monospace ou system-ui.
Mettre sans-serif entre guillemets en fait un nom de police littéral et lui retire son rôle de famille générique de repli dans la pile.
Feuille de style
Une feuille de style est un ensemble de règles CSS qu’un navigateur applique à un document, souvent enregistré dans un fichier distinct partagé par plusieurs pages.
Un lien HTML vers css/styles.css permet à une page de charger sa mise en forme depuis le fichier situé dans le dossier voisin.
Feuille de style du navigateur
Une feuille de style du navigateur est l’ensemble des règles CSS intégrées au navigateur qui donnent aux éléments HTML leur apparence par défaut.
De grands titres et des listes en retrait apparaissent sur une page HTML brute avant qu’un auteur n’ajoute une feuille de style.
Fonction calc()
La fonction calc() combine des valeurs CSS compatibles dans une expression et permet à une longueur de mélanger des quantités relatives et absolues.
La valeur calc(100% - 40px) retire une quantité fixe d’une largeur relative au conteneur, avec des espaces autour du signe moins.
Fusion des marges
La fusion des marges combine certaines marges verticales adjacentes de blocs en une seule marge, en utilisant la plus grande valeur positive et la valeur la plus négative.
Des marges positives adjacentes de 18px et 30px qui fusionnent créent un espace de 30px, tandis que les marges horizontales restent distinctes.

H

Hauteur de ligne
La hauteur de ligne définit la hauteur utilisée pour une ligne de texte ; une valeur sans unité agit comme un multiplicateur de la taille de police propre à l’élément.
Pour un texte de 20px, une hauteur de ligne sans unité de 1,5 donne des lignes de 30px et peut s’adapter aux enfants plus grands.
Héritage
L’héritage est le processus par lequel un élément reçoit la valeur de son parent pour une propriété héritée lorsqu’aucune valeur locale ne la remplace.
La famille de polices d’un corps de page peut atteindre les paragraphes ordinaires sans autre déclaration de police sur chacun d’eux.

I

Image d’arrière-plan
Une image d’arrière-plan est une image décorative dessinée derrière le contenu d’une boîte et au-dessus de sa couleur d’arrière-plan, dont la taille et la répétition sont réglables.
Une photo CSS peut ne pas se charger tandis que la boîte garde sa couleur de repli et que le texte reste dans le document.

L

Liste de sélecteurs
Une liste de sélecteurs est un groupe de sélecteurs séparés par des virgules qui partagent un bloc de déclarations tout en correspondant indépendamment aux éléments.
La règle pour h1, h2, h3 peut donner une même famille de polices aux trois niveaux de titres sans exiger d’imbrication.

M

Marge automatique
Une marge horizontale automatique absorbe l’espace restant à côté d’un bloc ; deux marges latérales auto égales permettent ainsi de centrer une boîte plus étroite.
Un bloc qui remplit déjà son conteneur ne peut pas se déplacer visiblement lorsque ses deux marges latérales sont définies à auto.
Marge extérieure
Une marge extérieure est un espace transparent situé hors de la bordure d’une boîte, utilisé pour la séparer des boîtes voisines et exclu de la largeur déclarée.
Un arrière-plan ne peut pas colorer l’espace créé par une marge extérieure : un espacement intérieur coloré nécessite donc une marge intérieure.
Marge intérieure
La marge intérieure est l’espace entre le contenu d’une boîte et sa bordure ; elle porte l’arrière-plan de la boîte et contribue à ses dimensions.
Augmenter la marge intérieure d’une carte crée de l’espace coloré autour de son texte plutôt qu’un espace extérieur transparent.
Marqueur de liste
Un marqueur de liste est la puce, le numéro ou un autre indicateur associé à un élément de liste, mis en forme par les propriétés de liste ou par ::marker.
Transformer un marqueur en carré ne supprime pas le retrait distinct défini par défaut sur le conteneur de liste.
Mode standard
Le mode standard est le mode de rendu des documents dans lequel le navigateur suit les normes web modernes ; il est sélectionné par une déclaration de type de document HTML valide.
Placer <!DOCTYPE html> en premier évite les anciens comportements qui peuvent affecter une page en mode de compatibilité.
Mot-clé currentColor
Le mot-clé currentColor représente la couleur du texte de l’élément lui-même lorsqu’une autre propriété de couleur a besoin d’une valeur correspondante.
Une bordure utilisant currentColor change avec la couleur du texte lorsqu’une règle de survol ne modifie que color.
Mot-clé inherit
Le mot-clé inherit donne explicitement à une propriété la valeur calculée de son parent, même lorsque cette propriété n’est normalement pas héritée.
Définir font: inherit sur les contrôles peut remplacer la police attribuée par le navigateur par celle du texte environnant.
Mot-clé initial
Le mot-clé initial sélectionne la valeur de départ d’une propriété dans la spécification CSS, indépendamment de la règle par défaut de l’élément HTML.
Appliquer display: initial à un div donne un affichage en ligne même si le navigateur l’affiche normalement en bloc.
Mot-clé revert
Le mot-clé revert annule pour une propriété les effets de l’origine de style actuelle et laisse apparaître une valeur applicable d’une origine moins prioritaire.
Une règle de l’auteur avec display: revert peut rétablir l’affichage en bloc normalement attribué à un div par le navigateur.
Mot-clé revert-layer
Le mot-clé revert-layer annule pour une propriété les effets de la couche de cascade actuelle afin qu’une source moins prioritaire puisse fournir sa valeur.
Une couche de composants peut annuler son réglage de couleur et laisser réapparaître la couleur correspondante d’une couche de base antérieure.
Mot-clé unset
Le mot-clé unset suit l’héritage normal pour une propriété héritée et utilise la valeur initiale pour une propriété non héritée.
Utiliser unset sur color peut préserver la couleur du texte du parent, tandis que l’utiliser sur margin supprime une marge locale.

O

Ombre de boîte
Une ombre de boîte dessine une ombre extérieure ou intérieure à l’aide de décalages, d’un flou et d’un étalement facultatifs et d’une couleur, sans ajouter d’espace au modèle de boîte.
Une carte peut recevoir une ombre douce tout en gardant la même largeur calculée jusqu’à la bordure et la même position parmi ses voisines.
Ordre dans le code source
L’ordre dans le code source est la succession des déclarations lorsque le CSS est lu ; il ne résout un conflit qu’après une égalité dans les comparaisons précédentes de la cascade.
Pour deux sélecteurs de classe identiques qui définissent la couleur dans une même couche, la déclaration la plus tardive l’emporte.
Origine du style
L’origine du style indique si le CSS provient de l’auteur, du lecteur ou du navigateur ; elle constitue une étape de priorité de la cascade.
Une règle normale de l’auteur peut remplacer la taille de titre par défaut du navigateur sans égaler le poids de son sélecteur.

P

Panneau Styles
Le panneau Styles est une vue des outils de développement qui présente les règles correspondant à un élément sélectionné, y compris les déclarations qui perdent dans la cascade.
Une couleur barrée dans le panneau Styles aide à comprendre pourquoi un paragraphe affiche la valeur d’une autre règle.
Pile de polices
Une pile de polices est une liste ordonnée de familles de polices qui permet au navigateur de passer à une autre famille lorsqu’une famille préférée est indisponible.
Une pile se terminant par sans-serif sans guillemets fournit toujours une police adaptée sur un appareil dépourvu des polices nommées.
Pixel CSS
Un pixel CSS est une longueur de référence absolue utilisée dans la mise en forme des pages, qui peut correspondre à plusieurs pixels physiques sur un écran dense.
Une police de 16px peut garder une taille prévue similaire même lorsque deux écrans ont des densités de pixels d’appareil différentes.
Police variable
Une police variable stocke une plage de variations, comme des graisses, dans une seule ressource au lieu de nécessiter un fichier statique par version.
Un fichier de police variable peut fournir plusieurs graisses demandées lorsque sa plage déclarée les couvre.
Police web
Une police web est une ressource de police téléchargée pour être utilisée sur une page, ce qui permet de proposer une version non installée sur l’appareil du lecteur.
Une page peut d’abord afficher une police de repli, puis sa police web choisie lorsque le fichier WOFF2 a fini de charger.
Position de l’image d’arrière-plan
La position de l’image d’arrière-plan place une image dans sa zone d’arrière-plan à l’aide de mots-clés, de longueurs ou de pourcentages, la position horizontale venant en premier.
Une image centrée avec cover répartit le recadrage nécessaire autour de son milieu au lieu de garder uniquement le coin supérieur gauche.
Pourcentage
Un pourcentage CSS exprime une proportion d’une référence déterminée par la propriété, comme la largeur du conteneur ou la taille de police du parent.
Une marge intérieure supérieure de 10 % dans un conteneur de 500px de large utilise cette largeur et vaut 50px, quelle que soit la hauteur.
Propriété raccourcie
Une propriété raccourcie définit plusieurs propriétés CSS associées à la fois et réinitialise les propriétés détaillées incluses que sa valeur ne précise pas.
Écrire background: white; peut supprimer une photo attribuée auparavant par background-image.
Pseudo-classe
Une pseudo-classe est une condition de sélecteur qui correspond à l’état ou à la position structurelle d’un élément ; elle s’écrit avec un seul signe deux-points.
La pseudo-classe :checked peut sélectionner une case à cocher dont l’état coché actuel n’est pas représenté par une classe.
Pseudo-classe structurelle
Une pseudo-classe structurelle sélectionne des éléments selon leur position parmi leurs éléments frères, par exemple le premier enfant ou un enfant sur deux.
Un paragraphe qui suit un titre est le premier paragraphe, mais il ne correspond pas à p:first-child.
Pseudo-élément
Un pseudo-élément sélectionne une partie d’un élément ou crée une partie générée à mettre en forme ; il s’écrit par convention avec deux signes deux-points.
Une règle pour li::marker peut colorer les puces d’une liste tout en laissant au texte des éléments sa couleur actuelle.

R

Rapport de contraste
Un rapport de contraste compare la luminance relative des couleurs du premier plan et de l’arrière-plan afin de mesurer leur différence visible de clarté.
Un texte dont le contraste est de 2,85:1 ne satisfait ni au seuil minimal du texte normal ni à celui du texte de grande taille du niveau AA des WCAG.
Rayon de courbure des coins
Un rayon de courbure arrondit les coins d’une boîte sans augmenter ses dimensions ; ses valeurs peuvent varier entre les quatre coins.
Un rayon de 50 % rend une boîte carrée circulaire, tandis que la même valeur sur un rectangle produit une ellipse.
Règle @font-face
Une règle @font-face attribue un nom de famille CSS et des caractéristiques de version à une ressource de police utilisable dans une pile de polices.
La déclaration de famille doit correspondre au nom choisi dans la règle, pas au nom du fichier présent dans son URL source.
Réinitialisation CSS
Une réinitialisation CSS est un ensemble de règles qui supprime certaines valeurs par défaut du navigateur afin qu’une mise en forme puisse établir ses propres styles de départ cohérents.
Une règle qui supprime toutes les marges intérieures supprime aussi le retrait des listes, que la mise en forme devra peut-être rétablir.

S

Sélecteur composé
Un sélecteur composé associe des conditions de correspondance sans combinateur et exige qu’un seul élément satisfasse à toutes ces conditions.
Le sélecteur p.note atteint un paragraphe de classe note, tandis que p .note désigne un descendant.
Sélecteur d’attribut
Un sélecteur d’attribut correspond à un élément selon la présence d’un attribut ou une condition sur sa valeur, en utilisant une syntaxe entre crochets.
Le sélecteur a[href$=".pdf" i] peut mettre en forme les liens vers des documents même lorsque l’extension du fichier est en majuscules.
Sélecteur d’identifiant
Un sélecteur d’identifiant correspond à l’identifiant unique d’un élément et apporte plus de spécificité que des sélecteurs de classe dans une règle concurrente.
Un sélecteur utilisant #site-header peut être plus difficile à remplacer par la suite qu’un sélecteur utilisant une classe d’en-tête réutilisable.
Sélecteur de classe
Un sélecteur de classe correspond aux éléments dont l’attribut class, composé de mots séparés par des espaces, contient le mot indiqué, ce qui rend le style réutilisable.
Le sélecteur .notice correspond à la fois à une note simple et à un élément avec class="card notice".
Sélecteur de spécificité nulle
Un sélecteur de spécificité nulle n’ajoute aucun poids à une comparaison de sélecteurs ; :where() supprime aussi le poids de ses arguments.
Le sélecteur :where(#main) p reste facile à remplacer, car seul le paragraphe apporte un point de type.
Sélecteur de type
Un sélecteur de type correspond aux éléments selon leur nom HTML et permet à une règle CSS de s’appliquer à tous les éléments du type choisi.
Le sélecteur p peut définir l’espacement des paragraphes dans toute la page sans attribuer une classe à chacun.
Sélecteur universel
Le sélecteur universel, *, correspond à tous les éléments mais contribue pour zéro à la spécificité, ce qui le rend utile pour les valeurs par défaut générales et les réinitialisations CSS.
Une règle pour * peut réinitialiser les marges, tandis qu’un sélecteur de classe peut ensuite définir un espacement avec une spécificité supérieure.
Spécificité
La spécificité est le poids identifiants-classes-types d’un sélecteur, utilisé pour comparer des déclarations concurrentes après une égalité aux étapes de priorité précédentes de la cascade.
Un sélecteur d’identifiant peut l’emporter sur de nombreuses classes dans le même groupe de priorité, car la colonne des identifiants est comparée en premier.

T

Taille de l’image d’arrière-plan
La taille de l’image d’arrière-plan contrôle ses dimensions affichées ; cover et contain conservent les proportions de l’image.
Cover peut couper le haut et le bas d’une photo carrée dans une boîte large ; contain peut laisser des espaces vides sur les côtés.
Transformation de la casse
La transformation de la casse modifie par CSS les majuscules et minuscules affichées sans réécrire le texte stocké dans le HTML.
Une étiquette en majuscules peut provenir d’un texte HTML à la casse normale, ce qui préserve le texte d’origine dans le document.
Triplet identifiants-classes-types
Un triplet identifiants-classes-types indique les nombres d’identifiants, de sélecteurs comptés comme des classes et de sélecteurs comptés comme des types dans trois colonnes comparées séparément.
Le sélecteur a[href]:hover a le triplet 0-2-1, l’attribut et le survol étant comptés comme des classes.

U

Unité ch
Un ch est une longueur relative à la police, fondée sur la chasse du caractère zéro et souvent utilisée pour limiter la largeur des colonnes de texte.
Un paragraphe à max-width: 65ch suit la taille de police sans garantir exactement 65 lettres par ligne.
Unité em
Un em est une longueur relative à la police qui utilise la taille de police du parent pour font-size et celle de l’élément lui-même dans les autres propriétés.
Après le calcul d’une taille de texte de 20px pour un enfant, sa marge intérieure de 2em devient 40px au lieu de suivre à nouveau le parent.
Unité relative à la zone d’affichage
Une unité relative à la zone d’affichage mesure une proportion de cette zone du navigateur, vw utilisant la largeur et vh la hauteur comme référence.
Une valeur de 10vh vaut 80px lorsque la zone d’affichage mesure 800 pixels CSS de haut, même dans un conteneur plus court.
Unité rem
Un rem est une longueur relative à la taille de police de l’élément racine, qui fournit une référence commune aux éléments imbriqués de la page.
Plusieurs éléments imbriqués à 1.25rem gardent la même taille de texte lorsqu’ils partagent une taille racine inchangée.

V

Valeur calculée
Une valeur calculée est la valeur d’une propriété après l’application par le navigateur des règles de cascade et de calcul, avant certaines résolutions qui dépendent de la mise en page.
Les outils de développement peuvent montrer qu’une taille de police en em devient une valeur en pixels, tandis qu’une largeur en pourcentage dépend de la mise en page.

Z

Zone de contenu
La zone de contenu est la partie intérieure de la boîte d’un élément qui contient son texte, son image ou le contenu de ses enfants, à l’intérieur de la marge intérieure et de la bordure.
Une largeur content-box de 300px laisse les 300px au contenu avant l’ajout de la marge intérieure aux dimensions extérieures.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer