Qu'est-ce que CSS ?
===================

* Aperçu : First steps
* Suivant

**CSS** (*Cascading Style Sheets*) permet de créer des pages web à l'apparence soignée. Cet article vous propose de lever le voile en expliquant ce qu'est CSS ; un exemple simple en présentera la syntaxe, puis quelques termes clés du langage seront introduits.

|  |  |
| --- | --- |
| Prérequis : | 
 Notions de base en l'informatique,
 logiciels de base installés,
 savoir manipuler des fichiers, connaissance de base de HTML (cf. Introduction au HTML).
  |
| Objectif : | Apprendre ce qu'est CSS. |

Dans le cours Introduction au HTML, nous avons présenté le langage HTML et comment l'utiliser afin de rédiger des documents structurés. Ces documents seront consultables dans un navigateur ; les titres apparaîtront dans une police plus grande que le corps de texte, la rupture entre deux paragraphes sera marquée par un saut de ligne, et les liens seront soulignés et colorés pour les distinguer du reste du texte. L'image ci-dessous montre comment un navigateur affiche un document HTML — la mise en forme par défaut garantit un minimum de lisibilité, même si l'auteur de la page n'a spécifié aucune règle de style.

![La mise en forme par défaut appliquée par un navigateur.](/fr/docs/Learn/CSS/First_steps/What_is_CSS/html-example.png)

Le Web serait d'un ennui terrible si tous les sites ressemblaient à la page ci-dessus. Grâce aux CSS, vous pouvez contrôler exactement l'affichage de chaque élément HTML dans le navigateur et ainsi présenter vos documents avec la mise en forme de votre choix.

Pour plus d'informations sur les styles de navigateur/par défaut, consultez la vidéo suivante :

À quoi sert CSS ?
-----------------

Comme mentionné plus haut, CSS est un langage de mise en forme des documents.

Les **documents** en question sont des fichiers texte structurés avec un langage de balises — HTML est le plus connu de ces langages, d'autres exemples sont SVG ou XML.

**Présenter** un document à l'utilisateur signifie convertir ce document dans une forme utilisable par le public visé. Les navigateurs, tels Firefox, Chrome, Safari ou Edge sont conçus pour présenter visuellement des documents, que ce soit sur l'écran d'un ordinateur, un vidéo-projecteur ou une imprimante.

**Note :** Un navigateur est parfois appelé agent utilisateur. On entend par là un programme informatique qui agit pour un utilisateur au sein d'un système informatique. Pour CSS, les premiers agents utilisateur qui nous viennent à l'esprit sont les navigateurs. Ce ne sont pourtant pas les seuls. Il existe d'autres agents utilisateurs comme les programmes qui convertissent des documents HTML et CSS en documents PDF imprimables.

CSS peut être utilisé pour une mise en forme élémentaire des documents — par exemple, changer la couleur et la taille des titres et des liens. Il peut être utilisé pour concevoir une maquette — par exemple, transformer un texte affiché sur une colonne en une composition avec un cadre principal et une barre latérale pour les informations reliées. Avec CSS, on peut aussi produire des animations. N'hésitez pas à cliquer sur les liens de ce paragraphe pour observer différents exemples.

Syntaxe de CSS
--------------

CSS est un langage basé sur des règles — on définit des règles de styles destinées à des éléments ou des groupes d'éléments particuliers dans la page. Par exemple, « Je veux que le titre principal de ma page s'affiche en rouge en gros caractères. »

Dans le code suivant, une règle CSS élémentaire réalise cette mise en forme :


```css
h1 {
  color: red;
  font-size: 5em;
}
```


La règle commence par un sélecteur, l'élément HTML mis en forme. Ici, le style s'applique aux titres de niveau 1 (`<h1>`).

Suivent une paire d'accolades `{ }` à l'intérieur desquelles on trouve une ou plusieurs **déclarations**, sous la forme d'une paire **propriété: valeur**. Chaque paire précise une propriété de l'élément sélectionné, suivie de la valeur choisie pour cette propriété ; la propriété et la valeur sont séparées par deux points. Chaque déclaration se termine par un point-virgule. À chaque propriété définie par CSS correspondent différentes valeurs possibles. Dans l'exemple, la propriété `color` peut prendre différentes valeurs de type `<color>`. La propriété `font-size` accepte différentes tailles comme valeurs.

Une feuille de style CSS est constituée d'une succession de telles règles :


```css
h1 {
  color: red;
  font-size: 5em;
}

p {
  color: black;
}
```


On retient facilement certaines valeurs, d'autres sont plus difficiles à mémoriser. Pour s'y retrouver, sur MDN, la page individuelle de chaque propriété donne un aperçu rapide et complet des valeurs applicables.

