Formation :
HTML en détails
XHTML en détails
Feuilles de Style : CSS
01 - Introduction :

Présentation des feuilles de style

Le concept de feuilles de style est apparu en 1996 avec la publication par le W3C d'une nouvelle recommandation intitulée « Cascading StyleSheets » (feuilles de style en cascade), notée CSS.

Le principe des feuilles de style consiste à regrouper dans un même document des caractéristiques de mise en forme associées à des groupes d'éléments. Il suffit de définir par un nom un ensemble de définitions et de caractéristiques de mise en forme, et de l'appeler pour l'appliquer à un texte. Il est ainsi possible de créer un groupe de titres en police Arial, de couleur verte et en italique.

Les feuilles de style ont été mises au point afin de compenser les manques du langage HTML en ce qui concerne la mise en page et la présentation. En effet, le HTML offre un certain nombre de balises permettant de mettre en page et de définir le style d'un texte, toutefois chaque élément possède son propre style, indépendamment des éléments qui l'entourent. Grâce aux feuilles de style, lorsque la charte graphique d'un site composé de plusieurs centaines de pages web doit être changée, il suffit de modifier la définition des feuilles de style en un seul endroit pour changer l'apparence du site tout entier !

Elles sont appellées « feuilles de style en cascade » (en anglais « Cascading Style Sheets ») car il est possible d'en définir plusieurs et que les styles peuvent être hérités en cascade.

Les feuilles de style permettent notamment :

  • d'obtenir une présentation homogène sur tout un site en faisant appel sur toutes les pages à une même définition de style ;
  • de permettre le changement de l'aspect d'un site complet entier par la seule modification de quelques lignes ;
  • une plus grande lisibilité du HTML, car les styles sont définis à part ;
  • des chargements de page plus rapides, pour les mêmes raisons que précédemment ;
  • un positionnement plus rigoureux des éléments.

CSS 2.0

Depuis le 12 mai 1998, la norme CSS 2.0 est le standard en vigueur. La norme CSS2 apporte un grand nombre de nouvelles fonctionnalités par rapport à la précédente norme (1.0), parmi lesquelles :

  • La prise en compte de la diversité de médias (écran, imprimante, braille, synthétiseur vocal, etc.) ;
  • L'ajout de propriétés auditives pour les aveugles et malvoyants ;
  • La manipulation de curseurs ;
  • La gestion des débordements et de la visibilité des éléments.

 

02 - Déclaration d'une feuille de style :

Comment appliquer ce style CSS au document HTML ?

Il existe pour cela trois méthodes, mais nous utiliserons de préférence celle de la feuille de styles, qui présente de nombreux avantages.

Insérer des styles dans l’en-tête du document :

On peut d’abord placer des styles CSS dans l’en-tête HTML (contenu de l’élément <head>). Placé entre les balises <style> et </style>, ce code s’appliquera à tout le document :

1<style type="text/css">
2h1 {color: blue;}
3</style>

Cette technique, qui sépare correctement contenu et mise en forme, portera automatiquement sur tous les titres <h1> du document. Mais, la portée de ce style se limite au document HTML du fichier.

Lier les styles à partir d’une feuille séparée :

Il s’agit de stocker les ressources dans des fichiers distincts : documents HTML et feuilles de styles CSS. Ces dernières renfermeront toutes les règles nécessaires à la mise en page et au design des fichiers HTML. Il suffira alors de modifier le fichier CSS séparé pour changer l’allure de toutes les pages HTML du site. Ce fichier CSS, appelé feuille de styles, portera l’extension .css

Liaison par la balise <link>

Pour lier cette feuille de styles à toutes les pages HTML du site, il est d’usage de placer une balise <link> dans l’en-tête (<head>) de ces dernières.

1<head>
2<link rel="stylesheet" type="text/css" href="styles.css" />
3</head>

Utiliser la règle @import

Cette règle permet aussi de lier une feuille de styles externe à son document HTML. Ce n’est pas une balise HTML, mais une règle CSS 2. Il est donc nécessaire de la déclarer dans l’élément <style> de l’en-tête du document :

1<style type="text/css">
2import url(styles.css);
3</style>

