CSSC'est quoi les CSS ?

Rappel du XHTML

Le xhtml est utilisé pour servir le contenu d'une page : c'est avec ce langage que l'on dit : ceci est un titre, ceci est un paragraphe, ceci est une image, etc...
Mais en aucun cas il ne doit être utilisé pour la mise en page. On ne doit pas dire que les titres sont en rouges souligné, ou que les paragraphes sont en blanc sur fond noir.
C'est le travail des CSS.

En xhtml, dans les balises, on voit parfois des attributs "style" :
<balise style="propriété:valeur;">

Le contenu de ces attributs "style" peut être remplacé par des CSS.

Les CSS, appelés Cascading Style Sheets, soit "Feuilles de style en cascades" en français, permettent de créer la mise en page d'un site. Avec les CSS, on peut faire toute la mise en page : Les couleurs de fond, de texte, les polices, la taille du texte, les bordures, les apparences des titres, les marges...


La Structure d'un fichier CSS

Voici comment est fait un fichier CSS :
élément
    {
        propriété:valeur;
        propriété:valeur;
        propriété:etc...;
    }

Donc, pour appliquer un style à un élément de la page, il faut :

Voici un exemple de ce que l'on peut "dire" avec les CSS :
paragraphes
       {
          couleur du texte:rouge;
            taille de police:1 ligne et demie;
        }

On peut également faire des commentaires, qui servent à comprendre plus facilement le code plus tard :
/*Ceci est un Commentaire*/

On peut donc écrire les commentaires sur une ou plusieurs lignes avec "/*" et "*/".

Créer un style avec les CSS

Pour dire sur quelle élément de la page on veut appliquer certains style, il y a plusieurs façons :

Exemple

Voyons maintenant comment créer un style particulier pour un bloc. Par exemple, nous voulons faire ressortir un extrait de texte, comme une citation.
Nous avons d'abord un paragraphe sans mise en forme :

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec fringilla justo ut dui nonummy scelerisque. In dapibus diam non nisi. Cras et tellus vitae sapien tristique hendrerit. Aliquam quis eros. In faucibus felis vel turpis. Aenean semper, nisl quis eleifend tempus, urna leo fringilla ipsum, vitae laoreet ante massa ac erat. Aliquam nisi velit, faucibus vitae, iaculis sed, vehicula et, sem. Nulla facilisi. Donec placerat pulvinar felis. Sed ultricies leo ut elit. Integer vitae tortor et neque blandit rhoncus. Quisque facilisis enim luctus quam. Vivamus hendrerit congue lacus. Nulla id nunc non nibh egestas vehicula. Nullam varius. Morbi vitae ante in tortor condimentum gravida.

Et nous voulons avoir ceci :

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec fringilla justo ut dui nonummy scelerisque. In dapibus diam non nisi. Cras et tellus vitae sapien tristique hendrerit. Aliquam quis eros. In faucibus felis vel turpis. Aenean semper, nisl quis eleifend tempus, urna leo fringilla ipsum, vitae laoreet ante massa ac erat. Aliquam nisi velit, faucibus vitae, iaculis sed, vehicula et, sem. Nulla facilisi. Donec placerat pulvinar felis. Sed ultricies leo ut elit. Integer vitae tortor et neque blandit rhoncus. Quisque facilisis enim luctus quam. Vivamus hendrerit congue lacus. Nulla id nunc non nibh egestas vehicula. Nullam varius. Morbi vitae ante in tortor condimentum gravida.

regardons ce qui à changé :

Maintenant, voyons comment nous allons faire ceci :
Admettons que le paragraphe soit de classe "citation" (on aurait aussi pu utiliser la balise blockquote). (<p class="citation"> Blabla...</p>)
Pour faire une bordure, nous devons mettre :
p.citation {     /*le ou les paragraphes de classe "citation"*/
        border-style: solid;    /* auront une bordure solide, c'est à dire un trait continu*/
        border-color: #6666cc;   /*la couleur de cette bordure sera bleue*/
        border-width: 4px 4px 4px 8px; /*la bordure sera de 4 pixels, sauf la bordure gauche qui sera de 8 pixels !!*/ }

"#6666cc" est une façon d'écrire plus précisément les couleurs. Les deux premiers chiffres après le dièse indiquent le taux de rouge, les 3° et 4° le taux de vert et les deux derniers le taux de bleu.
On indique les couleurs en hexadécimal, c'est a dire avec 16 caractères :0123456789abcdef, #000000 étant noir et #ffffff étant blanc.

Pour écrire le texte en blanc sur fond noir, il faut faire :
background-color: black; /*la couleur de fond sera noire*/
color:white;           /*la couleur du texte sera blanche*/


