Mes notes personnelles sur le développement Web

Les blocs CSS

La construction d'une feuille de style induit la définition de nombreuses règles, il peut exister des conflits entre deux ou plusieurs règles associées à un même élément. Un navigateur doit dont disposer de mécanismes pour choisir la règle à appliquer pour mettre en forme un document. Il y a trois facteurs à prendre en compte ; la liste suivante les définit par ordre croissant d'importance :

  1. Importance.
  2. Spécificité.
  3. Ordre d'apparition dans la feuille de styles.

Les critères prennent le dessuss en fonction de leur numéro.

Cascade, spécificité & héritage

La cascade est un mécanisme qui prescrit de sélectionner la dernière règle déclarée lorsque plusieurs règles sont en conflit (ce mécanisme peut être assimilé à une pile de règles), ce mécanisme signifie que l'ordre d'apparation des règles dans la feuille de styles à une importance. En d'autres termes, lorsque deux règles applicables ont la même spécificité, c'est la dernière déclarée qui sera utilisée pour la mise en forme. Une illustration de ce mécanisme est fournie dans l'exemple sur les mécanismes l'affichage du titre <h1>.

Dans la cascade, ce n'est pas la règle toute entière qui est écrasée, mais seulement les propriétés communes aux deux règles qui sont redéfinies par la dernière version rencontrée.

La règle précédente permet d'éviter des répétitions dans la feuille de styles. Une pratique courante consiste à définir des styles génériques pour les éléments de base, puis à créer des classes pour les cas particuiers. Une illustration de ce mécanisme est fournie dans l'exemple de surcharge en cascade sur l'affichage du titre <h2>.

Quand des règles avec des sélecteurs différents s'appliquent sur un même élément, le navigateur choisir celle qui a la plus grande spécificité. La spécificité mesure donc la précision d'une règle, elle est caractérisée par un score. A ttire d'exemple, un sélecteur d'éléments est peu spécifique (il cibles tous les éléments de même type) alors qu'un sélecteur de classe est plus spécifique (il ne cible que les éléments dont l'attribut class a la valeur choisie. Une illustration de ce mécanisme est fournie dans l'exemple sur les mécanismes l'affichage du titre <h2>.

Le score de la spécificité est codé par quatre valeurs différentes qui sont affichées sur un nombre à 4 chiffres (millier, centaine, dizaine et unité) :

  • Millier (M) : ajouter 1 dans cette colonne si la déclaration apparaît dans l'attribut style d'un élément (définition en-ligne et non dans une feuille de style). De telles déclarations n'ont pas de sélecteur, leur spécificité est toujours 1000.
  • Centaine (C) : ajouter 1 dans cette colonne pour chaque sélecteur d'ID contenu à l'intérieur du sélecteur global.
  • Dizaine (D) : ajouter 1 dans cette colonne pour chaque sélecteur de classe, d'attribut ou de pseudo-classe contenu à l'intérieur du sélecteur global.
  • Unité (U) : ajouter 1 dans cette colonne pour chaque sélecteur d'élément ou pseudo-élément contenu à l'intérieur du sélecteur global
  • Il est possible d'outrepasser le score en utilisant la valeur spéciale CSS !important ; mais son usage nécessite beaucoup de prudence ! En fait, cette valeur peut dans certains cas être utilisée quand il n'est pas possible de modifier le module CSS de base, elle permet alors de remplacer un style et d'un CMS
Sélecteur M C D U Score
h2 p 0 0 0 2 0002
li > a > .regle 0 0 1 2 0012
#id1 .classe 0 1 1 0 0110
<p style="color: red"> 1 0 0 0 1000

L'héritage est particulier pour la notation CSS car il ne s'applique qu'à quelques propriétés. Par exemple, si une couleur ou une famille de police sont définies dans un élément alors tout élément contenu dans le premier sera mise en forme avec la même couleur et la même police. Par contre, certaines propriétés ne se transmettent pas (bordure, largeur, etc.). D'après certains auteurs, le sens commun permet de comprendre quelles propriétés sont héritées par défaut et quelles sont celles qui ne se transmettent pas. Une illustration de ce mécanisme est fournie dans l'exemple sur les mécanismes l'affichage du titre <div> et <span>.

CSS propose quatre valeurs spéciales pour contrôler l'héritage ; ces valeurs sont applicables à toute propriété CSS :

La propriété all peut être utilisée pour appliquer une des valeurs spéciales à l'ensemble des propriétés CSS.

Sélecteurs CSS :

Dans CSS, les sélecteurs sont utilisés pour cibler les éléments HTML à mettre en forme. Comme précisé dans l'anatomie d'une règle, il existe plusieurs types de sélecteur offrant une précision très fine dans la façon de cibler les éléments :

Il existe également plusieurs possibilités de combinaison des sélecteurs :

Modèle de boîte

En CSS, tout élément est inclus dans une boîte (box), la compréhension du fonctionnement de ces boîtes et de leur positionnement est essentielle à la maîtrise de la mise en page d'un site Web.

Les types de boîte :

Il existe deux types de boîtes, chacun des types définissant un comportement de la boîte dans la page :

Le type de boîte appliqué à un élément est défini par la valeur de la propriété display avec les valeurs block ou inline.

Positionnement intérieur et extérieur :

CSS distingue deux types de positionnement pour une boîte :

Pour connaître le positionnement de la boîte dans une page il est important de connaître ses dismensions.

Par exemple :

.box {
    width: 350px;  /* Largeur du contenu */
    height: 150px; /* Hauteur du contenu */
    margin: 10px;  /* Marges extérieures : haut, bas, gauche, droite */
    padding: 25px; /* Marges intérieures : haut, bas, gauche, droite */
    border: 5px solid black; /* Largeur de la bordure : haut, bas, gauche, droite */
}

Cette boîte a pour largeur 410px (350 + 25 +25 (padding gauche et droite) + 5 +5 (bordure gauche et droite)) et pour hauteur 210px (150 + 25 +25 (padding gauche et droite) + 5 +5 (bordure gauche et droite)). Les marges ne sont pas comptabilisées car elles sont considérées comme étant extérieures à la boîte. L'attribut background-color définit la couleur de fond de la boîte largeur, hauteur et padding.

Remarques :

Ces remarques s'appliquent au modèle de boîte standard, il est toutefois possible de s'appuyer sur un modèle de boîte alternatif.