Méthode link ou @import ?

Le résultat est en pratique identique sauf que la méthode @import sera utilisée pour la compatibilité avec les anciens navigateurs.

03 - Les styles en cascade :

Il est possible de définir plusieurs styles en utilisant les différents moyens qu'offrent les CSS. Ainsi, lorsque plusieurs feuilles de style externes sont appelées, on obtient ce que l'on appelle une cascade de styles, c'est-à-dire une combinaison de styles pour divers éléments HTML.

1<link href="Style1.css" rel="stylesheet" type="text/css" />
2<link href="Style2.css" rel="stylesheet" type="text/css" />
3<link href="Style3.css" rel="stylesheet" type="text/css" />

04 - Les unités :

Grâce aux feuilles de style il est possible de définir des valeurs numériques pour les propriétés de style de plusieurs façons :

  • de façon absolue, (unité indépendante du format de sortie)
  • de façon relative, (unité relative à un élément)

Unités absolues :

Unité Description
cm Le centimètre
in Le pouce (en anglais « inch ») correspondant à 2,54 cm
mm Le millimètre
pt Le point
pc Le pica (correspondant à 12 pt)

Unités relatives :

Unité Description
em Unité relative à la taille de police de l'élément sélectionné. Seule exception à cette règle : lorsque la propriété font-size est définie, elle se rapporte à la taille de la police de l'élément parent.
ex Unité relative à la hauteur de la minuscule de l'élément sélectionné. Seule exception à cette règle : lorsque la propriété font-size est définie, elle se rapporte à la hauteur de la minuscule de l'élément parent.
px Le pixel. Il s'agit d'une unité dont le rendu dépend de la résolution du périphérique d'affichage.
% Le pourcentage est une unité relative à la taille de l'élément ou de son parent.

05 - Les couleurs :

Il existe différentes façons de définir des couleurs au sein du CSS :

Appel d'une couleur par son nom

Le standard CSS reprend les 16 couleurs de base définies par le standard HTML 4.01 et y ajoute le orange, soit 17 couleurs de base.

01 aqua 06 green 11 orange 16 white
02 black 07 lime 12 purple 17 yellow
03 blue 08 maroon 13 red
04 fuschia 09 navy 14 silver
05 gray 10 olive 15 teal

Code RVB en notation hexadécimale

Il est possible de définir plus de 16 millions de couleurs en indiquant les valeurs RVB (en anglais « RGB »)

Glisser votre curseur sur une couleur pour en optenir son code hexadécimal

Code RVB en notation décimale

Le standard CSS définit une notation RVB permettant de définir les composantes de rouge, de vert et de bleu en indiquant leur proportion relative en pourcentage ou bien en notation entière absolue (compris entre 0 et 255) :

1rgb (100%,100%,100%)
2rgb (24,125,255)

Télécharger "La Boite à Couleur"


06 - Propriétés des feuilles de style :

Les différentes propriétés permettant la mise en forme au sein de CSS:

Propriétés de polices :

Propriété Valeur Description
font-family Police précise (Arial, Times, Verdana)
Famille (serif, sans-serif, fantasy, monospace, cursive)
Définit un ou plusieurs nom de polices ou de familles de polices. Si plusieurs polices sont définies, la première trouvée sur le système de l'utilisateur sera utilisée.
font-style normal, italic, oblique Définit le style d'écriture
font-weight lighter, normal, bold ou bolder.
valeur numérique (100 à 900)
Définit l'épaisseur de la police
font-size xx-small, x-small, small, medium, large, x-large, xx-large
taille en points (pt), cm, %
Définit la taille de la police
font-variant normal, small-caps Définit une variante (petites majuscules)
font font: Verdana, Arial, bold italic 8px; Raccourci permettant de mettre toutes les propriétés

Texte et paragraphes :