Pour décaler le bloc vers la droite, il faut utiliser la propriété margin, qui prend une valeur mesurable.
On rajoute "left" à la propriété car il doit y avoir une marge seulement à gauche :
margin-left:20%; /*il y aura une marge de 20% de la fenêtre à gauche*/

Voici ce que nous obtiendrons avec ces propriétés CSS :

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec fringilla justo ut dui nonummy scelerisque. In dapibus diam non nisi. Cras et tellus vitae sapien tristique hendrerit. Aliquam quis eros. In faucibus felis vel turpis. Aenean semper, nisl quis eleifend tempus, urna leo fringilla ipsum, vitae laoreet ante massa ac erat. Aliquam nisi velit, faucibus vitae, iaculis sed, vehicula et, sem. Nulla facilisi. Donec placerat pulvinar felis. Sed ultricies leo ut elit. Integer vitae tortor et neque blandit rhoncus. Quisque facilisis enim luctus quam. Vivamus hendrerit congue lacus. Nulla id nunc non nibh egestas vehicula. Nullam varius. Morbi vitae ante in tortor condimentum gravida.

Il manque :

Pour l'espacement entre la bordure et le contenu, il suffit de faire :

padding: 10px; /*de cette façon il y aura un espacement de 10 pixels entre la bordure et le texte*/
Padding étant les marges intérieures (entre la bordure et le contenu), et margin les marges extérieures (entre la bordure et le reste de la page).

Pour la lettrine, c'est plus compliqué :
Il faut utiliser ce que l'on appelle une pseudo-classe, une classe qui s'applique sur un élément en particulier qui n'est pas délimité par des balises xhtml, ou à un certain moment (au passage de la souris sur un élément par exemple).
Ici, nous allons utiliser la pseudo-classe first-letter, qui désigne la première lettre d'une élément.
Donc pour que le style s'applique uniquement à la première lettre du paragraphe, nous allons utiliser ce code CSS :
p.citation:first-letter { /*seulement la première lettre des paragraphes de classe citation*/ }

Ensuite, on utilise des propriétés comme pour n'importe quel élément. Revoyons les styles qui sont appliqués à cette lettrine :

Pour les couleurs, c'est très simple :

p.citation:first-letter{
color:red; /* la couleur de la lettre sera rouge*/
background-color:#808080; /*la couleur de fond sera grise*/ }

Ensuite, il faut faire la bordure :
border: 2px solid green; /*la bordure sera verte et de deux pixels d'épaisseur*/

Puis, les espacements :
padding: 10px;       /*Il y aura un espacement de 10 pixels entre la lettre et sa bordure*/
margin-right: 2px;   /*Un espacemement de 2 pixels entre la bordure droite et le texte*/

Les propriétés de police :
font-family: 'comic sans ms'; /*la police sera 'comic sans ms'*/
font-size: 2em; /* et la lettre fera deux lignes de haut (1em = une ligne) */

Et enfin, les propriétés du bloc :
height: 4em; /* le bloc fera 4 lignes de hauteur*/
float: left; /*et il flottera a gauche, sinon il dépasse du paragraphe*/

Les pseudo-classes

Certaines classes spéciales sont appelées "pseudo-classes". Ce sont par exemple :
Un style qui s'applique seulement...

Plus d'informations sur les pseudo-classes : http://www.siteduzero.com/tuto-3-38-1.html

Conclusion

C'est de cette façon que l'on créée un style avec les CSS. Généralement, on fait un fichier CSS que l'on utilise pour toutes les pages. Comme ceci, il est très facile de changer tout le design d'un site en une seule fois. De plus, le chargement des pages est allégé : le navigateur enregistre une seule fois le fichier CSS, et le ré-utilise sans avoir à le charger dès qu'il y en a besoin. Le code html est aussi moins lourd, car on n'utilise plus de style="...." directement dans les balises.

Cependant, les navigateurs n'interprètent pas tous de la même façon certaines propriétés CSS compliquées. Par exemple, IE ne gère pas la pseudo-classe ":hover" autre part que sur un lien. En fait, il ne connait pas beaucoup de propriétés CSS 2, car il n'y a pas de nouvelle version depuis 1999. Il ne connait que la première version des CSS. La version 7 devrait peut-être (j'éspère) enfin supporter complètement les CSS 2, ce qui permettrait de faire des designs interessants compatibles avec la majorité des navigateurs.

Liens :
Le site du Zéro : Liste des propriétés CSS
Toute la "puissance" des CSS sur CSS Zen-garden
Comment Ca marche : Les CSS