4. Fonctionnement des feuilles de style CSS

4.1. Champ d'application

Une feuille de style CSS, cela contient CSS, qui veut dire Cascading Style Sheet, donc en fait feuille de style en cascade? S'il semble évident qu'un type défini dans une balise s'applique à une balise, il faut savoir maintenant ce que signifie le terme de cascade. En fait, le style défini dans la feuille de style s'applique non seulement à la balise que l'on veut, mais aussi à tous les noeuds fils et à toute la descendance du noeud dont on a défini le style. En d'autres termes, si j'ai <p><b>texte</b> bleu</p>, alors le style qui s'appliquerait à la balise <p> s'applique aussi à la balise <b> fille de <p>. Déjà dans cet exemple, vous voyez que cela est très pratique: nous n'avons pas besoin de définir le style pour les balises <b> si le style standard nous convient outre les modifications apportées sur la balise <p>.

Avec les feuilles de style CSS, on définit en fait pour chaque balise, donc pour chaque type de données, une manière, un style, pour représenter la donnée. Si une balise n'a pas de style particulier, on cherche un style particulier défini pour les balises parentes et on l'applique. Si on n'en trouve pas, on prend le style par défaut.

4.2. Classes

Cependant, il existe certaines manières de limiter le champ d'application du style à certaines balises et pas à d'autres, alors que ce sont les mêmes. Pour cela, on utilise l'attribut class. Nous avons entrevu dans l'article qui décrivait comment générer les pages web, que le menu était défini dans un paragraphe délimité par une balise <p class="menu">. Nous pouvons, dans la feuille de style, définir un style pour les balises <p> de classe menu et un style pour les autres balises <p>. Voici ce que cela pourrait donner dans notre feuille de style myprog.css que nous utilisons dans l'autre article:

p      { color:blue  }
p.menu { color:green }

Dans ce cas, les deux styles peuvent être appliqués. C'est celui le plus spécifique qui s'applique, donc celui p.menu.

4.3. Sélections

Les classes sont des manières de sélectionner un style. Il en existe un autre qui utilise l'arborescence du HTML.

h1 b { color:red }

Cet exemple permet de n'appliquer le style qui met le texte en rouge, uniquement sur le contenu des balises <b> elles-mêmes contenus de balises <h1>. Ainsi, du texte en gras à l'intérieur d'un paragraphe ne sera pas mis en rouge.

Les feuilles de styles CSS1 définissent encore quelques autres modes de sélection des balises, et CSS2 en rajoute une couche, en particulier en fonction des attributs des balises. Voyez pour cela les spécifications des feuilles de style CSS2.

4.4. Différents styles

Si l'on veut non seulement spécifier la couleur, mais aussi la taille de la police de caractères, voici comment faire:

p { color:yellow; font-size: 14pt }

Les espaces étant gérés comme en HTML, c'est-à-dire que peu importe leur nombre et le nombre de retours à la ligne, ce qui suit est une manière équivalente de dire la même chose:

p { 
      color: yellow;
      font-size: 14pt
  }

Je profite de cette similitude sur les espaces avec le HTML pour dire que, tout comme en HTML, le texte de définition d'une feuille de style CSS n'est pas sensible à la casse. Si vous aimez les majuscules, ne vous en privez pas. Un petit rappel pourtant: le XML est lui sensible à la casse, donc méfiance si vous écrivez une feuille de style CSS pour un document XML.

4.5. Les unités

Différentes unités sont disponibles pour définir la taille des polices de caractères, la taille des marges, etc. Nous avons:

  • em: La taille de la police de caractères correspondante. Attention, si vous vous amusez à définir font-size avec l'unité em, par exemple font-size: 2em, on ne va pas prendre deux fois la taille de la police actuelle puisque nous sommes en ce moment même en train de la redéfinir. C'est dans ce cas la police de l'élément parent qui sert de référence. Dans tous les autres cas, c'est la police de l'élément courant qui sert de référence quand même;

  • ex: La taille de la lettre x de la police de caractères correspondante (si la lettre x n'est pas définie, cette taille existe pourtant d'une manière ou d'une autre);

  • px: un nombre de pixels, sachant que le pixel a une taille différente suivant qu'il est sur l'écran, à l'imprimante...;

  • pt: Un nombre de points. Un point est défini comme 1/72e de pouce (soit 25,4/72 mm);

  • pc: Un pica, soit 12 points;

  • in: Un pouce (soit 2,54 cm);

  • cm: Un centimètre, soit un centième de la longueur du trajet parcouru par la lumière, dans le vide, pendant une durée de 1/299 792 458 seconde;

  • mm: Un millimètre, soit un millième de la longueur du trajet... lumière... vide... secondes.

On peut aussi donner des pourcentages, comme en HTML, avec le symbole %.

création est mise à disposition sous un contrat Creative Commons