Les feuilles de style en cascade, généralement appelées CSS de l'anglais , forment un langage informatique qui décrit la présentation des documents HTML et XML. Les standards définissant CSS sont publiés par le World Wide Web Consortium (W3C). Introduit au milieu des années 1990, CSS devient couramment utilisé dans la conception de site web et bien pris en charge par les navigateurs web dans les années 2000.

Histoire du CSS Un concept parmi d'autres, présent dès l'origine du web Le concept de feuille de style est présent depuis l'origine du World Wide Web : le premier navigateur web WorldWideWeb permet de mettre en forme les documents à l'aide de ce qui serait aujourd'hui considéré comme une « feuille de style utilisateur »Tim Berners-Lee, The WorldWideWeb browser.. De même, les navigateurs Viola en 1992 et Harmony en 1993 recourent à un mécanisme similaire permettant de déterminer le rendu des polices de caractères, des couleurs ou de l'alignement du texte.

Il ne s'agit cependant pas de styles déterminés par l'auteur du document. HTML ne comportant pas non plus d'éléments de présentation dans ses premières années, une pression croissante s'exerce alors pour que les navigateurs permettent aux auteurs de déterminer eux-mêmes la présentation des pages webCascading Style Sheets, designing for the Web, Håkon Wium Lie et Bert Bos, ., dans une démarche issue de l'édition numérique.

C'est dans ce contexte, en 1994-1995, que le tout nouveau Netscape Navigator introduit les premiers éléments HTML de présentation à l'initiative de Marc Andreessen, tandis qu'apparaissent concurremment les premières propositions de styles externesUn grand nombre de propositions de techniques de styles ont été faites durant les premières années du web. Seules les trois principales sont citées dans l'article, mais toutes ont, à un degré variable, influencé le langage CSS. Voir http://www.w3.org/Style/History/. :