Propriété Valeur Description
color "#RRGGBB" Définit la couleur du texte
line-height line-height: 12pt; Définit l'interligne
text-align left, center, right ou justify Définit l'alignement du texte
text-indent text-indent: 5px; Définit l'indentation (retrait du texte)
text-decoration blink (clignotement), underline (souligné), line-through (barré), overline (surligné) ou none (aucune décoration) Définit une décoration
text-shadow text-shadow: 1px 2px 4px black; Définit l'ombrage texte, respectivement décalage à droite, en bas, rayon de l'effet de flou et couleur.
text-transform uppercase (majuscule), lowercase (minuscule) ou capitalize (première lettre en majuscule) Définit la casse du texte
white-space normal (passage à la ligne automatique), pre (idem saisie), nowrap (pas de passage à la ligne automatique) Césure
word-spacing word-spacing: 6px; Définit l'espacement des mots
width En points (pt), pouces (in), en cm, en pixels (px), ou en % Définit la longueur d'un élément de texte ou d'une image
height En points (pt), pouces (in), en cm, en pixels (px), ou en % Définit la hauteur d'un élément de texte ou d'une image

Couleurs et arrière plan :

Propriété Valeur Description
background-color "#RRGGBB" Définit la couleur d'arrière plan
background-image url(http://url) Définit l'image d'arrière-plan
background-repeat repeat, repeat-x, repeat-y, no-repeat Définit la façon de répéter l'arrière-plan
background-attachment scroll, fixed Spécifie si l'image reste fixe avec les déplacements de l'écran
background-position top, middle, bottom, left, center ou right Position de l'image par rapport au coin supérieur gauche
background background: url(test.jpg) fixed repeat; Raccourci pour les propriétés d'arrière-plan

Marges :

Propriété Exemple Description
margin-top margin-top: 5px; Valeur de la marge supérieure
margin-right margin-right: 0.5em; Valeur de la marge de droite
margin-bottom margin-bottom: 2pt; Valeur de la marge inférieure
margin-left margin-left: 0; Valeur de la marge de gauche
margin margin: 5px 0.5em 2pt 0; Raccourci pour les propriétés de marge

Les bordures :

Propriété Valeur Description
border[-top -left -bottom -right]-width En points (pt), pouces (in), en cm, en pixels (px), ou en % Epaisseur de la bordure [supérieure, de gauche, inférieure ou de droite]
border[-top -left -bottom -right]-color border-left-color: #RRGGBB; Couleur de la bordure [supérieure, de gauche, inférieure ou de droite]
border[-top -left -bottom -right]-style solid (pleine), dashed (en tirets), dotted (en pointillés), double (double et remplie) ou ridge (en 3D) Style de la bordure [supérieure, de gauche, inférieure ou de droite]
border-collapse collapse
separate
Effet » 3D » ou non
border border: 1px 0 0 2px dotted green; Raccourci global les propriétés de bordure

Espaces intérieurs :

Propriété Valeur Description
padding-top padding-top: 3px; Espace intérieur entre l'élément et la bordure supérieure
padding-right padding-right: 0.25em; Espace intérieur entre l'élément et la bordure droite
padding-bottom padding-bottom: 0; Espace intérieur entre l'élément et la bordure inférieure
padding-left padding-left: 2pt; Espace intérieur entre l'élément et la bordure gauche
padding padding: 3px 0.25em 0 2pt; Raccourci vers l'ensemble des propriétés d'espace intérieur

Tableaux :

Propriété Valeur Description
border-collapse separate ou collapse Fusion des bordures des cellules (collapse) ou non (separate)
border-spacing border-spacing: 4px; Espacement des cellules
caption-side top, bottom, left ou right Positionnement de la légende du tableau
empty-cells show ou collapse Affichae (show) ou masquage (collapse) des cellules vides
table-layout fixed (indépendamment du contenu des cellules) ou auto (selon le contenu des cellules) Largeur fixe ou variable
speak-headers alwats (systématiquement avant chaque cellule) ou once (une seule fois) Propriété pour sourds et malentendants indiquant le comportement lors de la lecture des cellules d'en-tête d'un tableau

Listes :

Propriété Valeur Description
list-style-type decimal, upper-roman, lower-latin, disc, circle, square ou none Type de puces et de numérotation
list-style-image list-style-image: url(image.png); Permet de personnaliser les puces avec une image
list-style-position inside ou outside Spécifie le retrait des puces
list-style   Raccourci vers les propriétés de liste

Mise en page :

Propriété Valeur Description
@page @page(size: portrait) Définit la mise en page de l'impression
size auto, landscape ou portrait Format de l'impression
margin-top margin-top: 3 cm; Marge supérieure
margin-right margin-right: 1.5 cm; Marge de droite
margin-bottom margin-right: 1 cm; Marge inférieure
margin-left margin-left: 2 cm; Marge de gauche
marks crop (traits de coupe), cross (repère de montage), none (pas de marque) Traits de coupe et repères de montage
page-break-before Always, avoid Force le saut de page avant un élément
page-break-after Always, avoid Force le saut de page après un élément
orphans orphans: 2; Evite les lignes orphelines en fin de page. Définit le nombre de ligne minimal à partir un renvoi en page suivante est effectué
widows widows: 1; Evite les lignes veuves en début de page. Définit le nombre de ligne minimal à partir un renvoi en page précédente est effectué

07 - Positionner des éléments :

Il est possible grâce aux feuilles de style de positionner au pixel près du texte ou des images grâce aux balises <SPAN> et <DIV>.C'est possible avec les versions 4 de Netscape et d'Internet Explorer, cependant cette technique reste hasardeuse et montre encore quelques problèmes de compatibilité.

Positionnement relatif et absolu :

Le positionnement absolu {position: absolute} se détermine par rapport au coin supérieur gauche de la fenêtre du navigateur. Les coordonnées d'un point s'expriment alors de haut en bas (top) et de gauche à droite (left).

La position relative se fait par rapport à d'autres éléments, comme une image, c'est-à-dire que les éléments contenus dans la balises DIV ou SPAN seront positionnés à la suite des éléments HTML après lesquels ils se trouvent.

Positionner du texte :

Positionnons le texte "Formation au CSS avec Webinnov" à 80 pixels du haut de la fenêtre et à 100 pixels à gauche de la fenêtre :

1<html>
2<body>
3<span style="position: absolute; top: 80 px; left: 100 px;">
4 Formation au CSS avec Webinnov
5</span>
6</body>
7</html>

Résultat

Essayez cette procédure :

01<html>
02</head>
03<style>
04<!--.test{position: absolute; top: 80px; left: 100px; color: black; font-size: x-large}-->
05</style>
06</head>
07<body>
08<div class=test>
09Formation Webinnov
10</div>
11</body>
12</html>

Résultat

Positionner une image :

Positionnons l'image "vignette.png" à 80 pixels du haut de la fenêtre et à 100 pixels à gauche de la fenêtre

1<html>
2<body>
3<span style="position: absolute; top: 80 px; left: 100 px;width: 154px; height: 46px">
4 <IMG SRC="vignette.png" >
5</span>
6</body>
7</html>

Résultat

Il est important de spécifier la taille de l'image avec les feuilles de style, pour des raisons de non-compatibilité des navigateurs.

Superposer des éléments :

01<html>
02<body>
03<span style="position: absolute; top: 80 px; left: 100 px;width: 154px; height: 46px">
04 <IMG SRC="vignette.png" >
05</span>
06<span style="position: absolute; top: 37px; left: 33px;">
07Formation au CSS
08</span>
09</body>
10</html>

Résultat

 

left home right

"font-weight" ou graisse de la police

Mots-clés ou valeurs

"100" à "900" : Ces valeurs forment une séquence ordonnée, où chacun des nombres indique pour la police, une graisse au moins aussi grasse que celle du nombre précédent.

normal
: Equivaut à la valeur "400"

bold : Equivaut à la valeur "700"

bolder : Spécifie la graisse supérieure à celle assignée à une police, cette graisse étant plus grasse que celle héritée par la police. S'il n'y en a pas, la valeur de graisse de la propriété prend simplement la valeur numérique supérieure (l'aspect de la police ne changeant pas), sans pouvoir dépasser la valeur "900".

lighter : Spécifie la graisse inférieure à celle assignée à une police, cette graisse étant moins grasse que celle héritée par la police. S'il n'y en a pas, la valeur de graisse de la propriété prend simplement la valeur numérique inférieure (l'aspect de la police ne changeant pas),sans pouvoir descendre sous la valeur "100".