Formation CSS avec exemples d'application
Concept CSS
Les feuilles de styles (en anglais «Cascading Style Sheets», abrégé CSS) sont un langage qui permet de séparer la présentation d’une page Web de son contenu structurel.
Les CSS autorisent, sans intervenir sur le code HTML des pages web, de définir les règles graphiques à appliquer sur l’ensemble du site : positionnement et dimensions des éléments, alignement, polices de caractères, couleurs, marges et espacements, bordures, images de fond, etc…
En CSS, il existe deux grandes familles d’éléments : les éléments de type block et les éléments de type inline.
Notez que :
...
Dans un document d'une certaine importance, il arrive fréquemment que l'on attribue à certains éléments des caractéristiques de mise en forme identiques. Par exemple, les noms de chapitres seront mis en police Arial, en gras et en couleur bleue.
On peut imaginer que l'on puisse donner à cette définition de mise en forme un nom soit "titre" et qu'à chaque nouveau chapitre, plutôt que d'écrire chaque fois le nom du titre et puis de devoir le mettre en Arial, gras, bleu, l'on puisse dire à l'ordinateur, nom du chapitre mais dans la mise en forme que j'ai défini sous le nom de "titre". Cette définition de mise en forme particulière, on va l'appeler feuille de style.
Le concept de feuilles de style [Style Sheets] est né. Il existait déjà dans les traitements de texte comme dans Word de Microsoft (comme par hasard...). Allez dans le menu Format de Word, vous y trouvez Style ! Il ne restait plus qu'à coupler le concept au langage Html par des propriétés spécifiques.
STYLE des titres STYLE des sous-titres STYLE du texte STYLE des titres STYLE des sous-titres STYLE du texte
Vous remarquez que l'on parle de feuilles de style [ style sheets ] car le but du jeu est d'en définir plusieurs. On parle aussi de feuilles de style en cascade [ Cascading Style Sheets ou CSS ] car en cas de styles identiques, un ordre de priorité sera déterminé par le browser (voir FAQ).
Précisons pour terminer que les feuilles de style ne sont pas une composante directe du langage Html mais un développement à part dans la publication de pages Web.
Utilité et avantages
1.4 Compatibilité
Les feuilles de style fonctionnent sous :
Explorer 3.0 mais de façon incomplète
Explorer 4.0 Netscape 4.0
Attention !!! Les feuilles de style ne sont pas reprises par Netscape 3.0.
Définition d'un style
La définition de base d'un style est simple :
balise { propriété de style: valeur; propriété de style: valeur }
Exemple :
H3 { font-family: Arial; font-style: italic }
Donc ici, la balise H3 sera en Arial et en italique. Et dans votre document, toutes les balises
Simple! Mais de nombreux commentaires s'imposent :
H3 {font-family: Arial;
font-style: italic; font-color: green}
Chapitre 3 : Styles internes
Il faut maintenant incorporer les styles dans le document Html. Commençons par le plus simple, soit l'incorporation à l'intérieur d'une page. D'où le titre "Styles internes".
1 A l'intérieur des balises
Cette façon de procéder est de loin la plus commune et la plus logique. D'abord parce que les balises HEAD contiennent des informations pour le browser et les feuilles de style appartiennent à celles-ci. Ensuite parce que l'on rejoint ainsi l'essence même des feuilles de style qui est de séparer les éléments de mise en forme du contenu.
Styles externes
C'est déjà bien de pouvoir définir une présentation de style valable pour une page (styles internes). Mais CSS nous propose mieux. Définir une présentation de style valable pour plusieurs pages et même pour toutes les pages d'un site. Ce qui est possible, en créant une page externe qui regroupera toutes les feuilles de style, et en reliant chaque page à cette page de style.
On crée d'abord, dans le répertoire du site, un fichier avec l'extension .css soit styles.css qui contiendra toutes les feuilles de style.
--- Les différentes feuilles de style --¬
Ensuite, on crée une page normale soit page1.htm (bien entendu dans le même répertoire que le fichier styles.css).
Chapitre 5 : Les classes et les ID 5.1 Notion de classes
Mais on désire parfois affecter des styles différents à une même balise. Pas de problèmes, les feuilles de style vous proposent la solution des classes [class].
La syntaxe est ici aussi des plus simple.
La définition d'un style était :
balise { propriété de style: valeur }
Elle devient :
balise.nom_de_classe { propriété de style: valeur } remarquez le point entre balise et nom_de_classe
Ou, comme la mention de la balise est facultative, .nom_de_classe { propriété de style: valeur }
Attention! L'emploi du point (.) devant le nom de classe est indispensable.
Pour appeler l'effet de style dans le document, on ajoute le nom de la classe à la balise. ....
Un exemple ?
Je souhaite mettre ce qui est important dans le texte en gras et en bleu. Je crée la classe .essentiel : .essentiel { font-weight: bold; font-color: #000080 }
Et dans le document Html, il suffit d'appeler la classe .important quand cela se révèle nécessaire :
... blabla ...
...
cellule |
2 Notion des ID
Comme le convention nom/point/nom est utilisée aussi en Javascript (voir Apprendre le Javascript du même auteur : www.ccim.be/ccim328/js/index.htm) , il a fallu trouver une autre convention d'écriture lorsqu'on désire utiliser les feuilles de style avec du Javascript. Ce sont les ID, aussi appelés les identifiants. Les ID fonctionnent exactement comme les classes. Pas mieux, pas plus. C'est la même chose!
La syntaxe est :
#nom_de_ID { propriété de style: valeur }
Et pour l'appeler :
....
Notons qu'on ne pourra effectuer qu'un seul appel à #nom_de_ID par page. Ainsi,
Pour #essentiel{ ... }
est correct.
Mais si on rencontre dans la même page
Si vous pensez utiliser des feuilles de style, mais sans vous compliquer la vie avec des scripts, oubliez au plus vite ID et utilisez exclusivement les classes.
Si par contre vous souhaitez utiliser des scripts avec les feuilles de style pour faire du DHTML par exemple (voir plus loin dans le site), la notion de ID vous sera alors indispensable.
: et
1 Utilité
Dernier point, il fallait penser à un système pour "déconnecter" certains morceaux de paragraphe ou plusieurs paragraphes de cette logique d'écriture avec des feuilles de style. Ce sont respectivement les balises SPAN et DIV qui créaient ainsi des petits blocs particuliers dans le document sans devoir repasser par les éléments structurels du Html classique.
Notons que SPAN et DIV s'utilisent toujours avec les classes et les ID.
2 SPAN
La balise ... permet d'appliquer des styles à des éléments de texte d'un paragraphe ou si vous préférez à un morceau de paragraphe. Ainsi je voudrais écrire :
Un monde de géants.
Un monde de géants.
3 DIV
La balise
...permet de regrouper plusieurs paragraphes ou si vous préférez, de délimiter une zone comportant plusieurs paragraphes.
La balise
Commentaire :
N'oubliez pas l'attribut class!
Donne comme résultat : La balise
Commentaire :
N'oubliez pas l'attribut class!
Positionner avec CSS
Quel concepteur de pages Web n'a pas laissé échapper quelques jurons bien sentis en essayant, à grand renfort de tableaux, de placer précisément du texte ou une image là où il le désirait ?
Le miracle est arrivé ! Outre le balise (mais qui n'est comprise que par Netscape 4.0), il est désormais possible de positionner, au pixel près, du texte ou une image avec les feuilles de style.
Notons que ce positionnement n'est possible que sous les versions 4 de Netscape et d'Explorer. Et que cette technique est encore un peu hasardeuse à ce jour, surtout sur le plan de la compatibilité avec les deux browsers susnommés.
Le positionnement des éléments par les feuilles de style est repris sous la spécification CSS-P. 7.1 Position absolue ou relative
La position absolue {position: absolute} se détermine par rapport au coin supérieur gauche de la fenêtre du browser. Les coordonnées de ce point sont top = 0 et left = 0. Les coordonnées d'un point s'expriment en pixels, de haut en bas pour top et de gauche à droite pour left.
La position relative {position: relative} se détermine par rapport à d'autres éléments de la page, par exemple un élément du code Html.
Précisons que l'on utilisera presque toujours le positionnement absolu car plus facile et plus sûr. 7.2 Positionner du texte
Plaçons en position absolue le texte "Publication Html" à 50 pixels du haut de la fenêtre (top) et à 150 pixels à gauche (left).
Publication HtmlAjoutons que plusieurs encodages sont possibles. 7.3 Positionner une image
Plaçons l'image htmlplus.gif en position absolue à 50 pixels de haut de la fenêtre (top) et à 100 pixels à gauche (left). Les dimensions de l'image sont width=242 et height=84.
heigth: 84px;">
Spécifiez toujours les propriétés width et heigth avec les feuilles de style car par défaut, Netscape 4.0 et Explorer 4.0 ne réagissent pas de la même façon.
Ajoutons que plusieurs encodages sont possibles. 7.4 Superposer du texte sur une image
Reprenons l'image htmlplus.gif et on y superposera le nom de l'auteur de ce tutorial, au pixel près dans la barre qui souligne le terme Html.
color: yellow; font-size: x-small; font-weight: bold;">
Van Lancker Luc
Ajoutons que plusieurs encodages sont possibles. Chapitre 8 : Mini FAQ sur les styles
1 Les feuilles de style sont-elles "case sensitive" ?
Non, les feuilles de style ne sont pas sensibles à la case [case insensitive]. Ecrire CLASS ou class ou Class est donc équivalent. Cependant les éléments qui ne sont pas sous le contrôle des feuilles de style comme les noms de police ou les URLs peuvent être case sensitive. Pour le système d'exploitation (et je pense à Unix), Arial n'est peut-être pas égal à arial, de même IMAGE.gif n'est pas forcément égal à image.gif.
2 Quels caractères peut-on utiliser en CSS ?
Les noms des feuilles de style, des sélecteurs, des classes et ID peuvent contenir les lettres de a-z ou de A-Z, les chiffres de 0-9, le trait d'union et le caractère _. Les noms ne peuvent commencer par un chiffre ou un tiret. La documentation officielle affirme que les caractères spéciaux ASCII 160-255 peuvent être utilisés. Mais cela ne fonctionne pas chez moi. On prendra vite l'habitude (voir les langages de programmation) de les éviter.
8.3 Peut-on utiliser dans la même page, à la fois des éléments de style CSS et Html ?
Oui. Les feuilles de style seront ignorées par les browsers qui ne supportent pas les feuilles de style. Et c'est tant mieux pour la compatibilité de votre site sous les différents navigateurs.
8.4 Qui l'emportent : les attributs Html ou les propriétés CSS ?
Les propriétés des feuilles de style l'emportent sur les attributs Html. Si les deux sont spécifiés, les attributs Html seront affichés avec les browsers qui ne supportent pas les CSS et n'auront aucun effet avec les browsers qui supportent les feuilles de style.
Ainsi,
apparaîtra en rouge sous un browser compatible CSS (par exemple Microsoft Explorer).
et en bleu sous un browser qui ne reconnaît pas les feuilles de style (par exemple Netscape 3.0).
Ce qui est très bien pour la compatibilité mais qui ne simplifie pas la clarté de l'écriture. 8.5 Et s'il y a concurrence entre plusieurs éléments de style ?
En cas de concurrence entre plusieurs éléments de style, intervient alors la notion de "cascade" ou d'ordre de priorité.
La concurrence entre plusieurs éléments de style peut provenir des différentes possibilités de localisation de feuilles de style :
dans un fichier externe avec l'extension css. dans la balise HEAD du document.
dans le BODY du document.
La règle de priorité appliquée par le browser sera d'appliquer pour la présentation du document la feuille de style la plus proche de l'élément. Ainsi, un style spécifié dans le BODY sera retenu par rapport à un style déclaré dans un fichier externe.
Il y a cependant moyen de contourner ces règles de priorité par la déclaration ! important;. Du genre BODY {background: white ! important; color: black}. Nous en resterons là dans le cadre de ce tutorial.
Chapitre 9 Liste des propriétés
La liste complète (et officielle) des propriétés et recommandations concernant les feuilles de style version 1, peut être trouvée à l'adresse . En voici une sélection :
Les styles de police
font-family
définit un nom de police ou une famille de police
ou
police précise (Arial, Times, Helvetica...) ou
famille (serif, sans-serif, cursive, fantasy, monospace)
H3 {font-family: Arial}
font-style
définit le style de l'écriture normal ou italique ou oblique H3 {font-style: italic}
font-weight
définit l'épaisseur de la police
normal ou bold ou bolder ou lighter ou valeur numérique soit
(100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900)
P {font-weight: bold}
font-size
définit la taille de la police
xx-small ou x-small ou small ou médium ou large ou x-large ou xx-large ou larger ou smaller ou taille précise en points (pt), inches (in), centimètres (cm), pixels (px) ou pourcentage (%) P {font-size: 12pt}
font-variant
définit une variante par rapport à la normale normal ou small-caps
P {font-variant: small-caps}
font
raccourci pour les différentes propriétés de police P {font: bold italic}
Les styles du texte
text-align
définit l'alignement du texte left ou center ou right ou justify H1 {text-align: center}
text-indent
définit un retrait dans la première ligne d'un bloc de texte souvent utilisé avec
, n'oubliez pas dans ce cas
. spécifié en inches (in) ou en centimètres (cm) ou en pixels (px) P {text-indent: 1cm}
text-decoration
définit une décoration (?) du texte, soit barré, clignotant, etc.
blink ou underline ou line-through ou overline ou none A:visited {text-decoration: blink}
text-transform
définit la casse du texte (majuscule, minuscule) uppercase (met les caractères en majuscules) ou lowercase (met les caractères en minuscules) ou capitalize (met le premier caractère en majuscule) P {text-transform: uppercase}
color
définit la couleur du texte par exemple en hexadécimal H3 {color: #000080}
word-spacing
définit l'espace entre les mots
en points (pt), inches (in), centimètres (cm), pixels (px)
ou pourcentage (%)
P {word-spacing: 5pt}
letter-spacing
définit l'espace entre les lettres
spécifié en points (pt), inches (in), centimètres (cm), pixels (px) ou pourcentage (%)
P {letter-spacing: 2pt}
line-height
définit l'interligne soit l'espace entre les lignes du texte en points (pt), inches (in), centimètres (cm), pixels (px) ou pourcentage (%)
P {line-height: 10pt}
width
détermine la longueur d'un élément de texte ou d'une image
en points (pt), inches (in), centimètres (cm), pixels (px) ou pourcentage (%)
H1 {width: 200px}
height
détermine la hauteur d'un élément de texte ou d'une image en points (pt), inches (in), centimètres (cm), pixels (px) ou pourcentage (%) H1 {heigh: 100px}
white-space
espace ou blanc
normal ou pre ou nowrap PRE {white-space: pre}
9.3. Les arrière-plans
background-color
définit la couleur de l'arrière-plan
couleur (par exemple en hexadécimal) ou transparent H1 {background-color: #000000}
background-image
définit l'image de l'arrière-plan URL de l'image
BODY {background-image: image.gif}
background-repeat
définit la façon de répéter l'image d'arrière-plan
repeat ou no-repeat ou repeat-x (x = nombre de répétitions horizontales) ou repeat-y (y = nombre de répétitions verticales
P {background-image: image.gif; background-repeat: repeat-4}
background-attachment
spécifie si l'image d'arrière-plan reste fixe avec les déplacements de l'écran scroll ou fixed
BODY {background-image: image.gif; background-attachement: fixed}
background-position
spécifie la position de l'image d'arrière-plan par rapport au coin
supérieur gauche de la fenêtre {1, 2}
{top ou center ou bottom , left ou center ou right}
ou en points (pt), inches (in), centimètres (cm), pixels (px)
ou pourcentage (%)
BODY {background-image: img.gif; background-position: right top}
background
raccourci pour les différentes propriétés d'arrière-plan P {background: image.gif fixed repeat}