le « stylesheet proposal » de Pei Wei (créateur de Viola)EMail Msg <[email protected]>. ; les « Stylesheets for HTML » de Robert Raisch (O'Reilly)EMail Msg <[email protected]>. ; les « Cascading HTML Style Sheets » (CHSS) d'Håkon Wium LieCascading HTML Style Sheets -- A Proposal..

L'apparition de CSS répond à une volonté de « proposer une alternative à l'évolution du HTML d'un langage de structuration vers un langage de présentation », 2005, http://people.opera.com/howcome/2006/phd/#h-28..

Une troisième voie de développement est également ouverte à la même époque : le langage de transformation DSSSL des documents SGML, élaboré par James Clark, suggère la possibilité d'un langage de styles qui ne soit pas seulement descriptif et se rapproche d'un véritable langage de programmationplus généralement, « De nombreuses participants à la liste de discussion www-talk, le lieu de rencontre électronique de la première communauté web, étaient d'accord sur le fait que le web tirerait profit des feuilles de styles. Cependant, il y avait un désaccord sur le point de savoir s'il avait besoin d'un nouveau langage de feuille de style ou si l'un des langages déjà existants, créés au départ pour la publication imprimée, suffirait à ses besoins ». Håkon Wium Lie, , 2005, http://people.opera.com/howcome/2006/phd/#h-34.. Cette voie est suivie par Netscape, qui propose en 1996 au W3C les « JavaScript-Based Style Sheets » (JSSS)JavaScript-Based Style Sheets., implémentées par Netscape Navigator 4 en 1997.

Les origines des CSS sont donc liées à trois possibilités majeures : HTML est-il un langage de structuration ou un langage mixte de mise en forme et de structuration ? Les choix de présentation de l'auteur doivent-ils avoir la primauté sur ceux de l'utilisateur ? La réponse aux besoins est-elle un langage de description de la mise en forme ou un langage de transformation ?

Les premiers développements La première proposition de formulée par Håkon Wium Lie retient l'attention de Dave Raggett, qui est alors le principal éditeur du projet de spécification HTML 3.0. Partisan d'un HTML purement structurel, il encourage la publication d'un document de travail CHSS, afin que celui-ci puisse être présenté et discuté à la seconde conférence internationale sur le WWW (, Chicago, 1994). Il modifie également avec Håkon Lie le navigateur ArenaPrédécesseur d'Amaya, Arena est le premier navigateur développé par le W3C, à l'origine à des fins de tests de HTML 3.0. Håkon Lie collabora à son développement à partir de 1994 et ce navigateur anticipa de nombreux développement ultérieurs de CSS2. Abandonné par le W3C en tant que plate-forme de test en 1996, Arena fut ensuite temporairement maintenu par le Yggdrasil Computing jusqu'en 1998. Voir http://www.w3.org/Arena/., afin de permettre de tester ce langage, et en fait la démonstration lors de la troisième conférence WWW en 1995.

Parallèlement, Bert Bos, qui travaillait alors sur le navigateur ArgoCréé par Bert Bos en août 1994, Argo faisait partie d'un projet web de l'université de Groningue. Voir http://www.w3.org/People/all#bert., et qui avait soumis au W3C son propre projet « » (SSP), décide de joindre ses efforts à ceux d'Håkon Lie. SSP ayant été développée avec l'idée d'être applicable non seulement à HTML, mais aussi à d'autres langages de balisage, Bert Bos et Håkon Lie reprennent cet objectif, et en font une des caractéristiques clés de ce qui devient alors CSS proprement dit.

Un autre aspect de CSS s'avère alors déterminant face aux alternatives existantes : CSS est le premier langage à inclure l'idée de « cascade » (feuille de style en cascade), c'est-à-dire la possibilité pour le style d'un document d'être hérité à partir de plusieurs « feuilles de style ». Cela permet d'arbitrer entre plusieurs sources concurrentes de mise en forme d'un élément, et permet théoriquement de composer entre les préférences stylistiques des auteurs et des utilisateurs.

Le (W3C) devient opérationnel en 1995, et la liste de discussion www-style est alors crééeles archives de cette liste dédiée au développement des CSS sont accessibles sur http://lists.w3.org/Archives/Public/www-style/.. La même année se tient à Paris un « W3C style sheet workshop » décisif pour l'avenir des CSSReport on the W3C style sheet workshop, Paris '95.. Y est notamment affirmée la volonté de conserver les feuilles de style sous une forme simple, ce qui exclut l'hypothèse JSSS de Netscape. Par ailleurs, Thomas Reardon (Microsoft) y annonce le support à venir de CSS dans les futures versions d'Internet Explorer : dès lors, lorsque le W3C crée à la fin de l'année le « » (HTML ERB) pour ratifier les futures spécifications HTML, DOM et CSS, Netscape, représenté par Lou Montulli, se rallie finalement au projet CSS mené par Bert Bos et Håkon Lie.

Vers une maturation difficile Contrairement aux logiciels, les spécifications CSS ne sont pas développées par versions successives, qui permettraient à un navigateur de se référer à une version en particulier.

CSS est développé par « niveaux », ce qui contraint chaque nouveau niveau à intégrer le précédent, et chaque implémentation à être compatible avec la précédente : CSS1 est donc développé pour être un sous-ensemble de CSS2, qui est lui-même développé pour être un sous-ensemble de CSS3.

Ceci explique en partie la lenteur de l'avancement normatif de CSS« , What is the CSS Working Group Doing?, », 2 juillet 2007..

CSS1, des implémentations difficiles pendant la guerre des navigateurs La spécification CSS1 finale est publiée le , et définit une cinquantaine de propriétés. CSS1 se définit comme un « mécanisme de feuille de style simple, permettant aux auteurs et aux lecteurs d'attacher des styles (…) au document HTML »Cascading Style Sheets, level 1, abstract, http://www.w3.org/TR/REC-CSS1.. Cette simplicité se traduit par le choix d'un langage qui peut être aisément lu et écrit directement par ses utilisateurs humains, et d'une terminologie conforme aux usages courants dans la publication informatique. Le choix éventuel d'exprimer CSS dans une syntaxe XML ou SGML, régulièrement évoquée pour éviter l'implémentation d'un nouveau mode d'analyse syntaxique, est donc définitivement écarté« Au bout du compte, la possibilité d'être lu et écrit par l'humain avait une valeur ajoutée plus élevée que la possibilité de réutiliser des analyseurs syntaxiques existants », Håkon Wium Lie, Cascading Style Sheets, Thesis submitted for the degree of Doctor Philosophiœ, Faculty of Mathematics and Natural Sciences, University of Oslo, Norway, 2005, http://people.opera.com/howcome/2006/phd/#ch-problems..

CSS1 ne décrit pas uniquement sa propre grammaire : ce premier niveau décrit en effet une grammaire destinée à permettre aux niveaux ultérieurs d'ajouter de nouvelles fonctionnalités, tout en autorisant la lecture de ces futures feuilles de styles par les navigateurs plus anciens. Ainsi, un ancien navigateur lisant un nouveau style ne le comprend pas, mais peut l'identifier en tant que tel, et l'ignorer. CSS garantit ainsi sa compatibilité descendante.

CSS1 définit essentiellement les propriétés de rendu typographique du texte : pour les fontes : la couleur, la taille, la graisse, l'espacement, etc. pour les blocs (de texte), leurs bordures, leurs marges, leur fond, les marqueurs de liste, etc.

Les possibilités de mise en page restent plus limitées que celle offertes par HTML, en particulier avec les tables. En outre, la mise en œuvre est sévèrement boguée dans tous les navigateurs jusqu'à Internet Explorer 5 pour Macintosh. La propriété float, qui sera par la suite massivement utilisée pour la mise en page CSS globale des designs web, n'est alors conçue que comme un moyen de placer localement, côte à côte, une portion réduite du contenu, tel qu'une image, et le reste du texte« ». David Baron, membre du groupe de travail CSS du W3C, Overuse of floats considered harmful.. Compte tenu des implémentations problématiques de CSS1, le détournement de l'élément HTML table pour gérer la mise en page globale reste dans l'immédiat la solution la plus couramment retenue par les concepteurs de site web.

En 1996, Internet Explorer 3.0 est le premier navigateur commercial à implémenter partiellement CSS alors que celle-ci est encore en cours de formulation. Cette implémentation anticipée, menée par Chris Wilson« Program Manager » puis « », Chris Wilson est à partir de 1996 un des acteurs majeurs du développement CSS. Voir http://blogs.msdn.com/cwilso/. ne correspond pas à la spécification finale. En 1997, Internet Explorer 4.0 voit la naissance d'un nouveau moteur de rendu, Trident, à l'origine du support croissant mais problématique de CSS dans les différentes versions de ce navigateur sur Windows, jusqu'à Internet Explorer 7 inclusLe moteur de rendu Trident mêle en fait deux technologies de rendu graphique : CSS y est concurrencé par le mécanisme connu sous le nom de « haslayout », mis en évidence par reverse engineering en 2005 par un groupe de développeurs indépendants étudiant les bugs de rendu CSS d'Internet Explorer Voir On having layout par Ingo Chao, et "HasLayout" Overview (Markus Mielke, Microsoft)..