**Note :** Sur MDN, dans la référence CSS, vous trouverez une collection de liens à propos de chaque propriété CSS (ainsi que d'autres aspects de CSS). Par ailleurs, n'hésitez pas à lancer des requêtes « mdn *nom-de-propriété-ou-fonctionnalité-css* » dans votre moteur de recherche préféré dès qu'un aspect de CSS vous interpelle. Vous pouvez, par exemple, tester les requêtes « mdn color » et « mdn font-size » !

Modules CSS
-----------

Il y a beaucoup de choses qu'on peut mettre en forme en utilisant CSS. C'est pour ça que le langage et ses spécifications ont été découpés en *modules*. En naviguant dans le site MDN vous croiserez ces modules : quand des pages de documentation sont regroupées, c'est la plupart du temps qu'elles réfèrent à un même module. Par exemple, jetez un œil à la référence MDN pour le module *Backgrounds and Borders*, vous y trouverez ce pour quoi il a été conçu, les différentes propriétés et fonctionnalités qu'il regroupe. Vous trouverez aussi des liens vers la spécification CSS qui définit cette technologie (voir plus bas).

À ce stade, inutile de se préoccuper de la structure de CSS (même s'il est parfois plus simple de trouver une information quand on a compris qu'une propriété est reliée à une famille d'autres propriétés au sein d'un même module de spécification).

Prenons un exemple précis et revenons au module *Backgrounds and Borders* — les propriétés `background-color` et `border-color` qui agissent sur l'arrière-plan et les bordures appartiennent toutes les deux à ce module.

### Spécifications CSS

Chaque technologie standard du Web (HTML, CSS, JavaScript, etc.) est définie dans un grand document appelé spécification (parfois abrégé en « spec »). Les spécifications sont publiées par des organisations de standardisation (telles que le W3C, WHATWG, ECMA, ou Khronos (en-US)), elles définissent précisément le comportement attendu de ces technologies.

CSS ne déroge pas à la règle — il est développé par un groupe au sein du W3C, nommé le *CSS Working Group* (ou « groupe de travail CSS » en français). Ce groupe est constitué de représentants des éditeurs de navigateurs et d'autres sociétés concernées par CSS. On y trouve aussi des *experts invités* affiliés à aucune des organisations membres qui apporte une voix indépendante à la conception de CSS.

De nouveaux aspects de CSS sont développés ou spécifiés par le groupe de travail CSS, parfois parce qu'un navigateur particulier désire tel comportement, d'autres fois parce que des concepteurs web et des développeurs demandent certaines fonctionnalités et enfin parfois lorsque le groupe de travail CSS a identifié un besoin. CSS est en développement constant, avec de nouvelles fonctionnalités disponibles au fur et à mesure. Une des caractéristiques cruciales de chaque brique du Web et donc de CSS est la rétro-compatibilité : chaque contributeur s'attache à garantir qu'un site web développé en 2000 avec le CSS disponible à l'époque sera toujours utilisable dans un navigateur actuel !

Si vous débutez en CSS, la lecture des spécifications peut être déroutante : elles s'adressent avant tout aux ingénieurs qui implémentent la prise en charge dans les navigateurs et pas aux développeurs web qui doivent comprendre les propriétés pour les utiliser dans leurs sites. Dans ce cas, la documentation MDN ou d'autres tutoriels sont recommandés. Il est pourtant important de savoir que les spécifications existent, de comprendre la relation entre celles-ci, le CSS que vous utilisez et la prise en charge des navigateurs (voir ci-dessous).

Prise en charge par les navigateurs
-----------------------------------

Les fonctionnalités CSS définies dans les spécifications peuvent uniquement être utilisées dans une page web si un ou plusieurs navigateurs les implémentent. Autrement dit, il faut bien qu'il y ait un programme qui puisse transformer les règles CSS en éléments affichés à l'écran.

Nous étudierons ce point plus en détail dans l'article sur le fonctionnement des CSS. Il est rare que les différents navigateurs implémentent simultanément une nouvelle fonctionnalité CSS. Il est donc fréquent que certains sous-ensembles de CSS soient fonctionnels pour certains navigateurs et pas pour d'autres. Pour cette raison, il est essentiel de vérifier l'état de la compatibilité et des implémentations. Sur chaque page MDN décrivant une propriété, le statut d'implémentation de la propriété est fourni dans un tableau de compatibilité web. Vous saurez ainsi s'il est pertinent de l'utiliser dans votre site web.

Voici, par exemple, le tableau de compatibilité pour la propriété `font-family`.

{{Compat}}Où continuer
------------

Maintenant que vous avez compris ce qu'est CSS, vous pourrez commencer à écrire vos premières règles de style dans la leçon Démarrer avec CSS.

* Aperçu : First steps
* Suivant