2014-08-20 09:45:07 +04:00
---
language: css
contributors:
- ["Mohammad Valipour", "https://github.com/mvalipour"]
- ["Marco Scannadinari", "https://github.com/marcoms"]
translators:
2014-08-20 09:47:06 +04:00
- ["@prrrnd", "https://github.com/prrrnd"]
2014-08-20 09:45:07 +04:00
lang: fr-fr
---
2014-09-18 18:01:42 +04:00
Au début du web, il n'y avait pas d'élements visuels, simplement du texte pure. Mais avec le dévelopement des navigateurs,
2014-08-20 09:45:07 +04:00
des pages avec du contenu visuel sont arrivées.
2014-09-16 19:33:10 +04:00
CSS est le langage standard qui existe et permet de garder une séparation entre
2014-08-20 09:45:07 +04:00
le contenu (HTML) et le style d'une page web.
2014-09-16 19:33:10 +04:00
En résumé, CSS fournit une syntaxe qui vous permet de cibler des élements présents
sur une page HTML afin de leur donner des propriétés visuelles différentes.
2014-08-20 09:45:07 +04:00
2014-09-16 19:33:10 +04:00
Comme tous les autres langages, CSS a plusieurs versions. Ici, nous allons parlons de CSS2.0
2014-08-20 09:45:07 +04:00
qui n'est pas le plus récent, mais qui reste le plus utilisé et le plus compatible avec les différents navigateur.
2014-09-16 19:33:10 +04:00
**NOTE :** Vous pouvez tester les effets visuels que vous ajoutez au fur et à mesure du tutoriel sur des sites comme [dabblet ](http://dabblet.com/ ) afin de voir les résultats, comprendre, et vous familiariser avec le langage.
2014-08-20 09:45:07 +04:00
Cet article porte principalement sur la syntaxe et quelques astuces.
```css
/* Les commentaires sont entourés par slash-étoile, comme cette ligne! */
/* ####################
2014-09-16 19:33:10 +04:00
## SÉLECTEURS
2014-08-20 09:45:07 +04:00
####################*/
/* Généralement, la première déclaration en CSS est très simple */
selecteur { propriete: valeur; /* autres proprietés...*/ }
/* Le sélécteur sert à cibler un élément du HTML
Vous pouvez cibler tous les éléments d'une page! */
* { color:red; }
/*
2014-09-16 19:33:10 +04:00
Voici un élément dans notre HTML :
2014-08-20 09:45:07 +04:00
< div class = 'une-classe classe2' id = 'unId' attr = 'valeur' / >
*/
/* Vous pouvez le cibler par une classe */
.une-classe { }
2014-09-16 19:33:10 +04:00
/* ou par deux */
2014-08-20 09:45:07 +04:00
.une-classe.classe2 { }
/* ou par son type */
div { }
/* ou son id */
#unId { }
/* ou par le fait qu'il a un attribut */
[attr] { font-size:smaller; }
/* ou que l'attribut a une valeur spécifique */
[attr='valeur'] { font-size:smaller; }
/* commence avec une valeur */
[attr^='val'] { font-size:smaller; }
/* termine avec une valeur */
[attr$='eur'] { font-size:smaller; }
/* contient une valeur */
[attr~='leu'] { font-size:smaller; }
/* Ce qu'il faut bien comprendre, c'est que vous pouvez combiner ceci -- Il ne doit pas y avoir
2014-09-16 19:33:10 +04:00
d'espaces entre. */
2014-08-20 09:45:07 +04:00
div.une-classe[attr$='eu'] { }
2014-09-16 19:33:10 +04:00
/* Vous pouvez aussi cibler un élément par son parent. */
2014-08-20 09:45:07 +04:00
/* Un élément qui est en enfant direct */
div.un-parent > .enfant {}
2014-09-16 19:33:10 +04:00
/* Cela cible aussi les .enfants plus profonds dans la structure HTML */
2014-08-20 09:45:07 +04:00
div.un-parent .enfants {}
2014-09-16 19:33:10 +04:00
/* Attention : le même sélecteur sans espace a un autre sens. */
2014-08-20 09:45:07 +04:00
div.un-parent.classe {}
/* Vous pouvez cibler un élément basé sur un enfant de même parent */
.je-suis-avant + .cet-element { }
/* ou n'importe quel enfant de même parent avec celui ci */
.je-suis-tout-avant ~ .cet-element {}
2014-09-16 19:33:10 +04:00
/* Il y a des pseudo-classes qui permettent de cibler un élément
basé sur le comportement, en plus de la structure de la page */
2014-08-20 09:45:07 +04:00
/* élément avec le curseur au-dessus */
:hover {}
/* lien visité */
:visited {}
/* lien non visité */
:link {}
/* élément avec le focus */
:focus {}
/* ####################
2014-09-16 19:33:10 +04:00
## PROPRIÉTÉS
2014-08-20 09:45:07 +04:00
####################*/
selecteur {
2014-09-16 19:33:10 +04:00
2014-08-20 09:45:07 +04:00
/* Units */
width: 50%; /* pourcentage */
2014-09-16 19:33:10 +04:00
font-size: 2em; /* taille de la police multipliée par X */
2014-08-20 09:45:07 +04:00
width: 200px; /* pixels */
font-size: 20pt; /* points */
width: 5cm; /* centimetres */
width: 50mm; /* millimetres */
width: 5in; /* pouces */
2014-09-16 19:33:10 +04:00
2014-08-20 09:45:07 +04:00
/* Couleurs */
background-color: #F6E ; /* court hex */
background-color: #F262E2 ; /* long hex */
background-color: tomato; /* couleur nommée */
background-color: rgb(255, 255, 255); /* rouge, vert, bleu */
background-color: rgb(10%, 20%, 50%); /* rouge, vert, bleu en pourcent */
background-color: rgba(255, 0, 0, 0.3); /* rouge, vert, bleu avec transparence */
2014-09-16 19:33:10 +04:00
2014-08-20 09:45:07 +04:00
/* Images */
background-image: url(/chemin-vers-image/image.jpg);
2014-09-16 19:33:10 +04:00
2014-08-20 09:45:07 +04:00
/* Polices */
font-family: Arial;
font-family: "Courier New"; /* Si espace, entre guillemets */
2014-09-16 19:33:10 +04:00
font-family: "Courier New", Trebuchet, Arial; /* Si la première n'est pas trouvée, la deuxième est utilisée, etc... */
2014-08-20 09:45:07 +04:00
}
```
## Utilisation
Le CSS s'écrit dans des fichiers `.css` .
```xml
2014-09-16 19:33:10 +04:00
<!-- Vous devez inclure le CSS dans la balise <head> : -->
2014-08-20 09:45:07 +04:00
< link rel = 'stylesheet' type = 'text/css' href = 'chemin/style.css' / >
<!-- Vous pouvez inclure du CSS dans le HTML directement, mais ce n'est vraiment pas recommandé. -->
< style >
selecteur { propriete:valeur; }
< / style >
2014-09-16 19:33:10 +04:00
<!-- ou directement sur l'élément HTML.
PS : à ne pas faire. -->
2014-08-20 09:45:07 +04:00
< div style = 'propriete:valeur;' >
< / div >
```
## Priorités
2014-09-16 19:33:10 +04:00
Comme on vient de le voir, un élément peut être ciblé par plus qu'un seul sélecteur
2014-08-20 09:45:07 +04:00
et une même propriété peut être définie plusieurs fois.
Dans ces cas, une des propriétés devient prioritaire.
2014-09-16 19:33:10 +04:00
Voici du code CSS :
2014-08-20 09:45:07 +04:00
```css
/*A*/
p.classe1[attr='valeur']
/*B*/
p.classe1 {}
/*C*/
p.classe2 {}
/*D*/
p {}
/*E*/
p { propriete: valeur !important; }
```
et le code HTML:
```xml
< p style = '/*F*/ propriete:valeur;' class = 'classe1 classe2' attr = 'valeur' >
< / p >
```
2014-09-16 19:33:10 +04:00
Les priorités de style sont :
2014-08-20 09:45:07 +04:00
Attention, les priorités s'appliquent aux **propriétés** , pas aux blocs entiers.
* `E` a la priorité grâce à `!important` .
* `F` vient ensuite, car le code se trouve directement dans le HTML.
* `A` vient ensuite, car il est le plus spécifique.
plus spécifique veut dire, celui qui cible le plus l'élément
* `C` vient ensuite. Il est aussi spécifique que `B` , mais est écrit après.
* Puis `B`
* Et enfin `D` .
## Compatibilité
2014-09-16 19:33:10 +04:00
La plupart des fonctionnalités de CSS2 (et de plus en plus CSS3) sont compatibles
avec tous les navigateurs. Mais il est important de vérifier la compatibilité.
2014-08-20 09:45:07 +04:00
[QuirksMode CSS ](http://www.quirksmode.org/css/ ) est une très bonne source pour cela.
## En savoir plus (en anglais)
* [Understanding Style Precedence in CSS: Specificity, Inheritance, and the Cascade ](http://www.vanseodesign.com/css/css-specificity-inheritance-cascaade/ )
* [QuirksMode CSS ](http://www.quirksmode.org/css/ )
* [Z-Index - The stacking context ](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context )