Feuilles de style en cascade
Le langage informatique CSS permet de décrire la présentation des documents HTML et XML. Les standards définissant CSS sont publiés par le World Wide Web Consortium.
Recherche sur Google Images :
![]() Source image : cazert.wordpress.com Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur. |
Page(s) en rapport avec ce sujet :
- Le langage CSS (Cascading Style Sheets : feuilles de style en cascade) est ... Plusieurs navigateurs avaient leur langage de style propre qui pouvaient être... (source : webserviteur)
- Création de CSS pour un site homogène Le concept de feuilles de style en cascade est apparu en 1996 avec la publication par le W3C d'une nouvelle... (source : artwhere)
- Editeur de CSS. Le concept de feuilles de style en cascade est apparu en 1996 avec... de style, un ordre de priorité est donné par le browser (navigateur).... (source : neocms)
Le langage informatique CSS (Cascading Style Sheets : feuilles de style en cascade) permet de décrire 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 fréquemment utilisé dans la conception de sites web et bien pris en charge par les navigateurs web dans les années 2000.
Séparer la structure d'un document de ses styles de présentation
L'un des objectifs majeurs de CSS est de permettre la stylisation hors des documents. Il est par exemple envisageable de ne décrire que la structure d'un document en HTML, et de décrire toute la présentation dans une feuille de style CSS scindée. Les styles sont appliqués au dernier moment, dans le navigateur web des visiteurs qui consultent le document. Cette séparation apporte un certain nombre de bénéfices, permettant de perfectionner l'accessibilité, de changer plus aisément de structure[réf. nécessaire] et de présentation, et de diminuer la complexité de l'architecture d'un document.
Ainsi, les avantages des feuilles de style sont multiples :
- La structure du document et la présentation peuvent être gérées dans des fichiers scindés.
- La conception d'un document se fait tout d'abord sans se soucier de la présentation, ce qui permet d'être plus efficace.
- Dans le cas d'un site web, la présentation est uniformisée : les documents (pages HTML) font référence aux mêmes feuilles de styles. Cette caractéristique permet qui plus est une remise en forme rapide de l'aspect visuel.
- Un même document peut donner le choix entre plusieurs feuilles de style, par exemple une pour l'impression et une pour la lecture à l'écran. Certains navigateurs web permettent au visiteur de choisir un style parmi plusieurs.
- Le code HTML est énormément réduit en taille et en complexité, dans la mesure où il ne contient plus de balises ni d'attributs de présentation.
Décliner les styles de présentation selon le récepteur
CSS sert à définir le rendu d'un document selon le média de restitution et de ses capacités (type de moniteur ou de système vocal), de celles du navigateur (texte ou graphique), mais aussi des prédilections de son utilisateur.
Les feuilles de styles peuvent en 2007 être différenciées pour les médias suivants :
all
: quel que soit le médiascreen
: écrans d'ordinateur de bureauprint
: pour l'impression papierhandheld
: écrans de particulièrement petite taille et clients aux capacités limitéesprojection
: lorsque le document est projetétv
: lorsque le document est affiché sur un appareil de type télévisionspeech
: pour le rendu via une synthèse vocale
Dans chaque média, les styles de présentation déterminés par l'auteur du document se combinent avec ceux par défaut de l'agent utilisateur et ceux issus des prédilections de l'utilisateur et de sa configuration personnelle.
Les capacités du récepteur peuvent être prises en compte par les auteurs, à destination des agents utilisateurs implémentant le module CSS3 «media queries»[1] : ce dernier sert à conditionner la prise en compte d'une feuille de style à des contraintes concernant surtout la résolution ou la capacité de restitution des couleurs.
Permettre la cascade des styles
La «cascade» est la combinaison de différentes sources de styles appliqués à un même document, selon leur degré respectif de priorité. Différents modes de cascade peuvent se combiner :
- par origine des styles, issus de l'agent utilisateur, de l'auteur et de l'utilisateur. La priorité supérieure accordée aux styles de l'utilisateur est un des facteurs principaux de l'accessibilité des documents présentés avec CSS.
- par média : une feuille de style générique peut s'appliquer à plusieurs media de restitution (affichage à l'écran, impression, projection) et être combinée avec des feuilles propres à chaque media.
- selon l'architecture d'un ensemble de documents web : une feuille de style générique peut s'appliquer à la totalité des pages d'un site web, être combinée avec des feuilles propres à chaque rubrique de ce dernier, ainsi qu'avec des styles propres à telle ou telle page spécifique.
- selon l'architecture des feuilles elles-mêmes : une feuille de style externe au document peut être combinée à une feuille de style interne ainsi qu'à des styles appliqués directement à chaque élément qui le compose (styles «en ligne»). Une feuille de style peut aussi importer une ou plusieurs autres feuilles externes.
Le rendu d'un document stylé est déterminé par les concepts de boîte et de flux. Le moteur de rendu CSS établit une «structure de formatage» reflétant l'arbre logique du document. Chaque élément de cette structure génère une ou plusieurs zones pourvues de propriétés d'affichage ou de rendu vocal paramétrables. L'affichage ou la lecture s'effectuent à partir du flux des boîtes successivement générées pour chaque élément tel qu'il apparaît dans l'ordre linéaire de la structure de formatage.
Selon les cas de figures, ces différents types de boîtes :
- peuvent avoir des propriétés de marges, de bordure, d'arrière-plan, de largeur ou de hauteur, etc. Dans un rendu vocal, des propriétés équivalentes permettent de déterminer des pauses dans la lecture avant ou après le contenu, de choisir une voix, de régler son débit ou son niveau sonore.
- peuvent être déplacées comparé à leur position par défaut dans le flux, ou avoir un comportement spécifique dans ce dernier (permettre un rendu en colonnes adjacentes, se superposer aux boîtes voisines, ou être masquées par exemple).
Propriétés et valeurs
Les caractéristiques applicables aux boîtes CSS sont exprimées sous forme de couples propriété : valeur
.
Les propriétés sont libellées avec mots-outils anglais tels que «width» (largeur), «font-size» (taille de la police de caractères) ou «voice-volume» (volume sonore du rendu vocal).
Les valeurs peuvent être selon les cas exprimées avec unités normalisées d'autre part, ou de mots-clés propres à CSS. A titre d'exemple, une couleur de fond ou de texte peut être exprimée à l'aide du modèle RGB ou des mots clés black, blue, fuchsia, etc.
Les propriétés CSS ont été établies selon un compromis entre deux contraintes opposées : favoriser la lecture des feuilles de styles par les agents utilisateurs en multipliant les propriétés individuelles, ou favoriser leur rédigéure par les auteurs en recourant à un nombre plus réduit de propriétés combinées. A titre d'exemple, la position d'une image d'arrière-plan est déterminée par une propriété unique (background-position
), combinant les deux valeurs d'abscisse et d'ordonnée, et non par deux propriétés différentes. De même, il existe des propriétés raccourcies permettant aux auteurs de simplifier l'écriture d'une série de propriétés : le raccourci font
permet, par exemple, de résumer en une seule règle la totalité des propriétés de police de caractères, de taille, de hauteur de ligne, de casse, de graisse et d'italique. Mais l'utilisation du caractère «/» rend bien plus complexe l'analyse syntaxique des feuilles de styles par les agents utilisateurs[2].
Sélecteurs et blocs de règles
Les propriétés sont regroupées par blocs de règles, délimités par les accolades {}. Chaque bloc est précédé d'un sélecteur désignant les éléments structurels auxquelles les propriétés concernées doivent être appliquées :
p { font-size : 110%; font-family : Helvetica, sans-serif; }
Bien que ce code CSS ne décrive pas la totalité de la présentation d'un document, il forme à lui seul une feuille de style à part entière. Il fixe pour les éléments p
(paragraphe), le paramètre de taille à la valeur 110% et le paramètre de police à la valeur Helvetica, ou, si Helvetica est indisponible, une police générique sans serifs.
p
est un exemple de sélecteur simple. D'autres sélecteurs simples peuvent cibler plus particulièrement un ou plusieurs éléments en recourant aux identifiants ainsi qu'aux classes attribués aux éléments structurels : les identificateurs (attribut id
) sont utilisés pour caractériser un élément unique (un menu, un mot... ), alors que les classes (attribut class
) sont utilisées pour caractériser un ensemble d'éléments (comme des menus organisés de manière identique).
Des sélecteurs contextuels, constitués par combinaisons de sélecteurs simples, permettent de viser des éléments selon leur position dans le document : a img
ne désignera par exemple que les images présentes dans des liens.
Pour permettre la cascade des styles, des règles de calcul de spécificité permettent au moteur de rendu CSS de déterminer le degré de priorité à appliquer à différents sélecteurs visant concurremment un même élément, et de trier ainsi les règles à lui appliquer[3]. Ce calcul repose sur la somme des valeurs données aux divers sélecteurs simples formant le sélecteur contextuel :
- chaque type de sélecteur simple a sa valeur de priorité : 0, 0, 0, 1 pour un élément, 0, 0, 1, 0 pour une classe, 0, 1, 0, 0 pour un identifiant unique
id
. - la mention
!important
ajoutée dans la règle donne une spécificité de 1, 0, 0, 0. - l'origine du style est déterminante en dernier ressort : un attribut
style
présent dans le document HTML a la priorité sur les autres sources de styles auteur, pour permettre les surcharges locales des styles communs à une série de pages web. D'autre part, à priorités identiques, un style utilisateur l'emporte sur un style auteur, qui l'emporte sur le style par défaut de l'agent utilisateur.
Les feuilles de styles sont par conséquent des documents textuels, dont la syntaxe se veut simple et intuitive, pour permettre leur lecture et leur rédigéure autant directement par l'auteur qu'avec un logiciel.
Le concept de feuille de style est présent dès l'origine du World Wide Web : le premier navigateur web («WorldWideWeb», renommé ensuite «Nexus») sert à mettre en forme les documents avec ce qui serait actuellement reconnu comme une «feuille de style utilisateur»[4]. De même, les navigateurs Viola en 1992 et Harmony en 1993 recourent à un mécanisme identique servant à 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. Les premières implémentations HTML ne comportant pas non plus d'éléments de présentation, une pression croissante s'exerce dans ce cas pour que les navigateurs permettent aux auteurs de déterminer eux-mêmes la mise en forme des pages web[5], dans une démarche issue de la publication imprimée électronique. 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 formats de styles externes[6] : le «stylesheet proposal» de Pei Wei (créateur de Viola) [7], les «Stylesheets for HTML» de Robert Raisch (O'Reilly) [8], et enfin les «Cascading HTML Style Sheets» (CHSS) d'Håkon Wium Lie[9]. La naissance 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»[10].
Une troisième voie de développement est aussi ouverte à la même époque : le langage de transformation DSSSL des documents SGML, élaboré par James Clark, suggère la possibilité d'un format de styles qui ne soit pas uniquement descriptif, et se rapproche d'un véritable langage de programmation[11]. Cette voie est suivie par Netscape, qui propose en 1996 au W3C les «JavaScript-Based Style Sheets» (JSSS) [12], implémentée par Netscape Navigator 4 en 1997.
Les origines des CSS sont par conséquent liées à trois alternatives majeures :
- HTML est-il un format de structuration ou un format 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 format de description de la mise en forme, ou un langage de transformation ?
Les premiers développements
La première proposition de Cascading HTML Style Sheets formulée par Håkon Wium Lie retient l'attention de Dave Raggett, qui est dans ce cas le principal éditeur du projet de spécification HTML3.0. Partisan d'un HTML purement structurel, il encourage la publication d'un document de travail CHSS, pour que ce dernier puisse être présenté et discuté à la seconde conférence mondiale sur le WWW (Mosaic and the web', Chicago, 1994). Il modifie aussi avec Håkon Lie le navigateur Arena[13], pour permettre de tester ce format, et en fait la démonstration lors de la troisième conférence WWW en 1995.
Parallèlement, Bert Bos, qui travaillait dans ce cas sur le navigateur Argo [14], et qui avait soumis au W3C son propre projet «Stream-based Style Sheet Proposal» (SSP), décide de joindre ses effets à ceux d'Håkon Lie. SSP ayant été développé avec l'idée d'être applicable non seulement à HTML, ainsi qu'à 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 dans ce cas CSS lui-même.
Un autre aspect de CSS s'avère dans ce cas déterminant face aux alternatives existantes : CSS est le premier format à 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 qui plus est d'une «feuille de style». Cela permet d'arbitrer entre plusieurs sources concurrentes de mise en forme d'un élément, et répond par conséquent à l'obligation de composer entre les prédilections stylistiques des auteurs et des utilisateurs.
Le World Wide Web Consortium (W3C) devient opérationnel en 1995, et la liste de discussion www-style est dans ce cas créée[15]. La même année se tient à Paris un «W3C style sheet workshop» décisif pour l'avenir des CSS[16]. Y est surtout affirmée la volonté de conserver les feuilles de style sous une forme simple, ce qui exclut l'hypothèse JSSS de Netscape. D'autre part, Thomas Reardon (Microsoft) y annonce le support à venir de CSS dans les futures versions d'Internet Explorer : par conséquent, quand le W3C crée à la fin de l'année l'«HTML Editorial Review Board» (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 complexe
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 surtout. 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 par conséquent 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[17].
CSS1, des implémentations complexes au cours de la guerre des navigateurs
La spécification CSS1 finale est publiée le 17 décembre 1996, 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 ainsi qu'aux lecteurs d'attacher des styles (…) au document HTML»[18]. Cette simplicité se traduit par le choix d'un langage qui peut être facilement lu et rédigé 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 par conséquent définitivement écartée[19].
CSS1 ne décrit pas seulement sa propre grammaire : ce premier niveau décrit en effet une grammaire conçue pour permettre aux niveaux ultérieurs d'ajouter de nouvelles fonctionnalités, tout en autorisant la lecture de ces futures feuilles de styles par les implémentations d'origine. Ces nouvelles fonctionnalités ne seront pas comprises par les implémentations d'origine, mais pourront être identifiées comme telles, et ignorées. CSS garantit ainsi sa compatibilité ascendante.
CSS1 définit principalement les propriétés de rendu typographique du texte : fontes (polices), couleur, taille des caractères, graisse, espacements, bordures et gestion des marqueurs de liste. Il n'est par conséquent pas toujours question de «mise en page» : la propriété float
, qui sera ensuite massivement utilisée pour la mise en page CSS globale des designs web, n'est dans ce cas 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[20]. 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 fréquemment retenue par les auteurs de contenu web.
En 1996, Internet Explorer 3.0 est le premier navigateur commercial à implémenter partiellement CSS alors que celle-ci est toujours en cours de formulation. Cette implémentation anticipée, menée par Chris Wilson[21] ne correspond pas à la spécification finale. En 1997, Internet Explorer 4.0 voit l'apparition 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 sous Windows, jusqu'à IE7 inclus[22].
Netscape Navigator 4.0 suit le mouvement en 1997, malgré ses réticences historiques vis-à-vis de CSS[23] : dans le contexte de la guerre des navigateurs, il s'agit dans ce cas essentiellement d'éviter que Microsoft ne puisse s'affirmer comme le navigateur le plus conforme. Cependant, cette implémentation précipitée, basée sur des méthodes javascript internes, se révèle finalement peu exploitable par les producteurs de contenus. Netscape Navigator 4.0 apporte aussi une implémentation JSSS, qui restera sans lendemain[24]. Il faudra attendre le nouveau moteur de rendu Gecko et son intégration dans Netscape 6 pour parvenir à une véritable implémentation de CSS1.
En 1998, alors que s'achève la guerre des navigateurs opposant Netscape et Microsoft, Opera 3.5, dont Håkon Lie est entre-temps devenu le directeur technique, parvient à une implémentation plus complète de CSS1, facilitée par la publication de la première «Test suite for Cascading Style Sheets (CSS) Level 1» créée essentiellement par Eric Meyer pour le W3C[25]. La présence de ces suites de test se révèle un atout majeur à la fois pour les implémentations dans les navigateurs et pour l'appropriation des techniques CSS par les auteurs (en fournissant des exemples détaillés des propriétés et de leurs valeurs).
Enfin, sous l'impulsion de Tantek Çelik, Internet Explorer 5.0 pour Macintosh lancé en mars 2000, basé sur Tasman, un moteur de rendu spécifique sans rapport avec Trident, est le premier navigateur à supporter totalement (à plus de 99 %) CSS1. Pour assurer la compatibilité avec les précédentes pratiques de codage propre à chaque implémentation (la «soupe de balises»), et permettre un affichage correct des documents web qu'ils soient respectueux ou non des standards CSS et HTML, il est aussi le premier à mettre en œuvre la technique du doctype switching. Adoptée ensuite par l'ensemble des navigateurs, celle-ci devient ensuite l'une des clés de l'implémentation progressive de CSS : elle permet en effet au navigateur de conserver d'anciennes implémentations propriétaires pour des raisons de compatibilité, tout en ayant la possibilité d'opter, selon la syntaxe de la déclaration de type de document de la page, pour un mode de rendu conforme à de nouvelles implémentations standards[26].
Durant cette période de la fin des années 1990, la conception web est avant tout dépendante de l'utilisation d'HTML comme format de présentation. La défaite de Netscape à l'issue de la guerre des navigateurs, le renouveau qui s'en suit via le projet Mozilla, la naissance d'IE5 Mac, ainsi qu'à un moindre titre l'évolution d'Internet Explorer Windows 5. x, amorcent cependant au début des années 2000 une nouvelle étape dans l'évolution des pratiques de conception des sites web par les auteurs : ces navigateurs permettent en effet de montrer que les pratiques historiques datant de l'époque de la guerre des navigateurs, mêlant structure et présentation, peuvent réellement être abandonnées au profit d'une démarche basée sur les feuilles de styles et le respect plus général des standards du web (au sens d'HTML et CSS). Jeffrey Zeldman, co-fondateur du Web Standards Project et fondateur d'A List apart en 1998, apparaît dans ce cas comme la figure emblématique de ce mouvement de promotion des standards[27]. Il est aussi l'inspirateur d'une démarche de conception «hybride», tirant profit des techniques CSS tout en demeurant provisoirement dans le cadre d'une mise en forme des documents basée sur les tableaux de présentation.
CSS2, des ambitions précipitées
Pour répondre aux besoins que la première spécification CSS1 ne couvrait pas toujours, CSS est attribué en 1997 à un nouveau groupe de travail au sein du W3C, présidé par Chris Lilley. En 2007, ce groupe comporte surtout des représentants d'Apple, Google, IBM, Microsoft, Adobe, de la Fondation Mozilla et d'Opera.
Publié comme une recommandation en mai 1998, le second niveau de CSS étend énormément les possibilités théoriques des feuilles de styles en cascade, avec surtout à peu près 70 propriétés supplémentaires. À la mise en forme typographique du texte initiée avec CSS1 s'ajoutent en effet surtout :
- la déclinaison en styles propres aux divers média dans lesquels une page web peut être restituée (impression, rendu par une synthèse vocale, par un système braille, par un système de projection, un mobile, etc. )
- de nouvelles propriétés de positionnement à l'écran pour permettre la réalisation de mise en pages avancées, issues d'un document élaboré conjointement par Microsoft et Netscape[28]
- un jeu de propriétés autorisant le téléchargement de polices de caractères spécifiques
- de nouvelles propriétés servant à faire intervenir les prédilections de l'utilisateur dans la mise en forme d'un site.
Cependant, cette richesse fonctionnelle ne rencontre qu'un écho limité dans ses implémentations :
- La déclinaison par média est en partie un échec : les styles de rendus vocaux restent théoriques faute de prise en compte par les navigateurs vocaux et lecteurs d'écran. Ils s'avèrent d'autre part incompatibles avec le standard d'interaction vocale SSML. Il en est de même de l'affichage et de l'impression braille. Les styles d'impression ne sont que particulièrement partiellement adoptés par les navigateurs graphiques, tandis qu'une partie des navigateurs pour mobiles ignorent toujours au début des années 2000 le type de média CSS qui leur est dédié.
- Seules quelques propriétés avancées de positionnement sont reconnues par la totalité des navigateurs graphiques, consolidant ainsi les pratiques de mise en page qui reposent sur des détournements de fonctionnalités CSS (dispositif des blocs flottants ou situés) et HTML (tableaux de mises en page).
- Le téléchargement de polices de caractères suscite des implémentations non conformes et divergentes entre Netscape et Internet Explorer, et rencontre l'opposition des éditeurs de fontes, soucieux de préserver leurs intérêts commerciaux[29].
Plusieurs causes sont évoquées pour expliquer ces difficultés et la lenteur des implémentations CSS2 :
- la «sous-spécification ou quasi-inimplémentabilité de certaines sections»[30]. Håkon Lie souligne lui-même dans sa thèse sur les feuilles de style en cascade, en 2005, les risques de non implémentation ou de perte d'interopérabilité liés à des «fonctionnalités excessives», telles que les marqueurs de liste, les repères de coupe pour l'impression ou le téléchargement de polices de caractères. De même, la complexité des sélecteurs avancés est difficilement conciliable avec la gestion de la cascade.
- l'absence d'intérêt de la part des fabricants de navigateurs pour des fonctionnalités qui ne répondaient pas obligatoirement à leurs objectifs stratégiques ou commerciaux.
- l'interruption du développement d'Internet Explorer, navigateur dominant du marché, de 2001 à 2006. Håkon Lie écrivait en effet en 2005 : «2001 est un tournant pour CSS. C'est l'année où Microsoft produit Internet Explorer 6.0 qui offre une prise en charge fonctionnelle, quoiqu'incomplète et buggée, de CSS (…) Aucun autre navigateur n'a été capable de concurrencer WinIE en termes de nombre d'utilisateurs. WinIE a, par conséquent, déterminé le sous-ensemble de CSS utilisable par les auteurs. La prise en charge limitée de CSS par WinIE, combinée à un monopole de fait en matière de navigateur web, est aujourd'hui le plus grave problème du déploiement de CSS.»[31]
CSS 2.1, retour aux implémentations
Les retours d'implémentation de CSS2 amènent le groupe de travail CSS du W3C à rédiger à partir de 2001 une version révisée CSS 2.1 («CSS Level 2, Revision 1»), sur la base de ce qui était effectivement adopté par les différents navigateurs. Les objectifs de cette révision sont[32] :
- de maintenir la compatibilité avec les parties de CSS2 qui sont beaucoup acceptés et mises en application.
- d'incorporer dans la norme l'ensemble des errata CSS2 déjà publiés.
- Quand les implémentations changent profondément de la spécification CSS2, de modifier la spécification pour qu'elle soit en accord avec les pratiques généralement admises.
- de supprimer les systèmes CSS2 qui ont été refusés par la communauté CSS, vu leur manque d'implémentation. CSS 2.1 vise à refléter les mécanismes CSS qui ont été raisonnablement et beaucoup implémentés pour les langages HTML et XML généralement (plutôt que pour un langage XML surtout, ou pour HTML seul).
- de supprimer les mécanismes CSS2 qui seront rendus obsolètes par CSS3, et encourager ainsi l'adoption de mécanismes CSS3 à leur place.
- d'ajouter un (très) petit nombre de nouvelles valeurs de propriétés, quand l'expérience d'implémentation a montré qu'elles répondaient à un besoin pour la mise en application de CSS2.
CSS 2.1 corrige CSS2 sur de nombreux points de détail, en supprime certaines sections en tout ou partie (les styles vocaux défini sous le type de media «aural», les styles d'impression, les polices téléchargeables, dont les définitions plus probantes sont repoussées à la future CSS3), et l'explicite à partir des constats mis à jour lors des implémentations (la gestion avancée des blocs flottants via les «contextes de formatage»[33]).
Après avoir connu 8 versions successives, CSS 2.1 est en juillet 2007 une recommandation candidate, c'est-à-dire le standard que doivent suivre les implémentations[34].
En 2007, aucun navigateur n'a en effet achevé l'intégration de CSS 2.1 : celle-ci serait implémentée à 56 % par Internet Explorer 7, 91 % par Firefox 2 et 94 % par Opera 9[35]. D'autre part, seule une partie des navigateurs graphiques ont passé avec succès ou retenu comme objectif le test Acid2, lancé en 2005 par le Web Standards Project, à l'initiative d'Håkon Lie, pour faciliter surtout l'implémentation d'un choix de fonctionnalités CSS 2.1 reconnues comme les principales avancées nécessaires : positionnement d'éléments lors de l'affichage, généralisation du modèle de rendu en tableau à l'ensemble des éléments, contenu généré via CSS. L'utilisation professionnelle de CSS reste par conséquent limitée à un sous-ensemble arbitraire de celle-ci, déterminé par les implémentations communes.
CSS3
Le développement du troisième niveau des feuilles de styles en cascade débute dès 1999, parallèlement à celui de CSS 2.1.
CSS3 devient «modulaire», pour favoriser ses mises à jours, mais également son implémentation par des agents utilisateurs aux capacités ainsi qu'aux besoins de plus en plus variés (navigateurs graphiques, navigateurs pour mobiles, navigateurs vocaux). Les navigateurs peuvent ainsi implémenter des sous-ensembles de CSS3[36].
Dès lors, le degré d'avancement de CSS3 fluctue selon les modules et le degré de priorité qui leur a été donné par le groupe de travail CSS[37]. En 2007, les modules les plus avancés (recommandations candidates) concernent la mise en forme des annotations ruby, la négociation de style entre serveurs et agents utilisateurs («Media Queries»), le rendu web TV, la gestion des couleurs ou encore la prise en compte de la configuration de l'interface utilisateur. Dans d'autres cas, des modules peuvent atteindre le stade de recommendation candidate, mais être ensuite ramené au stade de document travail à cause des difficultés mises à jour suite à l'appel à implémentation. C'est par exemple le cas du module de typographie «CSS Text».
De même, les implémentations fluctuent selon les stratégies et les besoins des différents navigateurs. Opera implémente par exemple les «Media Queries», qui répondent à ses besoins spécifiques de navigateur multi-plateforme embarqué sur des clients ayant des capacités d'affichage particulièrement variées. Firefox, davantage orienté vers le navigateur exploité comme plateforme, privilégie par contre des modules appropriés à cet usage comme le module sélecteurs avancés.
Certains membres du groupe de travail CSS, mais aussi des développeurs web, ont soulevé le problème de la lenteur de l'avancement de CSS3 :
- Pour Ian Hixon, «le groupe de travail CSS est actuellement atteint de dysfonctionnements chroniques» : son caractère trop fermé le prive des contributeurs nécessaires pour l'édition des spécifications, leur relecture ou encore la rédaction des suites de test[38]
- Pour Daniel Glazman, cette lenteur s'explique par 3 erreurs originelles : le choix de développer CSS par niveau et non pas par versions successives, la priorité accordée à la révision CSS 2.1 au détriment de CSS3, le nombre excessif de modules CSS3 et la complexité des propriétés qui y sont développées[39].
En 2008, aucun module n'est reconnu comme terminé par le W3C, et l'implémentation dans les navigateurs est par conséquent marginale, fréquemment à titre de test , comme les fonctions -moz-xxx du moteur Gecko, dont le préfixe limite l'utilisation aux seuls navigateurs basés sur Gecko.
CSS ambitionnait originellement l'indépendance entre structure et présentation d'un document.
Ainsi, le site du CSS Zen Garden, créé en 2003 par Dave Shea, se veut la démonstration de la possibilité de modifier librement le rendu affiché d'une même page web, seulement grâce à CSS et sans aucune modification de son code HTML[40] : il présente, en décembre 2006, 986 désigns différents de sa page d'accueil [41]. Cependant, la majorité de ces designs reposent en tout ou partie sur le remplacement du contenu textuel de la page par des images CSS qui le reproduisent en enrichissant son aspect[42] : la liberté graphique repose toujours partiellement sur la transformation du texte en image. D'autre part, le CSS Zen Garden reste un exercice de style limité à un document unique, à la structure doublée d'éléments et attributs sémantiquement neutres, qui ne servent qu'à donner appui à des sélecteurs CSS. [43]
S'il existe de nombreux exemples de documents HTML pour lesquels plusieurs feuilles de style ont été développées, il n'existe guère d'exemples de feuilles de style génériques, indépendantes de la structure du document. Les styles par défaut des agents utilisateurs en sont un exemple, mais limité à des effets typographiques simples, sans définition de mise en page[44]. Généralement, les feuilles de style dépendent étroitement de la structure du document à styliser et sont difficilement réutilisables sur des documents différemment structurés. C'est davantage à travers la création de design patterns HTML CSS que s'exploite cette indépendance potentielle des styles envers la structure spécifique des documents.
D'une façon plus générale :
- les difficultés et le manque d'implémentation d'une partie des propriétés CSS limitent la liberté de mise en page, et amènent à l'utilisation de propriétés contraignantes quant à la structure HTML (par exemple, la propriété
float
impose un ordre précis du contenu ainsi mis en colonne ; de nombreux effets de rendu reposent d'autre part sur une surcharge de balisage sémantiquement neutre, tel quediv
etspan
). - la réutilisation d'une structure unique sur des média ou des matériels différents grâce à des feuilles de styles est limitée par les contraintes liées aux contenus eux-mêmes ainsi qu'à la capacité des agents utilisateurs à restituer ceux-ci, et par l'obligation d'une négociation de présentation entre client et serveur. Des procédés d'adaptation spécifiques du contenu, de la structure et du rendu côté agent utilisateur se sont avérés nécessaires, tels, que, par exemple, la technologie ERA (Extensible Rendering Architecture développée par Opera. Internet Explorer suit une voie identique avec sa version 7 qui remodèle le rendu imprimé d'une page web pour l'optimiser.
Accessibilité
CSS facilite l'accessibilité d'une page web en donnant en dernier ressort à l'utilisateur le contrôle du rendu d'un document dans son navigateur : il est ainsi envisageable de l'adapter à des contraintes ou à des prédilections concernant par exemple la taille d'affichage des caractères ou les couleurs. En séparant structure et présentation, CSS facilite aussi l'écriture de documents structurés de manière sémantique, potentiellement plus exploitables par les aides techniques : la liberté de présentation des éléments de titrage permet par exemple de respecter strictement l'ordre hiérarchique formel de ceux-ci, ce qui permet en retour aux aides techniques d'en établir une table des matières navigable. Enfin, en donnant aux auteurs les moyens d'enrichir la mise en forme du texte, CSS sert à limiter le recours aux textes mis en images[45].
Cependant, certaines utilisations de CSS peuvent aussi compromettre l'accessibilité du contenu :
- en substituant à ce dernier des pseudo-contenus qui ne sont accessibles qu'aux utilisateurs qui peuvent percevoir le rendu CSS visuel : c'est le cas par exemple des informations qui seraient véhiculées par des images d'arrière plan.
- en bouleversant la cohérence indispensable entre l'ordre linéaire de l'information dans le contenu structuré et l'ordre visuel du rendu CSS affiché. Les aides techniques telles que les lecteurs d'écran n'ont en effet accès qu'à cet ordre linéaire : une information qui ne prendrait son sens qu'en fonction de son positionnement CSS n'est pas compréhensible pour leurs utilisateurs.
- dans une démarche d'accessibilité fondée sur la pertinence de la structure HTML, l'éventail des possibilités de mise en forme de contenu avec CSS peut faire faire perdre de vue l'obligation de baliser le contenu avec éléments signifiants. Il est par exemple envisageable de délimiter visuellement une citation en la mettant en italique ou en l'encadrant de guillemets, mais l'information sur l'origine de ce texte ne sera perceptible, au sens des normes d'accessibilité, que via l'utilisation des éléments
q
oublockquote
, qui sont les seuls servant à définir une citation HTML et d'en indiquer la source via l'attribut approprié (cite
).
Les méthodes d'application des directives d'accessibilité des contenus web (RGAA, UWEM par exemple) définissent par conséquent des règles d'usages des styles CSS[46].
Simplicité
CSS répond à une volonté de disposer d'un format de présentation simple, tant dans ses fonctionnalités que dans sa syntaxe, afin d'en faciliter la manipulation directe par les auteurs et les utilisateurs. Cependant, cette simplicité est remise en cause par plusieurs facteurs :
- la difficulté à déterminer ainsi qu'à contrôler le résultat de la cascade quand les sources de styles se multiplient. Le rendu final d'un contenu précis dépend de la combinaison de plusieurs feuilles et peut dans ce cas devenir malaisé à faire évoluer. L'interdépendance des feuilles de styles peut rendre difficilement anticipable le résultat d'une modification apportée à l'une d'elle. Les auteurs sont dans ce cas positionnés devant un choix entre cette interdépendance qui optimise la quantité de code et la redondance de styles qui favorise sa maintenance[47].
- La difficulté à écrire des styles utilisateurs sans disposer de compétences avancées. Les utilisateurs sont en principe les premiers bénéficiaires des CSS, qui leur donnent la possibilité d'adapter la présentation des pages web. Cependant, le mécanisme des styles se prête difficilement au développement d'environnements graphiques qui favoriseraient la manipulation des propriétés CSS[48]. Dans la pratique, le recours aux styles utilisateur reste par conséquent marginal.
Notes et références
- ↑ Media Queries
- ↑ PhD Thesis : Cascading Style Sheets
- ↑ Cascade CSS et priorité des sélecteurs, Openweb, avril 2005
- ↑ Tim Berners-Lee, The WorldWideWeb browser
- ↑ Cascading Style Sheets, designing for the Web, Håkon Wium Lie et Bert Bos, ISBN 0-201-59625-3
- ↑ La plupart de propositions de formats 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 format CSS final. Voir http ://www. w3. org/Style/History/.
- ↑ EMail Msg <9310222103.AA03264@sting.Berkeley.EDU>
- ↑ EMail Msg <199306101923.AA29318@ora.com>
- ↑ Cascading HTML Style Sheets -- A Proposal
- ↑ 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/#h-28
- ↑ d'une façon plus générale, «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 langage déjà existants, créés au départ pour la publication imprimée, suffirait à ses besoins». 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/#h-34
- ↑ JavaScript-Based Style Sheets
- ↑ Prédécesseur d'Amaya, Arena est le premier navigateur développé par le W3C, à l'origine à des fins de tests d'HTML3.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 comme plate-forme de test en 1996, Arena fut ensuite provisoirement tenu par le Yggdrasil Computing jusqu'en 1998. Voir http ://www. w3. org/Arena/
- ↑ Créé par Bert Bos en août 1994, Argo faisait parti d'un projet web de l'Université de Groningue. Voir http ://www. w3. org/People/all#bert
- ↑ les archives de cette liste dédiée au développement des CSS sont accessibles sur http ://lists. w3. org/Archives/Public/www-style/
- ↑ Report on the W3C style sheet workshop, Paris'95
- ↑ «You can Just Ship software with bugs in it to put out a new stable release because it's versioned. The next version replaces the old. You can always fix the leftover bugs in the next version. CSS dœsn't have versions. Any problems there are in the way CSS2.1 defines things can't be fixed in CSS3 except maybe by adding really confusing sets of switches. CSS3 cannot change anything in CSS2.1, it can only build on top of it. , What is the CSS Working Group Doing?, Cascading Style Sheets Working Group Blog», 2 juillet 2007
- ↑ Cascading Style Sheets, level 1, abstract, http ://www. w3. org/TR/REC-CSS1
- ↑ «Au bout du compte, la possibilité d'être lu et rédigé 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
- ↑ «Floats were intended to be used to take small pieces of content out of the flow and let the rest of the text wrap around them. They were not intended to be used for the main content of a page, nor were they designed for it. Nevertheless, use of floats for the main content of a page is quite common today». David Baron, membre du groupe de travail CSS du W3C, Overuse of floats considered harmful.
- ↑ «Program Manager» puis «Platform Architect of the Internet Explorer Platform team», Chris Wilson est à partir de 1996 un des acteurs majeurs du développement CSS. Voir http ://blogs. msdn. com/cwilso/
- ↑ Le 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 étudiants les bugs de rendu CSS d'Internet Explorer Voir On having layout par Ingo Chao, et "HasLayout" Overview (Markus Mielke, Microsoft)
- ↑ «Netscape retarde énormément le développement des feuilles de styles sur le web en diffusant en 1996 ses extensions propriétaires d'HTML ; elles offrent la gestion de la couleur, de la fonte ou même du clignotement (…) Netscape prône la simplicité : les rédacteurs de documents HTML maîtrisent ce format car il est simple ; il suffit par conséquent d'intégrer aux documents de nouveaux éléments HTML simples gérant la présentation.», Daniel Glazman, CSS2, des feuilles de styles pour le Web, décembre 1998, Éditions Eyrolles.
- ↑ «Since its inception Netscape had been sceptical towards style sheets, and the company's first implementation turned out to be a half-hearted attempt to stop Microsoft from claiming to be more standards-compliant than themselves. The Netscape implementation supports a broad range of features - for example, floating elements - but the Netscape developers did not have time to fully test all the features which are supposedly supported. The result is that many CSS properties cannot be used in Navigator 4». Bert Bos et Håkon Lie, Cascading Style Sheets, http ://www. w3. org/Style/LieBos2e/history/
- ↑ cf. CSS1 Test Suite, Version History, http ://www. w3. org/Style/CSS/Test/CSS1/current/vhistory
- ↑ Henri Sivonen, Activating the Right Layout Mode Using the Doctype Declaration
- ↑ «Une complexe prise de conscience est en effet envisageable, car le paysage des navigateurs a commencé à changer : même si Microsoft semble exercer un quasi-monopole de fait avec Internet Explorer, un renouveau est en cours. En effet, des navigateurs alternatifs voient le jour (…) Timidement amorcée avec Mozilla 0.6, Opera4 et même Internet Explorer 5, l'adoption progressive par les navigateurs des standards HTML4, XHTML1, CSS, ECMASCRIPT (…) s'est avéré une obligation après les excès de la période précédente», Tristan Nitot et Laurent Denis, préface à l'édition française de Design web : utiliser les standards, Jeffrey Zeldman, 2006.
- ↑ Positioning HTML Elements with Cascading Style Sheets, W3C Working Draft, 1997
- ↑ «CSS2 offers a mechanism for describing and selecting fonts from the web. However, the feature is not much used. Two major reasons for this might be : First, there is no universal font format which all vendors support; and second, font designer want to be compensated for their work and no suitable payment mechanism is available», 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
- ↑ Daniel Galzman, «Les standards HTML et CSS des origines à mercredi dernier», http ://disruptive-innovations. com/zoo/slides/20060922/
- ↑ 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/#h-339
- ↑ About the CSS 2.1 Specification, CSS 2.1 vs CSS 2, http ://www. w3. org/TR/CSS21/about. html#css2.1-v-css2
- ↑ Float, clear et contextes de formatage, Blog & Blues, juin 2006
- ↑ «There is no doubt that we will still find (small) bugs in the specification, but given the type of errors we fixed recently, we have reason to believe that the spec is good enough for implementers and users alike. We want people to start implementing and using CSS 2.1 for real (and tell us about any remaining problems, of course) », Bert Bos, éditeur de CSS 2.1, http ://www. w3. org/blog/CSS/2007/07/20/cssan2_1_is_a_candidate_recommendation
- ↑ Évaluations d'implémentation réalisées par David Hammond, web browser standards support
- ↑ «In such cases, a user agent may implement a subset of CSS. Subsets of CSS are limited to combining selected CSS modules, and once a module has been chosen, all of its features must be supported.», Introduction to CSS3, http ://www. w3. org/TR/css3-roadmap/#whymods
- ↑ Cascading Style Sheets Current Work, http ://www. w3. org/Style/CSS/current-work
- ↑ «An open group can iterate much faster than a closed group. With an open group we can get test implementations, feedback, tests, and discussion straight away, instead of waiting months and then pulling back the curtain and presenting a fait accompli, at which points comments are perceived more as a pain than a help. », Ian Hixon, http ://ln. hixie. ch/?start=1181118077&count=1
- ↑ Daniel Glazman, Calling for a new CSS revolution
- ↑ CSS Zen Garden
- ↑ CSS Zen Garden Comprehensive Design List
- ↑ Le Zen des CSS, Dave Shea & Molly Holzschlag, traduction française, éditions Eyrolles, novembre 2005, page 14
- ↑ «Depuis le lancement de CSS Zen Garden sont apparues des techniques de remplacement d'images sans recours à un span. Par conséquent, la majorité des éléments span sont devenus inutiles. Et les classes supplémentairesn'étant pas exploitées dans 98 % des maquettes soumises, elles sont elles aussi redondantes. La liste d'éléments div et span vides à la fin du document est aussi superflue, sauf pour les possibilité d'ouverture offertes au designer.», Molly Hollzschlag, Dave Shea, Le Zen des CSS.
- ↑ CSS1 propose un exemple de styles destiné surtout aux navigateurs : Sample style sheet for HTML 2.0. CSS2 définit une feuille de style type mais indicative pour cet usage : Default style sheet for HTML 4. Avec XHTML2.0, ces styles types sont susceptibles de devenir normatifs : Style sheet for XHTML 2.
- ↑ «However, pictures were also a threat to the web. Designers started to encode text in images in order to achieve certain fonts or other special effects. In order for HTML to remain a logical markup language (as opposed to a presentational language) a style sheet language was needed. So, the motivation for developing style sheets was twofold : we wanted to give authors the presentational effects they craved, while stopping HTML from sliding down the ladder of abstraction to become a presentational language», Interview with Håkon Wium Lie, 31 mars 2005, http ://www. webstandards. org/2005/03/31/interview-with-hkon-wium-lie/
- ↑ A titre d'exemple, le test RGAA Accessibilité des informations affichées comme fonds d'éléments via les styles CSS.
- ↑ Dave Shea, {{Redundancy vs. Dependency}}
- ↑ 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/#h-337
Voir aussi
- (en) Cascading Style Sheets, level 1, recommandation du W3C, 17 décembre 1996, revu le 11 janvier 1999
- (fr) Les feuilles de style en cascade, niveau 1, traduction non officielle
- (en) Cascading Style Sheets, level 2, CSS2 Specification, recommandation du W3C, 12 mai 1998
- (fr) Les feuilles de style en cascade, niveau 2, Spécification CSS2, traduction non officielle
- (en) Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification, recommandation candidate du W3C, 19 juillet 2007
- (en) Cascading Style Sheets Current Work, état d'avancement des travaux du Cascading Style Sheets Working Group, dont le développement de CSS3
Bibliographie
- (en) Cascading Style Sheets, Håkon Wium Lie, Thèse de doctorat en philosophie, Faculté de Mathématiques et de Sciences naturelles, Université d'Oslo, 2005
- (en) , Cascading Style Sheets, designing for the Web, Håkon Wium Lie et Bert Bos, ISBN 0-201-59625-3
- (fr) Le Zen des CSS, Dave Shea & Molly Holzschlag, 17 novembre 2005, Éditions Eyrolles, ISBN 2212116993
- (fr) Design web : utiliser les standards, Jeffrey Zeldman, novembre 2006, Éditions Eyrolles, ISBN 2212120265
Recherche sur Amazone (livres) : |
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 11/03/2009.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.