Académique Documents
Professionnel Documents
Culture Documents
Traduction:
J.J SOLARI
PDF:
G.ACCAD
Logiciels utiliss*
HTMLDoc
Strata 3D
Code Edit
*gratuiciels
Avertissement
Des erreurs ont pu survenir malgr le soin apport ce travail.
Notice lgale
Copyright 19942001 World Wide Web Consortium,
(Massachusetts Institute of Technology,
Institut National de Recherche en Informatique et en Automatique,
Keio University).
Tous droits rservs. Consulter la notice de copyright pour les productions du W3C.
RECCSS219980512
Rsum
Cette spcification dfinit CSS2 : les feuilles de style en cascade, niveau 2. CSS2 est un langage de feuille de style
qui permet aux auteurs et aux lecteurs de lier du style (ex. les polices de caractres, l'espacement et un signal
auditif) aux documents structurs (ex. documents HTML et applications XML). En sparant la prsentation du
style du contenu des documents, CSS2 simplifie l'dition pour le Web et la maintenance d'un site.
CSS2 est construit sur CSS1 (voir [CSS1]), ainsi toute feuille de style valide en CSS1 est galement valide en
CSS2 trs peu d'exceptions prs. CSS2 prvoit des feuilles de style lies un mdia spcifique ce qui autorise
les auteurs prsenter des documents sur mesure pour les navigateurs visuels, les appareils auditifs, les
imprimantes, les lecteurs en Braille, les appareils portatifs, etc. Cette spcification introduit aussi les notions de
positionnement du contenu, de tlchargement des polices, de mise en forme des tables, de fonctions
d'internationalisation, de compteurs et de numrotage automatiques et quelques proprits concernant l'interface
utilisateur.
Statut de ce document
Ce document a t corrig par les membres du W3C et d'autres parties intresses et le Directeur l'a approuv
comme Recommandation du W3C. C'est un document stable qui peut tre utilis comme matriel de rfrence ou
cit comme norme de rfrence par un autre document. En produisant cette Recommandation, le W3C entend
attirer l'attention sur une spcification et en promouvoir un large dploiement. Ceci multiplie la fonctionnalit et
l'interoprabilit du Web.
Une liste des Recommandations actuelles du W3C et d'autres documents techniques peut tre trouve
http://www.w3.org/TR.
Les discussions publiques sur les fonctions de CSS ont lieu sur la liste wwwstyle@w3.org.
Formats disponibles
La spcification CSS2 est disponible dans les formats suivants :
HTML :
http://www.w3.org/TR/1998/RECCSS219980512
fichier texte entier :
http://www.w3.org/TR/1998/RECCSS219980512/css2.txt,
HTML sous la forme d'un fichier compress .tgz :
http://www.w3.org/TR/1998/RECCSS219980512/css2.tgz,
HTML sous la forme d'un fichier .zip (ce n'est pas un fichier '.exe') :
http://www.w3.org/TR/1998/RECCSS219980512/css2.zip,
sous la forme d'un fichier PostScript .ps.gz :
http://www.w3.org/TR/1998/RECCSS219980512/css2.ps.gz,
et sous la forme d'un fichier PDF :
http://www.w3.org/TR/1998/RECCSS219980512/css2.pdf.
Langues disponibles
La version anglaise de la spcification est la seule version officielle. Cependant, pour des versions traduites en
d'autres langues voir http://www.w3.org/Style/css2updates/translations.html.
Errata
La liste des erreurs connues de cette spcification se trouve
http://www.w3.org/Style/css2updates/RECCSS219980512errata.html. Merci de faire part d'erreurs
ventuelles dans ce document css2editors@w3.org.
Copyright 1998 W3C (MIT, INRIA, Keio ), Tous droits rservs.
1.3 Conventions
1.3.1 Les conventions pour les lments et attributs dans le langage du document
Les noms des proprits CSS, des descripteurs et des pseudoclasses sont placs entre guillemets simples.
Les valeurs de CSS sont places entre guillemets simples.
Les noms des lments du langage du document sont en majuscules.
Les noms des attributs du langage du document sont en minuscules et entre guillemets doubles.
1.3.2 Les dfinitions des proprits CSS
Chaque dfinition d'une proprit CSS commence par un rsum des informations cls comme dans ce qui suit :
'nom de la proprit'
Valeur :
Valeur initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Valeur
Cette partie spcifie le jeu de valeurs valides pour la proprit. On dsigne les types de valeur de plusieurs faons
avec :
5
Chaque type, motcl ou groupe entre crochets peut tre suivi par l'un des modificateurs suivants :
Une astrisque (*) : ce qui prcde survient zro ou plusieurs fois ;
Un plus (+) : ce qui prcde survient une ou plusieurs fois ;
Un point d'interrogation (?) : ce qui prcde est facultatif ;
Une paire de nombres entre accolades ({A,B}) : ce qui prcde survient au moins A fois et au plus B fois.
L'exemple qui suit illustre diffrents types de valeur :
Valeur : N | NW | NE
Valeur : [ <longueur> | thick | thin ]{1,4}
Valeur : [<famillenom> , ]* <famillenom>
Valeur : <uri>? <couleur> [ / <couleur> ]?
Valeur : <uri> || <couleur>
Valeur initiale
Cette partie spcifie la valeur initiale de la proprit. Si la proprit est hrite, c'est la valeur donne l'lment
racine de l'arborescence du document. Concernant l'interaction entre les valeurs spcifies dans la feuille de style,
celles hrites et celles initiales, consulter le chapitre sur la cascade.
S'applique
Cette partie donne la liste des lments concerns par la proprit. Chacun des lments est suppos avoir toutes
les proprits, mais quelques unes d'entre elles ne produisent aucun effet sur certains types d'lments. Par
exemple, 'whitespace' ne touche que les lments de type bloc.
Hrite
Cette partie indique si la valeur de la proprit est hrite d'un lment anctre. Concernant l'interaction entre les
valeurs spcifies dans la feuille de style, celles hrites et celles initiales, consulter le chapitre sur la cascade.
Pourcentage
Cette partie indique comment interprter les valeurs exprimes en pourcentage, le cas chant, de la proprit. La
mention "sans objet" signifie que la proprit n'admet pas de valeurs en pourcentage.
6
Cette partie indique les groupes de mdias qui sont concerns par la proprit. Les conditions de conformit
obligent les agents utilisateurs respecter cette proprit si ceuxci supportent les types de mdia indiqus par ces
groupes de mdias.
1.3.3 Les proprits raccourcies
Quelques proprits sont des proprits raccourcies, les auteurs pouvant spcifier en une seule proprit, les
valeurs de plusieurs autres proprits.
Ainsi, la proprit 'font' est une proprit raccourcie qui permet de fixer en une seule fois les valeurs de
'fontstyle', 'fontvariant', 'fontweight', 'fontsize', 'lineheight' et 'fontfamily'.
Quand des valeurs sont absentes de la forme raccourcie, chacune des proprits "manquantes" revt sa valeur
intiale (voir le chapitre sur la cascade).
Exemple(s) :
Soient les multiples rgles de style de cet exemple :
H1 {
fontweight: bold;
fontsize: 12pt;
lineheight: 14pt;
fontfamily: Helvetica;
fontvariant: normal;
fontstyle: normal;
fontstretch: normal;
fontsizeadjust: none
}
1.4 Remerciements
Cette spcification est le produit du Groupe de Travail du W3C sur les feuilles de style en cascade et les proprits
de formatage. En plus des diteurs du prsent document, voici les membres de ce groupe : Brad Chase
(Bitstream), Chris Wilson (Microsoft), Daniel Glazman (Electricit de France), Dave Raggett (W3C/HP), Ed
Tecot (Microsoft), Jared Sorensen (Novell), Lauren Wood (SoftQuad), Laurie Anna Kaplan (Microsoft), Mike
Wexler (Adobe), Murray Maloney (Grif), Powell Smith (IBM), Robert Stevahn (HP), Steve Byrne (JavaSoft),
Steven Pemberton (CWI), Thom Phillabaum (Netscape), Douglas Rand (Silicon Graphics), Robert Pernett
(Lotus), Dwayne Dicks (SoftQuad), et Sho Kuwamoto (Macromedia). Nous les remercions de leurs efforts
assidus.
7
2 Introduction CSS2
2.1 Un bref tutoriel de CSS2 pour HTML
Nous allons montrer dans ce tutoriel combien il est facile de raliser des feuilles de style simples. Pour cela, vous
devrez connatre un peu HTML (voir [HTML40]) et une terminologie de base de l'impression numrique.
Commenons par un petit document HTML :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>La page personnelle de Bach</TITLE>
</HEAD>
<BODY>
<H1>La page personnelle de Bach</H1>
<P>JeanSbastien Bach tait un compositeur prolifique.
</BODY>
</HTML>
Pour rendre la couleur du texte des lments H1 bleu, vous pouvez crire la rgle de feuille de style suivante :
H1 { color: blue }
Une rgle CSS consiste en deux parties principales : un slecteur ('H1') et une dclaration ('color: blue'). Celleci
se compose son tour de deux parties : une proprit ('color') et une valeur ('blue'). Bien que cet exemple n'agit
que sur une seule des proprits ncessaires au rendu d'un document HTML, cela suffit pour qu'elle soit qualifie
de feuille de style. Combine avec d'autres feuilles de styles (la combinaison de feuilles de style est une fonction
fondamentale des CSS), elle agira sur la prsentation finale du document.
La spcification HTML 4.0 dfinit la faon de relier les feuilles de style un documents HTML : soit par
incorporation dans celuici, soit par appel une feuille de style externe. Pour l'incorporation, on utilise l'lment
STYLE :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>La page personnelle de Bach</TITLE>
<STYLE type="text/css">
H1 { color: blue }
</STYLE>
</HEAD>
<BODY>
<H1>La page personnelle de Bach</H1>
<P>JeanSbastien Bach tait un compositeur prolifique.
</BODY>
</HTML>
Pour une souplesse d'utilisation maximale, on recommande aux auteurs l'usage de feuilles de style externes. On
peut en changer sans modifier la source HTML du document et les partager entre plusieurs documents. Pour faire
le lien vers une feuille de style externe, on emploie l'lment LINK :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>La page personnelle de Bach</TITLE>
<LINK rel="stylesheet" href="bach.css" type="text/css">
</HEAD>
<BODY>
<H1>La page personnelle de Bach</H1>
<P>JeanSbastien Bach tait un compositeur prolifique.
</BODY>
</HTML>
Deux rgles composent maintenant la feuille de style : la premire spcifie la couleur rouge ('red') pour l'lment
BODY et la seconde la couleur bleu ('blue') pour l'lment H1. Comme aucune valeur de couleur n'est spcifie
pour l'lment P, celuici hrite de la couleur de son lment parent, ici BODY. L'lment H1 est aussi un
lment enfant de BODY, mais la seconde rgle prvaut sur la valeur hrite. En CSS il y a souvent de tels
conflits entre diffrentes valeurs, cette spcification dcrit leur rsolution.
CSS2 comporte plus de 100 diffrentes proprits, dont 'color'. Voyons quelques unes d'entre elles :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>La page personnelle de Bach</TITLE>
<STYLE type="text/css">
BODY {
fontfamily: "Gill Sans", sansserif;
fontsize: 12pt;
margin: 3em;
}
</STYLE>
</HEAD>
<BODY>
<H1>La page personnelle de Bach</H1>
<P>JeanSbastien Bach tait un compositeur prolifique.
</BODY>
</HTML>
En premier lieu, on remarque plusieurs dclarations qui sont runies l'intrieur d'un bloc dlimit par des
accolades ({...}), qu'elles sont spares par des pointvirgules (;), la dernire pouvant aussi se terminer par un
pointvirgule.
La premire dclaration sur l'lment BODY spcifie la famille de police "Gill Sans". Si celleci n'tait pas
disponible, l'agent utilisateur (souvent un "navigateur") utilisera la famille de polices 'sansserif' qui est l'une des
cinq familles de polices gnriques reconnues pour chacun des agents utilisateurs. Les lments enfants de BODY
hritent de la valeur de la proprit 'fontfamily'.
La seconde dclaration fixe la taille de la police de BODY 12 points. L'unit "point" est couramment employe
en typographie d'impression pour mesurer le corps d'une police et d'autres longueurs. C'est un exemple d'unit
absolue qui ne varie pas en fonction de l'environnement.
La troisime dclaration s'appuie sur une unit relative qui varie en fonction de son entourage. L'unit "em" se
rfre la taille de la police de l'lment. Le rsultat, dans ce cas, sera que les marges autour de l'lment BODY
seront trois fois plus grandes que la taille de la police.
Pour rendre ce fragment la manire d'un document, nous devons d'abord dclarer lesquels de ces lments sont
de type enligne (c.d. qui ne provoquent pas de fins de lignes) et de type bloc (c.d. qui provoquent des fins
de lignes).
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
La premire rgle stipule que INSTRUMENT est de type enligne et la seconde, avec une liste de slecteurs
spars par des virgules, que tous les autres lments sont de type bloc.
Pour lier une feuille de style un document XML, l'une des propositions consiste utiliser une instruction de
traitement :
<?xmlstylesheet type="text/css" href="bach.css"?>
<ARTICLE>
<HEADLINE>La rencontre de Frdric le Grand et de Bach</HEADLINE>
<AUTHOR>Johann Nikolaus Forkel</AUTHOR>
<PARA>
Un soir, alors qu'il prparait sa
<INSTRUMENT>flte</INSTRUMENT> et que ses
musiciens taient runis, un officier lui apporta
la liste des trangers qui venaient d'arriver.
</PARA>
</ARTICLE>
Remarquer que le mot "flte" reste dans le paragraphe puisqu'il s'agit du contenu de l'lment de type enligne
INSTRUMENT.
Cependant, le texte n'est pas format de la faon souhaite. Par exemple, le corps de la police du titre devrait tre
plus grand que celui du reste du texte et aussi le nom de l'auteur pourrait tre en italique :
INSTRUMENT { display: inline }
ARTICLE, HEADLINE, AUTHOR, PARA { display: block }
HEADLINE { fontsize: 1.3em }
AUTHOR { fontstyle: italic }
ARTICLE, HEADLINE, AUTHOR, PARA { margin: 0.5em }
12
Compatibilit ascendante et descendante. Les agents utilisateurs seront capable d'interprter des feuilles
de style CSS1. Dans l'autre sens, les agents utilisateurs CSS1 seront capables de lire une feuille de style
CSS2 en passant outre les instructions qui leur seront inconnues. galement, ceux qui n'ont aucun support
des feuilles de style seront capables d'afficher les documents pourvus de style. Bien sr, les amliorations
lies au style ne seront pas rendues, mais tout le contenu sera prsent ;
Complmentarit avec les documents structurs. Les feuilles de style compltent les documents
structurs (exp; HTML et XML) en fournissant des informations de style au texte balis. Un changement
dans la feuille de style ne devrait avoir que peu ou pas d'impact sur le balisage ;
Indpendance visvis de l'diteur, de la plateforme ou de l'appareil. Les feuilles de style autorisent une
indpendance des documents d'avec l'diteur, la plateforme et l'appareil, cependant CSS2 permet de
produire une feuille de style pour un groupe d'appareils (ex. imprimantes) ;
Facilit de maintenance. Lier des feuilles de style en partant des documents peut simplifier le travail de
maintenance des webmestres tout en conservant un aspect consistant pour l'ensemble du site. Par exemple,
s'il faut changer la couleur de fond lie l'identit d'une organisation, un seul fichier doit tre modifi ;
Simplicit. Bien que CSS2 soit plus complexe que CSS1, il s'agit d'un langage simple de style facile lire
et crire par un humain. Les proprits de style sont suffisamment indpendantes les unes des autres en
gnral pour qu'un effet donn ne puisse tre produit que d'une seule faon ;
Performance du rseau. CSS fournit un moyen compact pour la reprsentation d'un contenu. Compar
aux fichiers images ou audio, souvent employs par les auteurs pour obtenir certains effets de rendu, les
feuilles de style diminuent la plupart du temps la taille des fichiers. Aussi, les connexions au rseau sont
moins nombreuses, ce qui augmente d'autant les performances de celuici ;
Flexibilit. On peut donner du style un contenu de plusieurs manires. La fonction cl rside dans la
possibilit de modifier en cascade les informations de style spcifies dans la feuille de style par dfaut
(de l'agent utilisateur), les feuilles de style de l'utilisateur, les feuilles de style lies, l'entte du document
et dans les attributs des lments formant le corps du document ;
Richesse. En donnant aux auteurs un jeu tendu d'effets de reprsentation, on accroit la richesse du Web
en tant que moyen d'expression. Les auteurs taient dans l'attente de fonctionalits qui taient communes
dans les applications de publication numrique et de prsentation. Quelques uns des effets de rendu
demands ne satisfont pas au principe d'indpendance visvis des appareils, cependant CSS2 rpond
pour une grande part aux esprances des auteurs ;
Corrlations avec d'autres langages. Les proprits dcrites par cette spcification forment un jeu
consistant pour le modle de formatage des prsentations visuelles et auditives. Le langage CSS permet
d'accder ce modle mais les corrlations avec d'autres langages sont aussi possibles. Par exemple, un
programme JavaScript peut changer de faon dynamique la valeur de la proprit 'color' d'un lment
donn ;
Accessibilit. Plusieurs fonctions de CSS faciliteront l'accs au Web des utilisateurs avec diverses
incapacits :
14
15
En accord avec la dfinition de HTML, l'lment HEAD sera infr lors de l'interprtation et fera partie de
l'arborescence du document mme si les balises HEAD n'apparaissent pas dans la source. De la mme manire
pour les fins des lments P et LI, bien que les balises </P> et </LI> ne soient pas visibles.
3.2 La conformit
Ce chapitre traite seulement de la conformit en regard de la spcification CSS2. De futurs niveaux de CSS
pourront requrir l'implmentation d'un jeu de fonctions diffrents pour que l'agent utilisateur prtende une
17
18
Dfinition
{ident}
@{ident}
{string}
#{name}
{num}
{num}%
{num}{ident}
url\({w}{string}{w}\)
URI
|url\({w}([!#$%&*~]|{nonascii}|{escape})*{w}\)
UNICODERANGE U\+[09AF?]{1,6}([09AF]{1,6})?
CDO
<!
CDC
>
;
;
{
\{
}
\}
(
\(
)
\)
[
\[
]
\]
S
[ \t\r\n\f]+
COMMENT
\/\*[^*]*\*+([^/][^*]*\*+)*\/
FUNCTION
{ident}\(
INCLUDES
~=
DASHMATCH
|=
tout autre caractre ainsi que le guillemet, simple ou double, qui n'est pas retenu
DELIM
par les rgles prcdentes
IDENT
ATKEYWORD
STRING
HASH
NUMBER
PERCENTAGE
DIMENSION
19
Dfinition
ident
{nmstart}{nmchar}*
name
{nmchar}+
nmstart
[azAZ_]|{nonascii}|{escape}
nonascii
[^\0\177]
unicode
\\[09af]{1,6}[ \n\r\t\f]?
escape
{unicode}|\\[ ~\200\4177777]
nmchar
[azAZ09_]|{nonascii}|{escape}
num
[09]+|[09]*\.[09]+
string
{string1}|{string2}
string1
\"([\t !#$%&(~]|\\{nl}|\'|{nonascii}|{escape})*\"
string2
\'([\t !#$%&(~]|\\{nl}|\"|{nonascii}|{escape})*\'
nl
\n|\r\n|\r|\f
w
[ \t\r\n\f]*
Vient ensuite la syntaxe de base de CSS. Les paragraphes suivants indiquent la faon de les employer.
L'appendice D dcrit une grammaire plus restrictive et plus proche du langage de CSS2.
feuille de style
dclaration
rglesat
bloc
jeu de rgles
slecteur
dclaration
proprit
valeur
tous
:
:
:
:
:
:
:
:
:
:
Les jetons COMMENT n'apparaissent pas dans la grammaire (par souci de lisibilit), mais on peut les placer
n'importe o entre les autres jetons.
Le jeton S dans la grammaire audessus signifie un blanc. Seuls les caractres "espace" (Code Unicode 32),
"tabulation" (9), "nouvelle ligne" (10), "retour chariot" (13) et "nouvelle page" (12) peuvent en tenir lieu. Les
autres caractres d'espacement similaires, comme "l'espace em" (8195) et "l'espace idographique" (12288), n'en
font pas partie.
[Errata : Les proprits raccourcies prennent comme valeur une liste compose des valeurs de leurs
sousproprits ou sinon la valeur 'inherit'. On ne peut pas mlanger la valeur 'inherit' avec d'autres valeurs des
sousproprits car il ne serait alors plus possible de dterminer laquelle de ces sousproprites est concerne.
Les dfinitions d'un certain nombre de proprits raccourcies ne respectent pas cette rgle : 'bordertop',
'borderright', 'borderbottom', 'borderleft', 'border', 'background', 'font', 'liststyle', 'cue' et 'outline'.]
4.1.2 Les motscls
Les motscls ont des points communs avec les identifiants. On ne doit pas les mettre entre guillemets ("..." ou
'...'). Ainsi :
red
Le deuxime '@import' est invalide pour CSS2. L'interprteur ignore celuici en entier, et la feuille de style se
rduit dans les faits :
@import "subs.css";
H1 { color: blue }
Exemple(s) INTERDIT(s) :
Dans l'exemple suivant, la deuxime rgle '@import' n'est pas recevable parce qu'elle survient dans le bloc d'une
rgle '@media'.
@import "subs.css";
@media print {
@import "printmain.css";
BODY { fontsize: 10pt }
}
H1 {color: blue }
Noter que cette rgle n'est pas valide pour CSS2, bien que correspondant la dfinition d'un bloc donne
cidessus.
4.1.7 Les jeux de rgles, les blocs de dclaration et les slecteurs
Un jeu de rgles (qualifi aussi de "rgle") se compose d'un slecteur suivi par un bloc de dclaration.
Un bloc de dclaration (qui est reprsent dans la suite du texte par {bloc}) commence par une accolade gauche
({) et se termine par l'accolade droite (}) correspondante. On doit placer entre cellesci une liste de dclarations
spares par des pointvirgules (;) ou, sinon, ne rien y mettre.
Un slecteur (voir aussi le chapitre sur les slecteurs) consiste en tout ce qu'il y a jusqu' la premire accolade
gauche, celleci exclue. Un slecteur est toujours accompagn d'un {bloc}. Quand un agent utilisateur ne peut
interprter un slecteur (par exemple, parce que celuici est invalide pour CSS2), il doit de ce fait en ignorer le
{bloc}.
En CSS2, la virgule (,) place dans un slecteur a un sens particulier. Cependant, comme on ne sait pas si celleci
va prendre d'autres significations dans les versions ultrieures de CSS, si une partie du slecteur comportait une
quelconque erreur, la dclaration entire devrait tre ignore, mme si le reste de celuici apparassait valide pour
CSS2.
Exemple(s) INTERDIT(s) :
22
Exemple(s):
Voici un exemple plus complexe. Les deux premires paires d'accolades se trouvent dans une chane, elles ne
dlimitent pas la fin du slecteur. Cette dclaration est donc valide pour CSS2 :
P[example="public class foo\
{\
private int x;\
\
foo(int x) {\
this.x = x;\
}\
\
}"] { color: red }
{
{
{
{
{
{
fontweight: bold }
fontsize: 12pt }
lineheight: 14pt }
fontfamily: Helvetica }
fontvariant: normal }
fontstyle: normal }
Une proprit est un identifiant. On peut utiliser pour sa valeur toutes sortes de caractres, sous rserve des
parenthses ("( )"), des crochets ("[ ]"), des accolades ("{ }") et des guillemets simples (') ou doubles (") qui
doivent toujours aller par paires, les pointvirgules en dehors d'une chane doivent tre chappes. Les
parenthses, les crochets et les accolades peuvent tre imbriqus. Les caractres entre des guillemets sont
interprts comme une chane.
La syntaxe des valeurs est spcifie pour chacune des proprits ; dans tous les cas, les valeurs sont construites
partir d'identifiants, de chanes, de nombres, de longueurs, de pourcentages, d'URIs, de couleurs, d'angles, de
dures et de frquences.
Un agent utilisateur doit ignorer une dclaration dont le nom de la proprit ou sa valeur est invalide. Chacune des
proprits CSS2 a ses propres restrictions syntaxiques et smantiques sur les valeurs qu'elle accepte.
Exemple(s) INTERDIT(s) :
Prenons par exemple un interprteur CSS2 et cette feuille de style :
23
Dans la premire ligne, la seconde dclaration comporte une valeur de '12pt' invalide, et dans la deuxime ligne, la
deuxime dclaration contient une proprit non dfinie 'fontvendor'. L'interprteur va ignorer cellesci,
rduisant la feuille de style dans les faits la suivante :
H1 { color: red; }
P { color: blue; fontvariant: smallcaps }
EM EM { fontstyle: normal }
Valeurs invalides. Les agents utilisateurs doivent ignorer une dclaration qui comporte une valeur
invalide. Par exemple :
IMG
IMG
IMG
IMG
{
{
{
{
float: left }
float: left here }
background: "red" }
borderwidth: 3 }
/*
/*
/*
/*
un interprteur CSS2 honorerait la premire rgle de la feuille de style et en ignorerait les suivantes,
comme si celleci avait t :
IMG
IMG
IMG
IMG
{
{
{
{
float: left }
}
}
}
L'agent utilisateur qui voudrait aller vers une conformit avec une future spcification CSS peut aussi
suivre une, ou plusieurs, de ces autres rglesci.
Motsclsat invalides. Les agents utilisateurs doivent ignorer un motclat invalide ainsi que tout ce
qui le suit jusqu'au pointvirgule (;) inclus ou jusqu'au {bloc} prochains, selon celui qui survient en
premier. Par exemple, considrons la feuille de style suivante :
@threedee {
@backgroundlighting {
azimuth: 30deg;
elevation: 190deg;
24
La rgleat '@threedee' n'est pas dfinie en CSS2. Ainsi, la rgleat (jusqu' la troisime accolade droite
incluse) est ignore, et la feuille de style est rduite dans les faits :
H1 { color: blue }
/* em */
/* ex */
/* px */
L'unit 'em' correspond la valeur calcule pour la proprit 'fontsize' d'un lment donn. Sauf quand cette
unit est spcifie dans la proprit 'fontsize' ellemme, auquel cas, elle se rfre la taille de la police de
l'lment parent. On peut l'utiliser pour des mesures de quantits verticales ou horizontales. (En typographie, on
l'appelle aussi carr typographique ou corps).
L'unit 'ex' est dfinie par rapport la valeur de la proprit 'xheight'. Cette valeur correspond la hauteur du
caractre "x" minuscule. Elle est dfinie mme pour les polices qui n'en contiennent pas.
25
cette rgle prcise que la hauteur de ligne des lments H1 sera 20% plus grande que leur taille de police.
l'inverse :
H1 { fontsize: 1.2em }
la taille de police des lments H1 sera 20% plus grande que la taille de police hrite par ceuxci.
Les valeurs en 'em' et 'ex' se rfrent la valeur initiale de la proprit quand on les spcifie pour la racine de
l'arborescence du document (ex. "HTML" pour le langage HTML).
Les valeurs exprimes en pixel s'entendent relativement la rsolution de l'appareil de visualisation, c..d. le plus
souvent un moniteur. Dans le cas o la densit de pixels de l'appareil de sortie est trop loigne de celle d'un
moniteur typique, l'agent utilisateur devrait redimensionner les valeurs en pixel. On recommande une valeur pour
le pixel de rfrence qui soit gale l'angle visuel d'un pixel sur un appareil de densit 96dpi (96 ppp) situ une
longueur de bras du spectateur. Pour une longueur de bras nominale de 28 pouces (71 cm), l'angle visuel serait de
0.0213 degrs.
cette distance, un pixel correspond une taille d'environ 0.26 mm (soit 1/96 pouce). Une fois retranscrit par
une imprimante laser, pour une lecture moins d'une longueur de bras (55 cm ou 21 pouces), celui a une taille
d'envirion 0.21 mm. Avec une imprimante de rsolution 300 ppp (point par pouce), il serait rendu en 3 points
(0.25 mm) et, avec imprimante de 600 ppp, en environ 5 points.
Les deux illustrations suivantes montrent les consquences de la distance de lecture et de la rsolution d'un
appareil sur la perception d'un pixel. Dans la premire, une distance de lecture de 71 cm (28 pouce) correspond
un pixel de 0.26 mm, et une distance de 3.5 m (12 pied) un pixel de 1.3 mm.
Dans la seconde, une aire de 1px par 1px est recouverte avec un seul point pour un appareil en basse rsolution
(un moniteur), alors que cette mme surface ncessite 16 points pour un appareil en haute rsolution (comme une
imprimante laser en 400 ppp).
26
Les lments enfants n'hritent pas des valeurs relatives spcifies pour leur parent ; ils en hritent (gnralement)
des valeurs calcules.
Exemple(s) :
Dans les rgles suivantes, la valeur calcule de 'textindent' des lments H1, enfants de l'lment BODY, sera de
36pt, et non 45pt.
BODY {
fontsize: 12pt;
textindent: 3em; /* i.e., 36pt */
}
H1 { fontsize: 15pt }
Les units de longueurs absolues ne sont utiles que si les proprits physiques du medium de sortie sont connues.
Voici les units absolues :
in : pouce (inch) un pouce est gal 2.54 cm.
cm : centimtre
mm : millimtre
pt : point le point de CSS2 est gal 1/72 de pouce.
pc : pica un pica est gal 12 points.
Exemple(s) :
H1
H2
H3
H4
H4
{
{
{
{
{
margin: 0.5in }
lineheight: 3cm }
wordspacing: 4mm }
fontsize: 12pt }
fontsize: 1pc }
/*
/*
/*
/*
/*
pouces */
centimtres */
millimtres */
points */
picas */
Si la valeur de longueur spcifie n'est pas reconnue, les agents utilisateurs doivent en donner une valeur
approchante
4.3.3 Les pourcentages
Une valeur de pourcentage (dnote par <pourcentage> est forme d'un caractre facultatif pour le signe ('+' ou
'', '+' tant par dfaut) immdiatement suivi par un <nombre> et immdiatement suivi par le caractre '%'.
Les valeurs de pourcentage sont toujours relatives une autre valeur, par exemple une longueur. Chacune des
proprits qui admettent des pourcentages dfinit aussi la valeur laquelle le pourcentage se rapporte. Cette valeur
peut tre celle d'une autre proprit du mme lment, d'une proprit d'un anctre ou de la valeur issue du
contexte de formatage (ex. la largeur d'un bloc conteneur). Quand une valeur de pourcentage est spcifie pour
une proprit de l'lment racine et que celleci est dfinie par rapport la valeur hrite d'une proprit donne,
alors la valeur rsultante est gale au produit de la valeur de pourcentage par la valeur initiale de cette proprit.
Exemple(s) :
27
/* 120% de 'fontsize' */
Une valeur d'URI est forme par les caractres 'url(' suivis par un blanc facultatif, suivi par un guillemet facultatif
simple (') ou double ("), suivis par l'URI luimme, suivi par un guillemet fermant simple ou double, s'il y a lieu,
suivi par un blanc facultatif et enfin par ')'. Les guillemets doivent tre de la mme sorte.
Exemple(s) :
Un exemple sans guillemets :
LI { liststyle: url(http://www.redballs.com/redball.png) disc }
Les parenthses, les virgules, les blancs et les guillemets simples ou doubles qui apparaissent dans un URI doivent
tre chapps avec une barre oblique inverse, ex. '\(', '\)', '\,', etc.
Selon le type d'URI, il doit aussi tre possible d'crire les caractres prcdents sous forme d'chappement URI,
o "(" = %28, ")" = %29, etc., tel que dcrit dans [URI].
Pour crer des feuilles de style modulaires indpendantes de l'adresse absolue d'une ressource, les auteurs peuvent
employer des URIs relatifs. Les URIs relatifs (dcrits dans [RFC1808]) sont rsolus en URIs complets partir
d'un URI de base. L'algorithme normatif de ce processus est dfini au chapitre 3 de RFC 1808. Pour les feuilles
de style CSS, l'URI de base correspond celui de la feuille de style, et non celui du document source.
Exemple(s) :
Supposons par exemple que la rgle suivante :
BODY { background: url("yellow") }
L'arrireplan de l'lment BODY dans le document source sera carrel avec l'image issue de la ressource
dsigne par cet URI :
http://www.myorg.org/style/yellow
La manire de grer les URIs qui pointent vers des ressources non disponibles ou inappropries peut varier d'un
agent utilisateur l'autre.
4.3.5 Les compteurs
Les compteurs sont dnots par des identifiants (voir les proprits 'counterincrement' et 'counterreset'). On se
rfre la valeur d'un compteur au travers des notations 'counter(<identifiant>)' ou 'counter(<identifiant>,
<liststyletype>)'. La valeur par dfaut tant 'decimal'.
28
Les compteurs qui sont hors du champs d'action d'une proprit 'counterreset' sont considrs avoir t remis
zro par la proprit 'counterreset' de l'lment racine.
4.3.6 Les couleurs
La valeur d'un champs <couleur> est spcifie par un motcl ou par une valeur numrique RGB.
La liste des noms de motscls de couleur est : aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive,
purple, red, silver, teal, white et yellow. Ces 16 couleurs sont dfinies dans la spcification HTML 4.0
([HTML40]). En complment de ces couleurs, les utilisateurs peuvent spcifier des motscls qui correspondent
aux couleurs utilises par certains objets de l'environnement de l'utilisateur. Consulter le chapitre sur les couleurs
systme pour plus d'informations.
Exemple(s) :
BODY {color: black; background: white }
H1 { color: maroon }
H2 { color: olive }
On utilise le modle de couleur RGB pour la spcification numrique des couleurs. Les exemples cidessous
indiquent tous la mme couleur :
Exemple(s) :
EM
EM
EM
EM
{
{
{
{
color:
color:
color:
color:
#f00 }
/* #rgb */
#ff0000 }
/* #rrggbb */
rgb(255,0,0) }
rgb(100%, 0%, 0%) }
Une valeur RGB en notation hexadcimale est forme d'un caractre '#' immdiatement suivi par trois ou bien six
caractres hexadcimaux. La notation RGB en trois chiffres (#rgb) est convertie dans celle en six chiffres
(#rrggbb) par rplication, et non par ajout de zros. Par exemple, #fbo se transforme en #ffbb00. Ceci assure que
la couleur blanche (#ffffff) puisse tre spcifie avec la notation courte (#fff) et que celleci soit indpendante de
la profondeur de couleur de l'cran.
Une valeur RGB en notation fonctionnelle est forme par les caractres 'rgb(', suivis par une liste de trois valeurs
numriques (soit trois entiers, soit trois pourcentages) spares par des virgules et suivi par ')'. La valeur entire
255 correspond 100% et f ou ff en notation hexadcimale : rgb(255,255,255) = rgb(100%,100%,100%) = #fff.
Les blancs sont permis autour de chacune des valeurs.
Toutes les couleurs RGB sont spcifies dans l'espace de couleur sRGB (voir [SRGB]). La fidlit du rendu des
couleurs peut varier d'un agent utilisateur l'autre, mais l'emploi de sRGB dfinit une mesure objective et sans
ambigut des couleurs, en accord avec des standards internationaux (voir [COLORIMETRY]).
Les agents utilisateurs conformes peuvent se limiter appliquer une correction gamma dans leurs efforts rendre
les couleurs. L'espace sRGB spcifie un gamma d'affichage de 2.2 dans certaines conditions spcifique de vision.
Les agents utilisateurs devraient adapter les couleurs donnes en CSS, en conjonction avec le rendu "naturel" du
gamma d'un appareil de sortie, de manire, produire un gamma effectif de 2.2. Voir le chapitre sur la correction
gamma pour plus de dtails. Noter que seules les couleurs spcifies en CSS sont concernes, les images, par
exemple, sont senses emporter leurs propres informations de couleur.
29
{
{
{
{
color:
color:
color:
color:
rgb(255,0,0) }
rgb(300,0,0) }
rgb(255,10,0) }
rgb(110%, 0%, 0%) }
/*
/*
/*
/*
entier
ramen
ramen
ramen
de 0 255 */
rgb(255,0,0) */
rgb(255,0,0) */
rgb(100%,0%,0%) */
D'autres appareils, dont les imprimantes, ont des gamuts diffrents de celui de sRGB ; certaines couleurs hors de
la plage 0..255 de sRGB seront reprsentables ( l'intrieur du gamut de l'appareil), d'autres, bien que dans cette
plage, seront hors du gamut de l'appareil et seront de ce fait rognes.
Note : Bien que les couleurs puissent avoir un impact informationnel important pour les documents, les rendant
plus lisibles, merci de considrer le fait que certaines combinaisons de couleurs peuvent causer des difficults aux
utilisateurs qui ont des dficiences visuelles. Si vous utilisez une image de fond ou spcifiez une couleur
d'arrireplan, veuillez choisir des couleurs de premier plan en accord avec leur fond.
4.3.7 Les angles
Les valeurs d'angles (dnotes par <angle> dans le texte) sont employes avec les feuilles de style auditives.
Elles sont formes d'un caractre de signe facultatif ('+' ou '', '+' tant par dfaut) immdiatement suivi par un
<nombre> et immdiatement suivi par un identifiant d'unit d'angle.
Les identifiants d'unit d'angle sont :
deg : degrs
grad : grades
rad : radians
Les valeur d'angle peuvent tre ngatives. L'agent utilisateur devrait les normaliser dans la plage de 0 360
degrs. Par exemple, 10deg et 350deg sont quivalents.
Un angle droit, par exemple, fait '90deg' ou '100grad' ou '1.570796326794897rad'.
4.3.8 Les dures
Les valeurs de dure (dnotes par <dure> dans ce texte) sont employes avec les feuilles de style auditives.
Elles sont formes d'un <nombre> immdiatement suivi par un identifiant d'unit de dure.
Les identifiants d'unit de dure sont :
ms : millisecondes
s : secondes
Les valeurs de dure ne peuvent pas tre ngatives.
4.3.9 Les frquences
Les valeurs de frquence (dnotes par <frquence> dans le texte) sont employes avec les feuilles de style
auditives.
Elles sont formes d'un <nombre> immdiatement suivi par un identifiant d'unit de frquence.
Les identifiants d'unit de frquence sont :
Hz: Hertz
kHz: kilo Hertz
Les valeurs de frquence ne peuvent pas tre ngatives.
Par exemple, 200Hz (ou 200hz) est un son grave et 6kHz (ou 6khz) est un son aig.
30
une
une
une
une
'chane'"
\"chane\""
"chane"'
\'chane\''
Une chane ne peut pas contenir directement un caractre nouvelle ligne. Pour cela, on emploie le caractre
chapp "\A" (en notation hexadcimale, A est le caractre Unicode pour une nouvelle ligne, celuici est donc la
reprsentation gnrique pour "nouvelle ligne" en CSS). Voir la proprit 'content' pour un exemple.
Il est possible de couper les chanes pour les rpartir sur plusieurs lignes, pour des raisons esthtiques ou autres,
mais il faut dans ce cas chapper la nouvelle ligne ellemme avec une barre oblique inverse (\). Par exemple, les
deux slecteurs qui suivent sont les mmes :
Exemple(s) :
A[TITLE="un titre qui\
est assez court"] {/*...*/}
A[TITLE="un titre qui est assez court"] {/*...*/}
31
plutt que :
<SPAN style="voicefamily: Dürst">...</SPAN>
32
5 Les slecteurs
5.1 La reconnaissance d'un motif
En CSS, des rgles de reconnaissance de motifs dterminent les rgles de style qui s'appliquent aux lments de
l'arborescence du document. Ces motifs, nomms slecteurs, sont varis, allant du simple nom d'un lment
jusqu'aux riches motifs contextuels. Quand toutes les conditions d'un motif sont vrifies pour un lment donn,
celuici est retenu par le slecteur.
Les noms des lments d'un document peuvent tre sensibles la casse, cela dpend du langage du document. Par
exemple, ceuxci sont insensibles la casse en HTML, par contre, ils le sont en XML.
Cette table rsume la syntaxe du slecteur de CSS2 :
Motif
Signification
Dcrit au chapitre...
Slecteur universel
Slecteurs de type
EF
Slecteurs descendants
E>F
Slecteurs d'enfant
E:firstchild
E:link
E:visited
E:active
E:hover
E:focus
E:lang(c)
E+F
E[foo]
Slecteurs d'attribut
E[foo="warning"]
E[foo~="warning"]
E[lang|="en"]
DIV.warning
E#myid
Slecteurs de classe
33
CSS offre d'autres mcanismes "raccourcis" semblables, comme les dclarations multiples et les proprits
raccoucies.
34
Bien que l'intention ait pu tre l'emphase d'un texte en changeant sa couleur, l'effet sera perdu dans ce casci :
<H1>Ce titre est <EM>trs</EM> important</H1>
Nous tenons compte de cette ventualit en ajoutant une rgle au jeu prcdent, celleci fixe une couleur bleu au
texte d'un lment EM survenant dans un lment H1 :
H1 { color: red }
EM { color: red }
H1 EM { color: blue }
Exemple(s) :
Avec ce slecteur :
DIV * P
on touche les lments P qui sont les petitsenfants, ou les descendants plus lointains, d'un lment DIV. Noter les
blancs facultatifs de chaque ct du "*".
Exemple(s) :
Dans cette rgle suivante, on a une combinaison de slecteur descendant et de slecteur d'attribut, celleci
concerne les lments qui, la fois, (1) ont un attribut "href" et (2) sont contenus dans un lment P luimme
dans un lment DIV :
DIV P *[href]
Exemple(s) :
Dans cet exempleci, on a combin un slecteur descendant et un slecteur d'enfant :
DIV OL>LI P
35
Le suivant produit une rduction de l'espace vertical entre un lment H1 et l'lment H2 qui le suit juste aprs :
H1 + H2 { margintop: 5mm }
Exemple(s) :
Ici, la rgle est similaire la prcdente, la diffrence qu'elle comporte un slecteur d'attribut en plus. Ainsi, une
mise en forme particulire s'applique aux lments H1 avec un attribut class="opener" :
H1.opener + H2 { margintop: 5mm }
36
On peut utiliser plusieurs slecteurs d'attribut qui se rfrent plusieurs attributs d'un lment, ou mme, plusieurs
fois au mme attribut.
Exemple(s) :
Ici, le slecteur correspond avec tous les lments SPAN dont l'attribut "bonjour" a exactement la valeur "soleil"
et l'attribut "adieu" exactement la valeur "nuages" :
SPAN[bonjour="soleil"][adieu="nuages"] { color: blue; }
Exemple(s) :
Les slecteurs suivants illustrent la diffrence entre "=" et "~=". Le premier sera vrifi pour, en exemple, la
valeur "copyright copyleft copyeditor" de l'attribut "rel". Le second uniquement quand l'attribut "href" aura la
valeur "http://www.w3.org/".
A[rel~="copyright"]
A[href="http://www.w3.org/"]
Exemple(s) :
La rgle suivante cache tous les lments dont la valeur de l'attribut "lang" est "fr" (c..d. en langue franaise).
*[LANG=fr] { display : none }
Exemple(s) :
Cette rgleci sera vrifie pour les valeurs de l'attribut "lang" qui commence par "en", y inclus "en", "enUS" et
"encockney" :
*[LANG|="en"] { color : red }
Exemple(s) :
De la mme faon, la feuille de style auditive cidessous permet la lecture d'un dialogue avec des voix diffrentes
pour chaque personnage :
DIALOGUE[character=romeo]
{ voicefamily: "Lawrence Olivier", charles, male }
DIALOGUE[character=juliet]
{ voicefamily: "Vivien Leigh", victoria, female }
5.8.2 Les valeurs par dfaut des attributs dans les DTDs
La correspondance se fait sur les valeurs d'attributs dans l'arborescence du document. Pour des langages de
document autres que HTML, les valeurs par dfaut des attributs peuvent tre dfinies dans un DTD ou ailleurs.
Les feuilles de style devraient tre construites pour fonctionner mme si les valeurs par dfaut n'taient pas inclues
dans l'arborescence du document.
Exemple(s) :
Considrons, par exemple, un lment EXEMPLE avec un attribut "notation" et sa valeur par dfaut "decimal".
Un extrait du DTD pourrait tre :
<!ATTLIST EXEMPLE notation (decimal,octal) "decimal">
37
alors, pour les cas o l'attribut a une valeur par dfaut, non fix explicitement, il faudrait rajouter cette rgleci :
EXAMPLE { /*... paramtres par dfaut de la proprit ...*/ }
Ce slecteur tant moins spcifique qu'un slecteur d'attribut, celuici ne sera employ que dans les situations par
dfaut. Il faudra tenir compte explicitement de toutes les autres valeurs d'attribut qui ne doivent pas recevoir le
mme style que le dfaut.
5.8.3 Les slecteurs de classe
Pour les feuilles de style employe avec HTML, les auteurs, visant l'attribut "class", peuvent utiliser la notation
avec un point (.) en remplacement de celle avec "~=". Ainsi, "DIV.valeur" et "DIV[class~=valeur" ont la mme
signification en HTML. La valeur de l'attribut doit suivre immdiatement le caractre ".".
Exemple(s) :
Par exemple, on peut appliquer un style ceux des lment avec l'attribut class~="pastoral", comme suit
:
*.pastoral { color: green }
ou simplement avec :
.pastoral { color: green }
Dans ce qui suit, on applique seulement le style aux lments H1 avec l'attribut class~="pastoral" :
H1.pastoral { color: green }
Selon ces rgles, le premier lment H1 n'aurait pas son texte en vert, au contraire du second :
<H1>Pas vert</H1>
<H1 class="pastoral">Vraiment vert</H1>
Pour une correspondance sur un sousensemble des valeurs de "class", chacune des valeurs doit tre prcde par
un ".", dans n'importe quel ordre.
Exemple(s) :
Par exemple, cette rgle suivante est vrifie pour chacun des lments P dont la valeur de l'attribut "class" est
constitue d'une suite de valeurs spares par des blancs, parmi cellesci "pastoral" et "marine" :
P.pastoral.marine { color: green }
La rgle est applique pour une valeur class="pastoral blue aqua marine", mais pas pour
class="pastoral blue".
Note : Avec une telle importance donne par CSS l'attribut "class", les auteurs pourraient presque construire
leur propre "langage de document" en partant d'lments qui ont une faible vocation prsentationnelle (comme
DIV et SPAN en HTML) et en leur appliquant un style via cet attribut. Les auteurs devraient viter une telle
pratique car les significations des lments de structure d'un langage de document sont reconnues et acceptes,
celles des classes dfinies par un auteur risquant de ne pas l'tre.
38
Dans cet exemple, la rgle s'applique l'lment avec un ID dont la valeur est "z98y". Il s'agit de l'lment P :
<HEAD>
<TITLE>Toucher P</TITLE>
<STYLE type="text/css">
*#z98y { letterspacing: 0.3em }
</STYLE>
</HEAD>
<BODY>
<P id=z98y>Un texte largi</P>
</BODY>
Par contre, dans celuici, la rgle s'applique seulement un lment H1 avec un ID dont la valeur est "z98y". Ici,
l'lment P ne sera pas concern :
<HEAD>
<TITLE>Touche seulement H1</TITLE>
<STYLE type="text/css">
H1#z98y { letterspacing: 0.5em }
</STYLE>
</HEAD>
<BODY>
<P id=z98y>Un texte largi</P>
</BODY>
Les slecteurs d'ID sont plus spcifiques que les slecteurs d'attribut. En HTML, par exemple, le slecteur #p123
a plus de poids que le slecteur [ID=p123], en considrant la cascade.
Note : En XML 1.0 [XML10], c'est dans un DTD qu'on rpertorie les attributs qui contiennent les IDs des
lments. Au moment d'interprter un document XML, les agents utilisateurs ne lisant pas toujours le DTD,
ceuxci risquent de ne pas connatre l'ID d'un lment. Un auteur qui sait ou suspecte cette possibilit devrait
employer un slecteur d'attribut normal : [name=p371] plutt que #p371. Comme l'ordre de cascade diffre
selon qu'on emploie un slecteur d'attribut ou un slecteur d'ID, il peut tre ncessaire de complter les
dclarations avec une priorit "!important" : [name=p371] {color: red !important}. Bien entendu,
dans un document XML 1.0 sans DTD, les lments n'ont pas du tout d'IDs.
39
Dans l'extrait suivant, ce mme slecteur viserait l'lment P dans l'lment DIV :
<P> Le dernier P avant la note.
<DIV class="note">
<P> Le premier P l'intrieur de la note.
</DIV>
Exemple(s) :
La rgle suivante applique un style de texte gras chacun des lment EM descendants d'un lment P, celuici
tant un premier enfant :
P:firstchild EM { fontweight : bold }
Noter que les botes anonymes n'apparaissent pas dans l'arborescence du document, c'est pourquoi elles ne sont
pas prises en compte au moment de la mise en forme du premier enfant.
Par exemple, l'lment EM qui est dans :
<P>abc <EM>dfaut</EM>
Exemple(s) :
Pour ce lien :
<A class="external" href="http://out.side/">lien externe</A>
{
{
{
{
color:
color:
color:
color:
red }
/*
blue }
/*
yellow } /*
lime }
/*
lien
lien
lien
lien
nonvisit */
visit
*/
survol
*/
activ
*/
Noter que la rgle A:hover doit tre plac aprs A:link et A:visited, autrement les rgles de cascade feront que la
proprit 'color' spcifie par celleci sera cache. De la mme faon, comme la rgle A:active est place aprs
A:hover, la couleur spcifie par celleci (lime) sera applique quand l'utilisateur active et survole l'lment A.
Exemple(s) :
Voici un exemple de combinaison de pseudoclasses dynamiques :
41
{
{
{
{
quotes:
quotes:
quotes:
quotes:
La seconde paire de rgles applique en fait la proprit 'quotes' aux lments Q, en fonction de la langue du
parent. Ceci pour tenir compte du choix des marques de citations, cellesci dpendent typiquement de la langue
employe par l'lment qui les contient, et non de la citation ellemme. Ainsi, ce morceau d'anglais qui devrait
etre by surprise (et non by surprise), au milieu de cette phrase en franais.
La rgle prcdente signifie "mettre les lettres de la premire ligne de chaque paragraphe en majuscule".
Cependant, le slecteur "P:firstline" ne correspond aucun lment HTML rel. Celuici correspond en fait un
pseudolment que l'agent utilisateur conforme va insrer au dbut de chaque paragraphe.
Noter que la longueur de la premire ligne dpend de plusieurs facteurs, dont la largeur de la page, la taille de la
police, etc. Ainsi un paragraphe quelconque en HTML tel que :
<P>Voici un paragraphe HTML plutt
long qui va tre dcoup en plusieurs
lignes. La premire ligne sera identifie
l'aide d'une squence de balises fictives.
Les autres lignes vont rester ordinaires
dans la suite du paragraphe.</P>
42
Un agent utilisateur pourrait le "rcrire" et y inclure la squence de balises fictives pour le pseudolment
:firstline. Cette squence fictive aide reprsenter comment les proprit sont hrites.
<P><P:firstline>Voici un paragraphe HTML plutt
long </P:firstline>qui va tre dcoup
en plusieurs lignes. La premire ligne sera identifie
l'aide d'une squence de balises fictives. Les autres lignes
vont rester ordinaires dans la suite du paragraphe.</P>
Quand un pseudolment coupe un lment rel, on peut souvent dcrire l'effet dsir avec une squence de
balises fictives qui ferment puis rouvrent cet lment. Ainsi, si on balise le paragraphe de l'exemple avec un
lment SPAN :
<P><SPAN class="test">Voici un paragraphe HTML plutt long
qui va tre dcoup en plusieurs lignes.</SPAN>
La premire ligne sera identifie l'aide d'une squence
de balises fictives. Les autres lignes vont rester ordinaires dans la suite du
paragraphe.</P>
L'agent utilisateur pourrait gnrer la squence de balises fictives, ouvrantes et fermantes, de faon approprie,
pour l'lment SPAN au moment d'insrer celle du pseudolment :firstline.
<P><P:firstline><SPAN class="test"> Voici un paragraphe
HTML plutt long</SPAN></P:firstline><SPAN class="test"> qui
va tre dcoup en plusieurs lignes.</SPAN> La
premire ligne sera identifie l'aide d'une squence de
balises fictives. Les autres lignes vont rester ordinaires dans la suite du
paragraphe.</P>
Dans le cas o une certaine premire ligne est aussi la premire d'un certain lment de type bloc A et en mme
temps que l'anctre B de celuici, la squence de balise fictive devient :
<B>...<A>...<B:firstline><A:firstline>Voici la premire ligne</A:firstline></B:firstline>
Toutes les balises fictives se trouvent dans le plus petit des lment de type bloc, l'ordre d'imbrication des balises
fictives A:firstline et B:firstline correspondant celui des lments A et B.
La "premire ligne mise en forme" d'un lment de type bloc correspond la premire ligne dans le flot de
l'lment, ignorant ainsi d'ventuels lments flottants ou en position absolue. Par exemple :
<div>
<p style="float: left">Paragraphe flottant...</p>
<p>La premire ligne commence ici...</p>
</div>
Un slecteur 'div:firstline' s'appliquerait la premire ligne du second paragraphe, car le premier paragraphe se
trouve en dehors du flot normal.
Le pseudolment :firstline ne peut s'attacher qu' un lment de type bloc.
Le pseudolment :firstline est similaire un lment de type enligne, avec certaines restrictions. Seules les
proprits suivantes peuvent lui tre appliques : les proprits de police, les proprits de couleur, les proprits
d'arrireplan, 'wordspacing', 'letterspacing', 'textdecoration', 'verticalalign', 'texttransform', 'lineheight',
'textshadow' et 'clear'.
5.12.2 Le pseudolment :firstletter
Le pseudolment :firstletter peut tre employ pour faire des capitales initiales et des lettrines, ce sont des
effets typographiques courants. Ce genre de lettre initiale est assimil un lment de type enligne quand la
valeur de sa proprit 'float' est 'none', et assimil un lment flottant autrement.
Le pseudolment :firstletter admet ces proprits : les proprits de police, les proprits de couleur, les
proprits d'arrireplan, 'textdecoration', 'verticalalign' (seulement si la valeur de la proprit 'float' est 'none'),
'texttransform', 'lineheight', les proprits de marge, les proprits d'espacement, les proprits de bordure,
'float', 'textshadow' et 'clear'.
43
Noter que les balises du pseudolment :firstletter (c..d., le premier caractre) viennent buter contre le
contenu, alors que la balise ouvrante du pseudolment :firstline s'insre juste aprs celle ouvrante de l'lment
auquel il est accol.
Pour obtenir le formatage des lettrines traditionnelles, les agents utilisateurs peuvent approcher les tailles des
polices, par exemple dans l'alignement des lignes de base. Le contour des glyphes peut aussi intervenir dans le
formatage.
Les caractres de ponctuation (c..d. les caractres dfinis en Unicode [UNICODE] dans les classes de
ponctuation "open" (Ps), "close" (Pe) et "other" (Po) ), qui prcdent la premire lettre, ceuxci devraient tre pris
en compte, comme ici :
Le pseudolment :firstletter ne peut correspondre qu'avec une partie d'un lment de type bloc.
Certaines combinaisons de lettres, dans une langue donne, peuvent obir des rgles particulires. En hollandais,
par exemple, quand la combinaison "ij" survient au dbut d'un mot, le pseudolment :firstletter devrait les
prendre en compte ensemble.
Exemple(s) :
L'exemple suivant illustre l'interaction de pseudolments qui sont enchevtrs. La premire lettre de chacun
des lments P sera verte et aura une taille de police de '24pt'. La suite de cette premire ligne sera bleue, le reste
des lignes du paragraphe sera rouge.
P { color: red; fontsize: 12pt }
P:firstletter { color: green; fontsize: 200% }
P:firstline { color: blue }
44
En supposant qu'un retour la ligne survient avant le mot "sur", la squence de balises fictives en serait :
<P>
<P:firstline>
<P:firstletter>
V
</P:firstletter>oici un morceau de texte qui est format
</P:firstline>
sur deux lignes.
</P>
Noter que l'lment P:firstletter se tient l'intrieur de l'lment P:firstline. Le pseudolment :firstletter
hrite des proprits appliques au pseudolment :firstline, cependant, si on lui spcifie une mme proprit,
c'est la valeur de cette dernire qui sera retenue.
5.12.3 Les pseudolments :before et :after
Les pseudolment ':before' et ':after' servent insrer un contenu gnr avant ou aprs celui d'un lment. Le
chapitre sur le texte gnr en donne une explication.
Exemple(s) :
H1:before {content: counter(chapno, upperroman) ". "}
En combinaison avec les pseudolments :firstline et :firstletter, les pseudolments :before et :after
s'appliquent la premire lettre ou la premire ligne, y compris le texte insr.
Exemple(s) :
P.special:before {content: "Spcial ! "}
P.special:firstletter {color: gold}
45
6.2 L'hritage
Les lments enfants hritent de certaines valeurs de leurs lments parents dans l'arborescence du document.
Chacune des proprit dfinit si elle est hrite, ou non.
Supposons un lment accentu (ici EM) dans un lment H1 :
<H1>Le titre <EM>est</EM> important !</H1>
Si aucune couleur n'est prcise pour l'lment EM, le mot accentu "est" hritera de la couleur de l'lment
parent, ainsi l'lment H1 ayant une couleur bleu, EM le sera galement.
46
Les valeurs de pourcentage spcifies ne sont pas hrites, celles calcules le sont.
Exemple(s) :
Par exemple, cette feuille de style :
BODY { fontsize: 10pt }
H1 { fontsize: 120% }
Ici, la proprit 'fontsize' de l'lment H1 aura une valeur calcule de '12pt' (120% de la valeur de son parent).
Et, comme la valeur de la proprit 'fontsize' est hrite, la valeur calcule pour l'lment EM sera aussi '12pt'. Si
l'agent utilisateur ne dispose pas d'une police de 12pt mais, par exemple, d'une police de 11pt, la valeur relle de la
proprit 'fontsize' de ces lments pourrait tre '11pt'.
6.2.1 La valeur 'inherit'
On peut spcifier pour chacune des proprits la valeur 'inherit', ce qui signifie, pour un lment donn, que la
proprit de cet lment prend la mme valeur calcule que pour celle de son parent. La valeur hrite qui est
normalement utilise comme une valeur refuge, peut tre renforce par une valeur 'inherit' explicite.
[Errata: La valeur 'inherit' provoque l'hritage des valeurs par les proprits. Ceci s'applique galement aux
proprits dont la valeur n'est normalement pas hrite.]
Exemple(s):
Dans l'exemple cidessous, on applique les proprits 'color' et 'background' l'lment BODY. La valeur de
'color' sera hrite par tous ses lments et leur fond sera transparent. Si ces rgles font partie de la feuille de style
de l'utilisateur, un texte en noir sur fond blanc sera respect dans tout le document.
BODY {
color: black !important;
background: white !important;
}
* {
color: inherit !important;
background: transparent;
}
47
Comme les agents utilisateurs ne sont pas tenus de rassembler les ressources pour des types de mdia inconnus
d'eux, les auteurs peuvent spcifier des rgles @import selon les mdias requis. Les imports conditionnels
prcisent leurs types, spars par des virgules aprs l'URI.
Exemple(s) :
Les feuilles de styles importes et enveloppes dans une rgle @media produiraient les mmes effets, avec ce
mdia, que les feuilles de style suivantes, nanmoins ces dernires peuvent pargner aux agents utilisateurs des
requtes sans fondement.
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
Si le type de mdia n'est pas prcis, l'import est inconditionnel. De mme, si on spcifie le type de mdia 'all'.
6.4 La cascade
Les feuilles de style ont trois origines diffrentes : l'auteur, l'utilisateur et l'agent utilisateur.
L'auteur : produit des feuilles de style pour un document source selon les conventions du langage de ce
document. Par exemple en HTML, cellesci peuvent tre incorpores dans le document ou relies
celuici.
L'utilisateur : peut tre capable d'indiquer une information de style pour un document particulier. Par
exemple, celuici peut dsigner une feuille de style contenue dans un fichier ou un agent utilisateur peut
fournir l'interface pour produire une feuille de style personnelle (ou faire comme s'il l'avait fait).
L'agent utilisateur: l'agent utilisateur conforme doit appliquer sa feuille de style par dfaut (ou faire
comme s'il l'avait fait) avant toutes les autres feuilles de style d'un document. Cette feuille de style devrait
prsenter les lments du langage du document de faon satisfaire au rendu gnralement admis pour
ceuxci dans ce langage. Par exemple, pour des navigateurs visuels, l'lment EM en HTML est rendu
avec une police en italique. Voir l'appendice A pour une feuille de style par dfaut recommande pour les
documents HTML 4.0.
Noter que cette feuille de style par dfaut peut varier si l'utilisateur change les rglages de son systme
(ex. les couleurs du systme). Cependant, il peut tre impossible de modifier les valeurs de celleci, en
raison d'une implmentation rduite de l'agent utilisateur.
Les champs d'action de ces trois feuilles de style vont se recouper, leur interaction dpendant des rgles de la
cascade.
La cascade de CSS dfinit un ordre de priorit, ou poids, pour chaques rgles de style. Quand plusieurs rgles sont
mises en uvre, celle avec le plus grand poids a prsance.
Les rgles des feuilles de style de l'auteur ont, par dfaut, plus de poids que celles de l'utilisateur. Au contraire,
l'ordre de priorit est invers pour les rgles "!important". Les rgles d'un auteur et d'un utilisateur sont prioritaires
sur celles de la feuille de style par dfaut de l'agent utilisateur.
Les feuilles de style importes suivent aussi la cascade, leur poids dpendant de leur ordre d'importation. Des
rgles tant spcifies dans une feuille de style donne, cellesci remplacent les rgles de mme poids importes
d'une autre feuille de style. Les feuilles de style importes peuvent ellesmme importer et remplacer d'autres
feuilles de style, rcursivement, les mmes rgles de prsance leur tant appliques.
6.4.1 L'ordre de cascade
Pour trouver la valeur d'une combinaison lment/proprit, les agents utilisateurs doivent suivre l'ordre de tri
suivante :
1. Trouver toutes les dclarations qui concernent l'lment et la proprit en question, pour le type de mdia
vis. Cellesci s'appliquent si le slecteur correspond cet lment ;
48
/*
/*
/*
/*
/*
/*
/*
/*
a=0
a=0
a=0
a=0
a=0
a=0
a=0
a=1
b=0
b=0
b=0
b=0
b=1
b=1
b=2
b=0
c=0
c=1
c=2
c=3
c=1
c=3
c=1
c=0
>
>
>
>
>
>
>
>
specificit
specificit
specificit
specificit
specificit
specificit
specificit
specificit
=
0
=
1
=
2
=
3
= 11
= 13
= 21
= 100
*/
*/
*/
*/
*/
*/
*/
*/
Pour HTML, les valeurs de l'attribut "style" sont des rgles de feuille de style. Ces rgles n'ont pas de slecteurs,
mais dans l'optique du point 3 de l'algorithme de cascade, on considre qu'elles ont un slecteur d'ID (specificit :
a=1, b=0, c=0). Et dans l'optique du point 4, on considre qu'elles surviennent aprs toutes les autres rgles.
<HEAD>
<STYLE type="text/css">
#x97z { color: blue }
</STYLE>
</HEAD>
<BODY>
<P ID=x97z style="color: red">
</BODY>
Dans l'exemple cidessus, l'lment P aura la couleur rouge. Bien que la specificit soit la mme pour les deux
dclarations, la valeur dans la rgle de l'attribut "style" surclassera celle qui lui correspond de l'lment STYLE du
fait du point 4 des rgles de cascade.
Note : La specificit est seulement base sur la forme du slecteur. En effet, un slecteur de la forme "[id=p33]"
est compt comme un slecteur d'attribut (a=0, b=1, c=0), mme si l'attribut "id" est dfini comme un "ID" dans le
DTD du document source.
6.4.4 L'ordre de priorit des indications de prsentation en dehors de CSS
L'agent utilisateur peut privilgier les indications de prsentation provenant d'autres sources que les feuilles de
style, par exemple l'lment FONT ou l'attribut "align" en HTML. Dans ce cas, ces indications doivent tre
traduites dans leurs rgles quivalentes de CSS avec une specificit gale zro. Ces rgles sont senses se
trouver au dbut de la feuille de style de l'auteur, permettant leur surclassement par les rgles subsquentes de
cette feuille de style.
Note : Durant une priode de transition, cette manire de faire facilitera la coexistence des attributs stylistiques
et des feuilles de style.
Note : Pour CSS1, ces indications de prsentations en dehors de CSS avaient une specificit gale 1, et non O.
Ce changement est du l'introduction du slecteur universel, qui a une specificit de 0.
50
En spcifiant le mdia vis dans le langage du document. Par exemple avec HTML 4.0 ([HTML40]), on
utilise l'attribut "media" de l'lment LINK pour attacher une feuille de style externe un mdia donn :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Un lien vers le mdia cible</TITLE>
<LINK rel="stylesheet" type="text/css"
media="print, handheld" href="foo.css">
</HEAD>
<BODY>
<P>Le corps du document...
</BODY>
</HTML>
print {
{ fontsize: 10pt }
screen {
{ fontsize: 12pt }
screen, print {
{ lineheight: 1.2 }
Groupes de mdias
continu/pagin visuel/auditif/tactile grille/bitmap interactif/statique
continu
auditif
sans objet
les deux
continu
tactile
grille
les deux
pagin
tactile
grille
les deux
les deux
visuel
les deux
les deux
pagin
visuel
bitmap
statique
pagin
visuel
bitmap
statique
continu
visuel
bitmap
les deux
continu
visuel
grille
les deux
les deux
visuel, auditif
bitmap
les deux
53
On peut subdiviser la marge, la bordure et l'espacement selon qu'il s'agisse du ct gauche, droite, haut ou bas (ex.
dans le schma, "MG" mis pour marge gauche [ndt. marginleft], "ED" mis pour espacement droit [ndt.
paddingright], "BH" mis pour bordure haute [ndt. bordertop], etc.).
On appelle le primtre de chacune des quatre aires (contenu, espacement, bordure et marge) un "bord", chaque
bote a donc quatre bords :
Le bord du contenu ou bord interne
Celuici entoure le rendu du contenu de l'lment.
Le bord de l'espacement
Celuici entoure la bote de l'espacement. Si la valeur de l'espacement est 0, son bord est confondu avec
celui du contenu.
Le bord de la bordure
Celuici entoure la bote de la bordure. Si la valeur de la bordure est 0, son bord est confondu avec celui
de l'espacement.
Le bord de la marge ou bord externe
Celuici entoure la bote de la marge. Si la valeur de la marge est 0, son bord est confondu avec celui de
la bordure.
On peut se rfrer chacun de ces bords selon qu'il se trouve du ct gauche, droite, haut ou bas.
Les dimensions de l'aire du contenu d'une bote, cellesci tant la largeur du contenu et la hauteur du contenu,
dpendent de plusieurs facteurs : l'lment gnrant la bote atil une proprit 'width' ou bien 'height', la bote
contientelle du texte ou d'autres botes, la bote estelle une table, etc. Les largeurs et hauteurs des botes sont
traites dans le chapitre concernant les dtails du modle de mise en forme visuel.
On obtient la The largeur de la bote en additionnant les marges, bordures et espacements gauches et droites
avec le largeur du contenu. De mme pour la hauteur de la bote, en additionnant les marges, bordures et
54
celuici aboutit une arborescence du document avec, entre autres relations, un lment UL ayant deux lments
enfants LI.
Le premier des schmas qui suivent illustre ce que cela pourrait donner. Le second montre les interactions entre
les marges, espacements et bordures de l'lment UL et ceux de ses lments enfants LI.
55
Noter que :
La largeur du contenu de chaque bote LI est calcule en partant du haut ; le bloc conteneur de chacune
des botes LI est tabli par l'lment UL ;
La hauteur de chacune des botes LI est issue de la somme de la hauteur du contenu et des espacements,
bordures et marges hautes et basses. Noter que les marges verticales entres les deux botes ont fusionn ;
La largeur de l'espacement droit des botes LI ont une valeur de 0 (pour la proprit 'padding'). Ceci est
visible dans la seconde illustration ;
Les marges des botes LI sont transparentes, elles le sont toujours, ainsi le fond des aires d'espacement et
du contenu de l'lment UL, de couleur verte, est visible au travers de ces marges ;
Le second lment LI se voit appliquer une bordure en trait pointill (par la proprit 'borderstyle').
'margin'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
<margelargeur>{1,4} | inherit
non dfinie pour les proprits raccourcies
tous les lments
non
se rapporte la largeur du bloc conteneur
visuel
La proprit raccourcie 'margin' sert regrouper les proprits 'margintop', 'marginright', 'marginbottom' et
'marginleft' dans la feuille de style.
Quand il n'y a qu'une seule valeur spcifie, celleci s'applique tous les cts. S'il y en a deux, alors la premire
valeur s'applique pour la marge du haut et celle du bas, et la seconde pour la marge droite et celle de gauche. Avec
trois valeurs, la marge du haut reoit la premire valeur, les marges gauche et droite la deuxime et la marge du
bas la troisime. Pour quatre valeurs, cellesci s'appliquent respectivement aux marges du haut, de droite, du bas
et de gauche.
Exemple(s) :
'padding'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
<espacementlargeur>{1,4} | inherit
non dfinie pour les proprits raccourcies
tous les lments
non
se rapporte la largeur du bloc conteneur
visuel
La proprit raccourcie 'padding' sert regrouper les proprits 'paddingtop', 'paddingright', 'paddingbottom'
et 'paddingleft' at the same place dans la feuille de style.
Quand il n'y a qu'une seule valeur spcifie, celleci s'applique tous les cts. S'il y en a deux, alors la premire
valeur s'applique pour l'espacement du haut et celui du bas, et la seconde pour l'espacement de droite et celui de
gauche. Avec trois valeurs, l'espacement du haut reoit la premire valeur, les espacements gauche et droite la
deuxime et l'espacement du bas la troisime. Pour quatre valeurs, cellesci s'appliquent respectivement aux
espacements du haut, de droite, du bas et de gauche.
La couleur du fond ou l'image de l'aire d'espacement sont indiques avec la proprit 'background' :
Exemple(s) :
H1 {
background: white;
padding: 1em 2em;
}
<bordurepaisseur>{1,4} | inherit
voir les proprits individuelles
tous les lments
non
sans objet
visuel
La proprit 'bordercolor' spcifie la couleur des quatre cts de la bordure. Voici la signification des valeurs que
celleci admet :
<couleur>
Spcifie la valeur d'une couleur ;
transparent
La bordure est transparent (tout en ayant une paisseur).
La proprit 'bordercolor' admet une quatre valeurs, les valeurs tant appliques sur les quatres cts de la
bordure de la mme faon que pour la proprit 'borderwidth' dfinie plus haut.
Quand, pour un lment, aucune valeur de couleur n'est spcifie par une proprit de bordure, les agents
utilisateurs doivent utiliser celle de la proprit 'color' de cet lment comme valeur calcule pour la couleur de
bordure.
Exemple(s) :
Ici, la bordure aura l'aspect d'un trait plein noir.
P {
color: black;
background: white;
border: solid;
}
<bordurestyle>{1,4} | inherit
voir les proprits individuelles
tous les lments
non
sans objet
visuel
La proprit 'borderstyle' admet une quatre valeurs, les valeurs tant appliques sur les quatres cts de la
bordure de la mme faon que pour la proprit 'borderwidth' dfinie plus haut.
Exemple(s) :
#xy34 { borderstyle: solid dotted }
Dans cet exemple, les bordures horizontales auront la valeur 'solid' et les verticales la valeur 'dotted'.
La valeur initiale de style de bordure tant 'none', aucune bordure ne sera visible si on ne spcifie pas de valeur de
style pour celleci.
8.5.4 Les proprits raccourcies de bordure : 'bordertop', 'borderbottom', 'borderright',
'borderleft' et 'border'
'bordertop', 'borderright', 'borderbottom', 'borderleft'
Valeur :
[ <bordurepaisseur> || <bordurestyle> || [ <couleur> | transparent ] ] | inherit
Initiale :
voir les proprits individuelles
S'applique :
tous les lments
Hrite :
non
Pourcentage : sans objet
Mdias :
visuel
Cette proprit raccourcie spcifie les paisseurs, les styles et les couleurs des bordures du haut, de droite, du bas
et de gauche d'une bote.
Exemple(s) :
H1 { borderbottom: thick solid red }
Cette rgleci va appliquer une paisseur, un style et une couleur la bordure du bas, celle sous l'lment H1. Les
valeurs omises dans la dclaration sont senses garder leur valeur initiale. Dans la rgle suivante, comme celleci
ne prcise pas de valeur de couleur pour la bordure, celleci prendra la valeur de la proprit 'color' de l'lment
H1 :
H1 { borderbottom: thick solid }
'border'
Valeur :
Initiale :
La proprit raccourcie 'border' spcifie les mmes paisseurs, couleurs et styles pour les quatre cts d'une bote.
la diffrence des proprits 'margin' et 'padding', cette proprit 'border' ne permet pas de donner des valeurs
propres chacune des quatre bordures. Pour cela, il faut employer l'une, ou plusieurs, des proprits individuelles
de bordure.
Exemple(s) :
Par exemple, la premire rgle quivaut aux quatre qui la suivent :
P { border: solid red }
P {
bordertop: solid red;
borderright: solid red;
borderbottom: solid red;
borderleft: solid red
}
Dans une certaine mesure, les actions des proprits se recoupent, aussi l'ordre dans lequel elles surviennent revt
de l'importance.
Exemple(s) :
Considrons cet exemple :
BLOCKQUOTE {
bordercolor: red;
borderleft: double;
color: black
}
Ici, la valeur de la couleur de bordure gauche est 'black', et celles des autres bordures est 'red'. Ceci est caus par
'borderleft' spcifiant l'paisseur, le style et la couleur. Aucune valeur de couleur n'tant spcifie, celleci est
hrite de la proprit 'color'. Que cette dernire survienne aprs la proprit 'borderleft' ne fait pas de diffrence.
62
63
supposer que les lments DIV et P aient tous deux la valeur 'display: block', l'lment DIV accueille la fois
un contenu de type enligne et un contenu de type bloc. Pour illustrer leur formatage, nous considrons que "Du
texte" est contenu dans une bote de bloc anonyme.
64
L'lment BODY contient un morceau (not C1) de texte anonyme suivi par un lment de type bloc, suivi encore
par un autre morceau (C2) de texte anonyme. La mise en forme finale aboutirait une bote de bloc anonyme pour
l'lment BODY, celleci contiendrait une bote de bloc anonyme enveloppant C1, la bote de bloc de l'lment P
et une autre bote de bloc anonyme pour C2.
Les proprits des botes anonymes hritent des valeurs des proprits de la bote nonanonyme qui les contient
(par exemple dans le schma audessus, celle de l'lment DIV). Les proprits qui ne sont pas hrites
conservent leur valeur initiale. Par exemple dans le schma, la bote anonyme hrite de la police de l'lment DIV
mais ses marges auront une valeur de 0.
9.2.2 Les lments de type enligne et leurs botes
Les lments de type enligne sont ceux des lments du document source qui n'ont pas la forme de nouveaux
blocs de contenu ; ce contenu est distribu en lignes (ex. des parties de texte accentu dans un paragraphe, des
images dans une ligne, etc.). La proprit 'display' admet des valeurs qui confrent un type enligne un lment :
'inline', 'inlinetable', 'compact' et 'runin' (dans certains cas, voir les passages traitant des botes compactes et des
botes en enfilade). Les lments de type enligne gnrent des botes enligne.
Les botes enligne peuvent participer plusieurs contextes de mise en forme :
Dans une bote de bloc, celleci rpond un contexte de mise en forme enligne ;
Quand c'est une bote enligne compacte, elle se positionne dans la marge d'une bote de bloc ;
Les botes des marqueurs se positionnent aussi en dehors d'une bote de bloc.
Les botes enligne anonymes
L'lment P gnre une bote de bloc contenant plusieurs botes enligne. Une bote enligne pour "accentu" est
produite par l'lment de type enligne (EM), mais c'est un lment de type bloc (P) qui gnre les autres botes
enligne pour "Du texte" et "en exemple". Ces dernires sont appeles botes enligne anonymes, car elles ne sont
pas associes un lment enligne.
Ces genres de botes hritent des proprits de celles de leur parent de type bloc. Les proprits non transmissibles
conservent leur valeur initiale. Dans l'exemple prcdent, la couleur des botes anonymes initiales est hrite de
l'lment P, mais leurs fonds restent transparents.
Pour cette spcification, on emploiera simplement l'expression bote anonyme pour dsigner les botes anonymes
de type enligne ou bloc, quand le contexte dtermine sans ambigut leur type.
D'autres types de botes anonymes sont produites lors de la mise en forme des tables.
9.2.3 Les botes compactes
Le comportement d'une bote compacte se dfinit ainsi :
Quand une bote de bloc (celleci n'tant pas flottante ni n'ayant un positionnement absolu) suit une bote
compacte, celleci prend la forme d'une bote enligne sur une ligne. La largeur de la bote rsultante se
compare l'une des marges latrales de la bote de bloc. On dtermine laquelle des marges gauche ou
droite employer selon la valeur de la proprit 'direction' de l'lment qui gnre le bloc conteneur de la
bote compacte et des suivantes. Si la largeur de la bote enligne est infrieure ou gale celle de la
marge, celleci est positionne dans la marge de la faon dcrite juste aprs.
Autrement, la bote compacte devient une bote de bloc.
La position de la bote compacte dans la marge est la suivante : elle se trouve en dehors ( droite ou gauche) de
la premire bote de ligne du bloc, et elle en affecte le calcul de la hauteur. La proprit 'verticalalign' de la bote
65
On peut utiliser la proprit 'textalign' pour aligner l'lment compacte dans la marge : contre le bord gauche de
la marge (avec la valeur 'left'), contre le bord droit ('right') ou au centre ('center'). La valeur 'justify' ne s'applique
pas, celleci sera considre comme tant 'left' ou 'right', selon la valeur de la proprit 'direction' de l'lment de
type bloc dans les marges duquel l'lment compact se trouve (si la valeur de la proprit 'direction' est 'ltr', ce
sera 'left', si c'est 'rtl', ce sera 'right').
Consulter le chapitre traitant du contenu gnr pour des informations sur l'interaction entre les botes compactes
et le contenu gnr.
9.2.4 Les botes en enfilade
Le comportement d'une bote en enfilade se dfinit ainsi :
Quand une bote de bloc (celleci n'tant pas flottante ni n'ayant un positionnement absolu) suit la bote
en enfilade, cette dernire devient la premire bote enligne de la bote de bloc ;
Autrement, la bote en enfilade devient une bote de bloc.
Une bote en enfilade prsente un intrt pour les titres en enfilade, ainsi cet exemple :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Un exemple de bote en enfilade</TITLE>
<STYLE type="text/css">
H3 { display: runin }
</STYLE>
</HEAD>
<BODY>
<H3>Un titre en enfilade.</H3>
<P>Et un paragraphe qui le suit.
</BODY>
</HTML>
L'lment en enfilade hrite de celles de son parent dans la source, et non de celles de la bote de bloc dont il fait
visuellement partie.
Consulter le chapitre traitant du contenu gnr pour des informations sur l'interaction entre les botes en enfilade
et le contenu gnr.
9.2.5 La proprit 'display'
'display'
inline | block | listitem | runin | compact | marker | table | inlinetable | tablerowgroup |
tableheadergroup | tablefootergroup | tablerow | tablecolumngroup | tablecolumn
| tablecell | tablecaption | none | inherit
Initiale :
inline
S'applique tous les lments
:
Hrite :
non
Pourcentage sans objet
:
all
Mdias :
Valeur :
{ display: block }
{ display: inline }
{ display: listitem }
67
Les agents utilisateurs conformes pour HTML peuvent ignorer la proprit 'display'.
68
Cette proprit spcifie le dcalage du bord de la marge du haut d'une bote par rapport celui de la bote du bloc
conteneur.
'right'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie le dcalage du bord droit du contenu d'une bote par rapport celui de la bote du bloc
conteneur.
'bottom'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie le dcalage du bord du bas du contenu d'une bote par rapport celui de la bote du bloc
conteneur.
'left'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie le dcalage du bord gauche du contenu d'une bote par rapport celui de la bote du bloc
conteneur.
Les significations des valeurs de ces quatres proprits sont :
<longueur>
Le dcalage est reprsent par une distance fixe partir du bord de rfrence ;
<pourcentage>
Le dcalage est reprsent par un pourcentage de la largeur du bloc conteneur (pour les proprits 'left' et
'right') ou la hauteur de celuici (pour les proprits 'top' et 'bottom'). Si la hauteur du bloc conteneur n'est
pas spcifie explicitement (par exemple celleci dpendant de la hauteur du contenu), les proprits 'top'
et 'bottom' sont senses avoir la valeur 'auto' ;
auto
L'effet de cette valeur dpend des proprits associes, lesquelles ont aussi cette mme valeur 'auto'. Voir
les passages traitant de la largeur et de la hauteur des lments nonremplacs en position absolue.
Pour les botes en position absolue, les dcalages sont dtermins par rapport la bote du bloc conteneur. Pour
les botes en position relative, ils sont dtermins par rapport aux bords externes de la bote ellemme (c..d., la
bote reoit un emplacement dans le flux normal, puis elle est dcale de cet emplacement en fonction des valeurs
69
70
L'lment P gnre une bote de bloc qui contient cinq botes enligne, dont trois sont anonymes :
Anonyme : "Plusieurs"
EM : "mots accentus"
Anonyme : "apparaissent"
STRONG : "dans cette"
Anonyme : "phrase."
Pour la mise en forme du paragraphe, l'agent utilisateur fait glisser les cinq botes dans des botes de ligne. Ici, la
bote gnrre par l'lment P tablit le bloc conteneur pour les botes de ligne. Si celuici est suffisamment
grand, toutes les botes de ligne vont pouvoir vont tenir dans une seule bote :
Plusieurs mots accentus apparaissent dans cette phrase.
Dans le cas contraire, les botes enligne seront dcoupes et rparties sur plusieurs botes de ligne. Le paragraphe
prcdent pourrait tre dcoup comme ceci :
Plusieurs mots accentus apparaissent
dans cette phrase.
ou comme cela :
Plusieurs mots
accentus apparaissent dans cette
phrase.
Dans ce dernier exemple, la bote de l'lment EM a t dcoupe en deux botes EM (appelonsles "morceau1"
et "morceau2"). Les marges, bordures, espacements ou encore les ornements de texte ne produisent aucun effet
visible aprs "morceau1" ou avant "morceau2".
Voyons cet exemple :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Exemple de flot enligne sur plusieurs lignes</TITLE>
<STYLE type="text/css">
EM {
padding: 2px;
margin: 1em;
borderwidth: medium;
borderstyle: dashed;
lineheight: 2.4em;
}
</STYLE>
</HEAD>
<BODY>
<P>Il y a plusieurs <EM>mots accentus</EM> ici.</P>
</BODY>
</HTML>
Dpendant de la largeur de l'lment P, les botes pourraient tre rparties comme ceci :
71
Les proprits 'top' et 'bottom' grent le dplacement vertical des botes en position relative. Ces proprits doivent
galement avoir des valeurs en opposition. Quand toutes deux ont la valeur 'auto', leurs valeurs calcules
deviennent '0'. Quand l'une d'entre elles a la valeur 'auto', celleci prend la valeur oppose de l'autre. Quand
aucunes des deux n'ont la valeur 'auto', la valeur de la proprit 'bottom' sera ignore (c..d. la valeur calcule pour
la proprit 'bottom' devient celle ngative de la proprit 'top').
Le mouvement dynamique des botes en position relative peut produire un effet d'animation en conjonction avec
des langages de script (voir galement la proprit 'visibility'). On peut aussi employer le positionnement relatif
comme une forme gnrale pour l'criture en exposant ou en indice, la hauteur de ligne n'tant cependant pas
automatiquement ajuste pour considrer le positionnement. Voir les calculs des hauteurs de ligne pour plus
d'information.
D'autres exemples de positionnement relatif apparaissent dans le chapitre traitant de la comparaison entre le flux
normal, les flottants et le positionnement absolu.
La bote de l'lment IMG flotte gauche. Le contenu qui le suit vient contre la droite du flottant, commenant sur
la mme ligne que celuici. Les botes de ligne se trouvant droite du flottant sont raccourcies pour tenir compte
de sa prsence, cellesci reprennent leur largeur "normale" (celle du bloc conteneur tabli par l'lment P) aprs le
flottant. Ce document pourrait apparatre ainsi :
car le contenu se trouvant gauche du flottant est dplac par celuici et reformat le long de son flanc droit.
73
Une image flottante qui cache les bordures des botes de bloc qu'elle chevauche.
L'exemple suivant dmontre l'usage de la proprit 'clear' pour empcher l'coulement d'un contenu le long d'un
flottant.
Exemple(s) :
Supposons une rgle telle que :
P { clear: left }
74
La proprit 'clear: left' s'appliquant aux deux paragraphes, le second est "pouss en dessous" du flottant, la marge
du haut de ce paragraphe va crotre pour accomplir cet effet (voir la proprit 'clear').
9.5.1 Le positionnement des flottants : la proprit 'float'
'float'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie le flottement d'une bote gauche, droite ou pas du tout. On peut l'employer pour des
lments gnrant des botes qui ne sont pas en position absolue. Voici la signification des valeurs que celleci
admet :
left
L'lment gnre une bote de bloc qui flotte gauche. Le contenu s'coule sur son flanc droit en
commenant en haut (en fonction de la valeur de la proprit 'clear'). En ignorant la valeur de la proprit
'display', sauf si cette valeur est 'none' ;
right
Inversement et de la mme faon que pour 'left' ;
none
La bote ne flotte pas.
Voici les rgles prcises qui gouvernent le comportement des flottants :
1. Le bord externe gauche d'une bote flottant gauche ne peut pas se trouver audel du bord gauche de
bloc conteneur. Inversement et de la mme faon pour les botes flottants droite ;
2. Pour une bote donne flottant gauche, celle ci suivant dans la source un lment ayant dj gnr une
autre bote flottant gauche, le bord externe gauche de cette bote doit venir droite du bord externe droit
de la bote prcdente, ou, sinon, son sommet doit venir en dessous du bas de la bote prcdente.
Inversement et de la mme faon pour des botes flottants droite ;
3. Le bord externe droit d'une bote flottant gauche du bord externe gauche d'une bote flottant droite,
cette dernire tant situe sa droite. Inversement et de la mme faon pour une bote flottant droite ;
4. Le sommet externe d'une bote flottante ne peut pas se trouver audessus de celui de son bloc conteneur ;
5. Le sommet externe d'une bote flottante ne peut pas se trouver audessus d'une bote de bloc ou flottante,
gnre par un lment prcdent dans le document source ;
6. Le sommet externe d'une bote flottante ne peut pas se trouver audessus du sommet d'une bote de ligne
qui contient une bote gnre par un lment survenu plus tt dans le document source ;
7. Une bote flottant gauche, ayant une autre bote de mme type sa gauche, ne devrait pas avoir son bord
externe droit audel du bord droit de son bloc conteneur. Plus librement, un flottant gauche ne devrait
pas dpasser le bord droit, moins d'tre dj au maximum gauche). Inversement et de la mme faon
75
Cette proprit indique lesquels cts d'une ou des botes d'un lment ne doivent pas tre adjacents une bote
flottante prcdente. Il peut arriver que l'lment luimme aient des descendants flottants, la proprit 'clear' n'a
alors aucun effet sur eux.
Cette proprit ne peut s'appliquer qu'aux lment de type bloc (dont les flottants). Dans le cas des botes
compactes et en enfilade, la proprit s'applique la bote de bloc finale laquelle cellesci appartiennent.
Voici la signification des valeurs admises par la proprit quand on l'applique aux botes de bloc non flottantes :
left
La marge haute de la bote gnre est augmente juste assez pour que le bord haut de sa bordure se
dplace sous le bord externe bas d'une bote flottant gauche, celleci tant issue d'un lment prcdent
du document source ;
right
Inversement et de la mme faon, la bote, issue d'un lment prcdent dans le document source, flottant
droite ;
both
La bote gnre se dplace sous chacune des botes flottantes qui sont issues d'lments prcdents du
document source ;
none
La bote ne subit aucune contrainte de position visvis des flottants.
Quand on applique cette proprits aux lments flottants, une modification des rgles de leur positionnement
intervient. On ajoute une contrainte supplmentaire (la dixime) :
Le sommet du bord externe de cette bote flottante doit se trouver en dessous de toutes botes prcdentes
qui flottent gauche (pour la valeur 'clear:left'), ou qui flottent droite (pour la valeur 'clear: right'), ou
toutes celles qui flottent (pour la valeur 'clear: both').
76
Ceci pourrait tre ralis avec ce document HTML et ces rgles de style :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Un document avec des cadres en CSS2</TITLE>
<STYLE type="text/css">
BODY { height: 8.5in } /* Ncessaire pour les hauteurs en pourcentage plus bas */
#entete {
position: fixed;
width: 100%;
height: 15%;
top: 0;
right: 0;
bottom: auto;
left: 0;
}
#cote {
position: fixed;
width: 10em;
height: auto;
top: 15%;
right: auto;
bottom: 100px;
left: 0;
}
#corps {
position: fixed;
width: auto;
height: auto;
top: 15%;
right: 0;
bottom: 100px;
left: 10em;
}
#pied {
position: fixed;
width: 100%;
height: 100px;
top: auto;
right: 0;
bottom: 0;
left: 0;
}
</STYLE>
</HEAD>
<BODY>
<DIV id="entete"> ... </DIV>
<DIV id="cote"> ... </DIV>
<DIV id="corps"> ... </DIV>
<DIV id="pied"> ... </DIV>
</BODY>
77
Pour chacun des exemples, les emplacements finaux des botes gnres par les lments Externe et Interne seront
variables. Dans les dessins, les nombres gauche indiquent la position des lignes en flux normal, cellesci tant
agrandies pour plus de clart. Note : les chelles verticales et horizontales diffrent selon les illustrations.
9.8.1 Le flux normal
Considrons les dclarations CSS pour les IDs Externe et Interne, cellesci ne modifiant pas le flux normal des
botes :
#Externe { color: red }
#Interne { color: blue }
L'lment P ne contient que des lments enligne, c..d. du texte anonyme enligne et deux lments SPAN.
Ainsi, tout le contenu est dans un contexte de mise en forme enligne, l'intrieur d'un bloc conteneur tablit par
l'lment P luimme, comme ceci :
78
Le texte suit un cours normal jusqu' l'lment Externe. Celuici s'coule alors pour occuper son volume dans le
flux normal et prend ses marques, l'une tant reprsente par la fin de la ligne 1. Ensuite, l'ensemble, constitu des
botes enligne contenant le texte (qui est rparti sur trois lignes), est dplac de la valeur '12px' (vers le haut).
L'lment Interne, tant un enfant de Externe, devrait normalement voir son contenu poursuivre dans le flux aprs
les mots "contenu d'Externe" (entre la ligne 1 et 2). Cependant, celuici tant luimme plac relativement au
contenu de Externe d'une valeur de '12px' (vers le bas), il va se retrouver sa position de dpart sur la ligne 2.
Noter que le contenu qui suit celui de l'lment Externe n'est pas affect par le positionnement relatif de ce
dernier.
79
Le texte suit le flux normal jusqu' la bote d'Interne, celleci tant hors du flot et flottant vers la marge droite (la
proprit 'width' de la bote est explicite). Les botes de ligne sur la gauche du flottant ont t rduites, le reste du
texte du document se rpartissant entre elles.
Pour illustrer l'effet de la proprit 'clear', ajoutons un lment Interne2au document de dmonstration :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Comparaison entre les schmas de positionnement II</TITLE>
</HEAD>
<BODY>
<P>Dbut du corps du contenu.
<SPAN id=Externe> Dbut du contenu d'Externe.
<SPAN id=Interne> Contenu d'Interne.</SPAN>
<SPAN id=Interne2> Contenu.</SPAN>
Fin du contenu d'Externe.</SPAN>
Fin du corps du contenu.
</P>
</BODY>
</HTML>
la bote d'Interne va flotter droite comme auparavant, le reste du texte du document se rpandant dans l'espace
laiss vacant :
80
Cependant, si la proprit 'clear' de l'lment Interne2 a la valeur 'right' (c..d., la bote gnre de celuici va
refuser de se placer sur la droite de botes flottantes), le contenu d'Interne2 commence son coulement sous le
flottant :
#Interne { float: right; width: 130px; color: blue }
#Interne2 { clear: right; color: red }
81
ce qui positionne le sommet de la bote d'Externe en fonction de son bloc conteneur. Celuici, pour une bote
positionne donne, est tabli par l'anctre positionn de cette bote qui est le plus proche (ou, s'il n'y en a pas, par
le bloc conteneur initial, comme dans l'exemple qui suit). Le haut de la bote d'Externe se trouve '200px' en
dessous du haut du bloc conteneur, et la gauche de sa bote '200px' du ct gauche de celuici. La bote de
l'lment enfant d'Externe suit le flot normal par rapport son parent.
Dans l'exemple suivant, nous avons une bote en position absolue qui est un enfant d'une bote en position relative.
Bien que la bote du parent, Externe, ne soit pas en ralit dplace, le fait de spcifier la valeur 'relative' pour sa
proprit 'position' lui permet d'tre un bloc conteneur pour des descendants positionns. Comme la bote enligne
d'Externe est dcoupe en morceaux rpartis sur plusieurs lignes, les bords du haut et de gauche du premier d'entre
eux (reprsents en tirets pais dans le dessin) servent de rfrences pour les dcalages produits par les proprits
'top' et 'left'.
#Externe {
position: relative;
color: red
}
#Interne {
position: absolute;
top: 200px; left: 100px;
height: 130px; width: 130px;
color: blue;
}
82
Le bloc conteneur d'Interne devient le bloc conteneur initial (dans l'exemple). Voici dans ce cas o se placerait la
bote d'Interne :
On peut employer le positionnement relatif ou absolu pour raliser une marque de changement, comme dans
l'exemple suivant. Ainsi avec ce document :
<P style="position: relative; marginright: 10px; left: 10px;"> J'emploie deux tirets
en rouge comme marque de changement. Ceuxci vont "flotter" gauche de la ligne
83
Premirement, le paragraphe (dont les cts du bloc conteneur sont tracs) suit le flux normal. Ce paragraphe est
ensuite dplac de '10px' partir du bord gauche de celuici (c'est pourquoi on a laiss une marge de '10px' sur la
droite, en prvision du dcalage). Les deux tirets qui marquent le changement sont retirs du flux normal, puis
placs sur la ligne concerne (en raison de 'top: auto'), et '1em' du bord gauche du bloc conteneur (celui tabli
par l'lment P son emplacement final). En rsultat, la marque de changement semble "flotter" gauche de ladite
ligne.
Cet exemple illustre la notion de transparence. Par dfaut, une bote laisse voir celles situes en arrire travers
les zones transparentes de son contenu. Ici, chacune des botes vient recouvrir celles en dessous de faon
transparente. On peut annuler ce comportement en employant l'une des proprits d'arrireplan.
Cette proprit spcifie le sens d'criture principal des blocs et le sens des incorporations et contraintes (voir
'unicodebidi') pour l'algorithme bidirectionnel Unicode. En outre, elle spcifie le sens de mise en forme des
colonnes des tables, le sens du dbordement horizontal et l'emplacement d'une dernire ligne incomplte quand la
proprit 'textalign' a pour valeur 'justify'.
Les valeurs de cette proprit ont la signification suivante :
ltr
Sens de gauche droite [ndt. lefttoright] ;
rtl
Sens de droite gauche [ndt. righttoleft].
La proprit 'unicodebidi' doit avoir les valeurs 'embed' ou 'override' pour que la proprit 'direction' puisse agir
sur les lments de type enligne.
Note : Quand la proprit 'direction' est spcifie pour les lments des colonnes d'une table, celleci n'est pas
hrite par les cellules des colonnes, les colonnes n'apparaissant pas dans l'arborescence du document. Ainsi, on
ne peut pas adresser facilement les rgles d'hritage de l'attribut "dir", telles que dcrites dans la spcification
[HTML40], chapitre 11.3.2.1.
'unicodebidi'
Valeur :
Initiale :
S'applique :
Inherited:
Pourcentage :
Mdias :
S'agissant d'un document XML, c'est la feuille de style qui indique le sens d'criture. Voici celleci :
/* Rgles bidi */
HEBREW, HEQUO {direction: rtl; unicodebidi: embed}
ANGLAIS
{direction: ltr; unicodebidi: embed}
/* Rgles de prsentation */
HEBREW, ANGLAIS, PAR {display: block}
EMPH
{fontweight: bold}
L'lment HEBREU forme un bloc avec un sens de lecture de droite gauche, l'lment ANGLAIS un bloc avec
un sens de lecture de gauche droite. Les lments PAR sont des blocs qui hritent du sens de lecture de leurs
parents, Ainsi, les deux premiers sont lus en commenant en haut droite, et les trois derniers en commenant en
haut gauche. Noter que les noms des lments HEBREU et ANGLAIS ont t choisis exprs pour la
dmonstration ; en gnral, ceuxci devraient l'tre pour reflter la structure du document, sans rfrence la
langue employe.
L'lment EMPH, de type enligne, dont la proprit 'unicodebidi' a la valeur 'normal' (la valeur par dfaut),
celuici n'a pas d'effet sur l'ordonnancement du texte. Par contre, l'lment HEQUO cre une incorporation.
87
HBREU18 devant tre lu avant anglais 19, il se trouve dans la ligne audessus d'anglais19. Un simple
dcoupage de la longue ligne de la mise en forme prcdente n'aurait pas t correct. Noter aussi que la premire
syllabe de anglais19 aurait pu tenir sur la ligne d'avant, bien que, pour les mots lus de gauche droite dans un
contexte de lecture de droite gauche, et vice versa, leurs csures soient gnralement supprimes pour viter
l'affichage d'un tiret en plein milieu d'une ligne.
88
son bloc conteneur n'est plus "body" ; c'est "div1" qui est devenu le bloc conteneur initial (car il n'y a pas de botes
d'autres anctres positionns).
89
Cette proprit spcifie la largeur du contenu des botes gnres par les lments de type bloc et ceux remplacs.
Celleci ne s'applique pas aux lments non remplacs et de type enligne. Les largeurs de leurs botes
correspondent celles de leur contenus reprsents avant un dcalage relatif de leurs enfants. Les botes enligne
se rpandent dans des botes de ligne. Les largeurs des botes de ligne sont donnes par leur bloc conteneur, et
cellesci pouvant retrcir du fait de la prsence de flottants.
La bote d'un lment remplac a une largeur intrinsque l'agent utilisateur pouvant la faire varier en chelle
quand la valeur de la proprit est diffrente de 'auto'.
Les valeurs ont les significations suivantes :
<longueur>
Spcifie une largeur fixe ;
<pourcentage>
Spcifie une largeur en pourcentage. Le pourcentage est calcul en fonction de la largeur du bloc
conteneur de la bote gnre ;
auto
La largeur dpend de celles d'autres proprits. Voir plus loin.
La proprit 'width' n'admet pas de valeurs ngatives.
Exemple(s) :
Par exemple, cette rgle la largeur du contenu des paragraphes 100 pixels :
P { width: 100px }
'maxwidth'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Ces proprits permettent aux auteurs de restreindre les dimensions d'une bote dans certaines proportions. Les
significations des valeurs sont :
<longueur>
Spcifie une largeur calcule minimale ou maximale fixe ;
<pourcentage>
Spcifie un pourcentage pour dterminer la valeur calcule. Celuici est obtenu en fonction de la largeur
du bloc conteneur ;
none
Aucune limite sur la largeur de la bote (seulement pour 'maxwidth').
L'algorithme suivant dcrit l'action de ces deux proprits pour obtenir la valeur calcule de la proprit 'width' :
1. La largeur est calcule, sans l'intervention des proprits 'minwidth' et et 'maxwidth'), selon les rgles
dfinies plus haut dans "Le calcul des largeurs et des marges" ;
2. Si la valeur calcule de 'minwidth' est suprieure celle de 'maxwidth', la proprit 'maxwidth' prend
la valeur de 'minwidth' ;
3. Si la largeur calcule est suprieure la valeur de 'maxwidth', les rgles de calcul des largeurs et marges
sont rappliques, en utilisant cette fois la valeur de 'maxwidth' comme valeur spcifie pour la proprit
'width' ;
4. Si la largeur calcule est infrieure la valeur de 'minwidth', les mmes rgles sont rappliques, en
utilisant cette foisci la valeur de 'minwidth' comme valeur spcifie pour la proprit 'width'.
L'agent utilisateur peut dfinir une valeur minimum non ngative pour la proprit 'minwidth', celleci pouvant
varier d'un lment l'autre et pouvant mme dpendre d'autres proprits. Si la valeur de 'minwidth' descend en
dessous de cette limite, celleci tant spcifie explicitement ou ayant la valeur 'auto' et les rgles cidessous la
rendant ainsi trop petite, alors l'agent utilisateur peut considrer cette valeur limite comme tant la valeur calcule.
auto
tous les lments, sauf ceux de type enligne non remplacs, et les colonnes et groupes de
colonnes des tables
non
voir plus loin
visuel
Cette proprit spcifie la hauteur du contenu des botes gnres par les lments de type bloc et ceux remplacs.
Celleci ne s'applique pas au lments de type enligne non remplacs. C'est la valeur (pouvant tre hrite) de
leur proprit 'lineheight' qui donne la hauteur des botes de ceuxci.
Les significations des valeurs sont :
<longueur>
Spcifie une hauteur fixe ;
<pourcentage>
Spcifie une hauteur en pourcentage. Celuici est calcul en fonction du bloc conteneur de la bote
gnre. Si la hauteur du bloc conteneur n'est pas spcifie explicitement (c..d., celleci dpendant de la
hauteur du contenu), sa valeur est considre comme tant 'auto' ;
auto
La hauteur dpend des valeurs des autres proprits. Voir les explications plus loin.
La proprit 'height' n'admet pas de valeur ngative.
Exemple(s) :
Par exemple, cette rgle fixe la hauteur des paragraphes 100 pixels :
P { height: 100px }
Les paragraphes qui requirent une hauteur suprieure 100px vont dborder selon la proprit 'overflow'.
94
'maxheight'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Ces deux proprits permettent aux auteurs de restreindre les hauteurs des botes dans certaines proportions. Les
significations des valeurs sont :
<longueur>
Spcifie une hauteur calcule minimale ou maximale fixe ;
<pourcentage>
Spcifie un pourcentage pour dterminer la valeur calcule. Celuici est obtenu en fonction de la hauteur
du bloc conteneur. Si la hauteur du bloc conteneur n'est pas spcifie explicitement (c..d. celleci
dpendant de la hauteur du contenu), sa valeur est considre comme tant 'auto' ;
none
Aucune limite sur la hauteur de la bote (seulement pour 'maxheight').
L'algorithme suivant dcrit l'action de ces deux proprits pour obtenir la valeur calcule de la proprit 'height' :
1. La hauteur est calcule, sans l'intervention des proprits ('minheight' et 'maxheight'), selon les rgles
dfinies plus haut dans "Le calcul des hauteurs et des marges" ;
2. Si la valeur calcule de 'minheight' est suprieure celle de 'maxheight', la proprit 'maxheight'
prend la valeur de 'minheight' ;
3. Si la hauteur calcule est suprieure la valeur de 'maxheight', les rgles de calcul des hauteurs et
marges sont rappliques, en utilisant cette fois la valeur de 'maxheight' comme valeur spcifie pour la
proprit 'height' ;
4. Si la hauteur calcule est infrieure la valeur de 'minheight', les mmes rgles sont rappliques, en
utilisant cette foisci la valeur de 'minheight' comme valeur spcifie pour la proprit 'height'.
Quand on applique cette proprit un lment de type bloc dont le contenu est compos d'lments de type
enligne, celleci spcifie la hauteur minimale de chacune des botes enligne gnres. Cette hauteur minimale
se dcompoe en une hauteur minimale audessus de la ligne de base de l'lment de type bloc et en une
profondeur minimale audessous de celuici, exactement comme si chacune des botes de ligne commenait par
une bote enligne de largeur nulle, celleci ayant les valeurs des proprits de police et de hauteur de ligne de
l'lment de type bloc (ce que TEX appelle un "tai").
Quand on l'applique un lment de type enligne, celleci spcifie la hauteur exacte de chacune des botes
gnres par l'lment. Sauf dans le cas des lments de type enligne remplacs, o la hauteur de la bote est
donne par la proprit 'height'.
Les significations des valeurs pour cette proprit sont :
normal
Indique aux agents utilisateurs une valeur calcule "raisonnable", base sur la taille de la police de
l'lment. Cette valeur revt la mme signification que <number>. On recommande pour 'normal' une
valeur calcule entre 1.0 et 1.2 ;
<longueur>
97
/* nombre */
/* longueur */
/* pourcentage */
Quand un lment contient du texte dont l'affichage requiert plusieurs polices, les agents utilisateurs devraient en
dterminer la valeur pour la proprit 'lineheight' en fonction de celle qui a la plus grande taille.
Gnralement, quand la proprit 'lineheight' a une seule valeur pour toutes les botes enligne d'un paragraphe
(sans images trop hautes), la recommandation prcdente devrait faire que les lignes de base des lignes
successives soient indpendantes de la hauteur de ligne. Ceci est important quand on doit aligner des colonnes de
texte dans diffrentes polices, par exemple dans une table.
Noter que les lments remplacs ont une proprit 'fontsize' et une proprit 'lineheight', mme si on ne les
utilise pas directement dans la dtermination de la hauteur de la bote : les valeurs exprimes en 'em' et en 'ex' sont
relatives celle de la proprit 'fontsize', et les valeurs en pourcentage de la proprit 'verticalalign', relatives
celle de la proprit 'lineheight'.
'verticalalign'
Valeur :
Initiale :
S'applique
:
Hrite :
Pourcentage
:
Mdias :
Cette proprit agit sur le positionnement vertical l'intrieur de la bote de ligne des botes gnres par un
lment de type enligne. Les rgles suivantes n'ont de sens que par rapport un lment parent de type enligne,
ou de type bloc si celuici gnre des botes enligne anonymes ; elles sont inoprantes autrement.
Note : la signification des valeurs pour cette proprit est lgrement diffrente dans le contexte des tables.
Consulter le chapitre traitant des algorithmes pour la hauteur des tables pour le dtail.
baseline
Aligne la ligne de base d'une bote avec celle de son parent. Si la bote en est dpourvue, aligner le bas de
celleci avec la ligne de base de son parent ;
middle
Aligne le milieu vertical de la bote avec la ligne de base de la bote de son parent, ce milieu tant
augment de la moiti de la valeur de la proprit 'xheight' du parent ;
sub
Abaisse la ligne de base de la bote la position approprie pour une criture en indice dans la bote du
parent. Cette valeur n'a pas d'effet sur la taille de la police de texte de l'lment ;
super
lve la ligne de base de la bote la position approprie pour une criture en exposant dans la bote du
parent. Cette valeur n'a pas d'effet sur la taille de la police de texte de l'lment ;
texttop
Aligne le haut de la bote avec le haut du texte de l'lment parent ;
textbottom
Aligne le bas de la bote avec le bas du texte de l'lment parent ;
<pourcentage>
98
99
Cette proprit spcifie si le contenu d'un lment de type bloc doit tre rogn quand celuici dborde de la bote
de cet lment (qui se comporte comme un bloc conteneur). Les significations des valeurs sont :
visible
Le contenu ne sera pas rogn, et celuici peut tre reprsent hors de la bote du bloc ;
hidden
Le contenu sera rogn et aucun mcanisme de dfilement ne devrait tre fourni pour voir la partie qui aura
t rogne. On spcifie la taille et la forme du reliquat du rognage avec la proprit 'clip' ;
scroll
Le contenu sera rogn et, si disponible, l'agent utilisateur fournit un mcanisme de dfilement visible
l'cran (tel qu'une barre de dfilement ou un dispositif panoramique), celuici devrait apparatre pour une
bote donne, que le contenu de celleci soit rogn ou non. Ceci pour viter l'inconvnient que
reprsenterait des barres de dfinalement apparaissant et disparaissant dans un environnement dynamique.
Quand cette valeur est spcifie conjointement avec un type de mdia 'print, la partie du contenu ayant
dborde devrait aussi tre imprime ;
auto
L'interprtation de cette valeur dpend de l'agent utilisateur, cependant, celuici devrait fournir un
mcanisme de dfilement quand les botes dbordent.
Mme quand la valeur de la proprit 'overflow' est 'visible', il peut arriver que le contenu soit rogn par le
systme d'exploitation, pour tenir dans la fentre du document de l'agent utilisateur.
Exemple(s) :
Considrons le bloc de citation suivant (BLOCKQUOTE), trop grand pour tenir dans son bloc conteneur (tabli
par un lment DIV). En voici le document source :
<DIV>
<BLOCKQUOTE>
<P>Je n'aimais pas la pice, et puis, je la vis
dans des conditions adverses le rideau tait lev.
<DIV class="attributedto"> Groucho Marx</DIV>
</BLOCKQUOTE>
100
Et ici, la feuille de style rgissant les tailles et le style des botes gnres :
DIV { width : 100px; height: 100px;
border: thin solid red;
}
BLOCKQUOTE
{ width : 125px; height : 100px;
margintop: 50px; marginleft: 50px;
border: thin dashed black
}
DIV.attributedto { textalign : right; border: none; }
La proprit 'overflow' ayant la valeur initiale 'visible', l'lment BLOCKQUOTE ne sera pas rogn lors de sa
mise en forme, donnant quelque chose comme ceci :
Si, par ailleurs, on donne la valeur 'hidden' la proprit 'overflow' de l'lment DIV, l'lment BLOCKQUOTE
sera rogn par le bloc conteneur, ainsi :
La valeur 'scroll' aurait signifi, ceux des agents utilisateurs l'implmentant, de faire apparatre un mcanisme de
dfilement pour que les utilisateurs puissent accder au contenu de la partie ayant t rogne.
11.1.2 Le rognage : la proprit 'clip'
Une zone de rognage dfinit la partie du contenu rendu d'un lment qui est visible. Par dfaut, la zone de
rognage a la mme taille et forme que la bote, ou les botes, de l'lment. Cependant, celleci peut tre modifie
l'aide de la proprit 'clip'.
'clip'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
La proprit 'clip' s'applique aux lments dont la valeur de la proprit 'overflow' est autre que 'visible'. Les
significations des valeurs sont :
auto
La zone de rognage a la mme taille et emplacement que la bote, ou les botes, de l'lment ;
<forme>
En CSS2, la seule valeur admise pour <forme> est : rect (<haut>, <droite>, <bas>, <gauche>) o <haut>,
<droite>, <bas> et <gauche> reprsentent les dcalages par rapport aux cts respectifs de la bote.
101
cellesci vont crer les zones de rognage rectangulaires, matrialises par les lignes en pointills dans leurs
illustrations respectives suivantes :
Note En CSS2, toutes les zones de rognage sont rectangulaires. Il faut s'attendre ce que les volutions
ultrieures autorisent des formes qui ne soient pas rectangulaires.
oui
sans objet
visuel
La proprit 'visibility' spcifie le rendu, ou non, des botes gnres par un lment donn. Ces botes, bien
qu'invisibles, influencent toujours la mise en forme du document (utiliser la proprit 'display' avec la valeur
'none' pour prohiber la gnration d'une bote, et ainsi toutes influences sur la mise en forme). Les valeurs ont les
significations suivantes :
visible
La bote gnre est visible ;
hidden
La bote gnre est invisible (entirement transparente), mais celleci influenant toujours la mise en
forme ;
collapse
Consulter le passage traitant des effets dynamiques sur les ranges et colonnes des tables. Quand on
l'utilise avec autre chose, cette valeur 'collapse' correspond 'hidden'.
On peut employer cette proprit conjointement avec des scripts pour crer des effets dynamiques.
Dans l'exemple suivant, quand on presse l'un ou l'autre bouton du formulaire, un script actionn par un utilisateur
provoque l'apparition de la bote qui lui correspond et, en mme temps, la disparition de l'autre. Ces botes
conservant leur taille et leur emplacement, l'effet produit le remplacement de l'une par l'autre (le script, crit dans
un langage hypothtique, pouvant, ou non, produire un effet avec un agent utilisateur conforme).
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<STYLE type="text/css">
<!
#conteneur1 { position: absolute;
top: 2in; left: 2in; width: 2in }
#conteneur2 { position: absolute;
top: 2in; left: 2in; width: 2in;
visibility: hidden; }
>
</STYLE>
</HEAD>
<BODY>
<P>Choose a suspect:</P>
<DIV id="conteneur1">
<IMG alt="Al Capone"
width="100" height="100"
src="suspect1.jpg">
<P>Nom : Al Capone</P>
<P>Rsidence : Chicago</P>
</DIV>
<DIV id="conteneur2">
<IMG alt="Lucky Luciano"
width="100" height="100"
src="suspect2.jpg">
<P>Nom : Lucky Luciano</P>
<P>Rsidence : New York</P>
</DIV>
<FORM method="post"
action="http://www.suspect.org/processbums">
<P>
<INPUT name="Capone" type="button"
value="Capone"
onclick='show("conteneur1");hide("conteneur2")'>
<INPUT name="Luciano" type="button"
value="Luciano"
onclick='show("conteneur2");hide("conteneur1")'>
</FORM>
</BODY>
</HTML>
103
Les objets de mise en forme (ex. les botes) gnrs par un lment comprennent galement le contenu gnr.
Ainsi, en changeant la feuille de style prcdente pour :
P.note:before { content: "Note : " }
P.note
{ border: solid green }
ceci produirait une bordure verte en trait plein autour du paragraphe, y compris la chane rajoute.
Les pseudolments :before et :after hritent de chacune des proprits, celles qui sont transmissibles, de
l'lment de l'arborescence du document auquel ceuxci se rattachent.
Exemple(s) :
Par exemple, les rgles suivantes insrent un guillemet ouvrant avant chacun des lments Q. Ce guillemet aura
une couleur rouge et sa police sera la mme que celle employe ailleurs dans ces lments :
Q:before {
content: openquote;
color: red
}
Dans les dclarations avec les pseudolments :before ou :after, les proprits non hrites prennent leur valeur
initiale.
Exemple(s) :
Ainsi, dans l'exemple prcdent, la valeur initiale de la proprit 'display' tant 'inline', le guillemet s'inscrit dans
une bote enligne (c..d. celleci se trouve sur la mme ligne que le texte initial de lment). Dans celui qui suit,
la proprit 'display' a la valeur explicite 'block', le texte en insertion s'inscrit dans une bote de bloc :
104
Noter qu'un agent utilisateur auditif synthtiserait le mot "Fin" aprs avoir rendu tout le contenu de l'lment
BODY.
Les agents utilisateurs doivent ignorer les proprits suivantes avec les pseudolments :before et :after : les
proprits 'position', 'float', celles des listes et celles des tables.
Les pseudolments :before et :after admettent certaines valeurs en conjonction avec la proprit 'display' :
Si le sujet du slecteur est un lment de type bloc, les valeurs admises sont 'none', 'inline', 'block' et
'marker'. Pour toute autre valeur de la proprit 'display', le pseudolment se comporte comme si la
valeur tait 'block' ;
Si le sujet du slecteur est un lment de type enligne, les valeurs admises sont 'none' et 'inline'. Pour
toute autre valeur de la proprit 'display', le pseudolment se comporte comme si la valeur tait 'inline'.
Note : D'autres valeurs pourraient tre admises dans les versions ultrieures de CSS.
Cette proprit est utilise en conjonction avec les pseudolments :before et :after pour gnrer un contenu dans
un document. Ces pseudolments admettent les valeurs suivantes pour la proprit 'display' :
Si le sujet du slecteur est un lment de type bloc, les valeurs admises sont 'none', 'inline', 'block' et
'marker'. Pour toute autre valeur de la proprit 'display', le pseudolment se comporte comme si la
valeur tait 'block' ;
Si le sujet du slecteur est un lment de type enligne, les valeurs admises sont 'none' et 'inline'. Pour
toute autre valeur de la proprit 'display', le pseudolment se comporte comme si la valeur tait 'inline'.
Les significations des valeurs sont :
<chane>
Un contenu de texte (voir le chapitre sur les chanes) ;
<uri>
La valeur est un URI qui pointe sur une ressource externe. Si un agent utilisateur ne reconnat pas cette
ressource, cette dernire ne correspondant pas aux types de mdia que celuici reconnat, alors il doit
l'ignorer. Note : CSS2 ne propose pas de mcanismes pour modifier la taille de l'objet dsign, ou pour en
fournir une description textuelle, comme les attributs "alt" ou "longdesc" pour les images en HTML. Ceci
pourrait changer dans les versions ultrieures de CSS.
<compteur>
On peut spcifier des compteurs l'aide de deux fonctions : 'counters()' ou 'counter()'. La premire peut se
prsenter sous deux formes : 'counters(nom)' ou 'counters(nom, style)'. Le texte gnr correspond la
valeur du compteur nomm cet endroit de la structure de mise en forme, et son style, celui indiqu (par
dfaut, c'est 'decimal'). La deuxime prend aussi deux formes : 'counter(nom, chane)' ou 'counter(nom,
chane, style)'. Le texte gnr correspond la valeur de tous les compteurs, qui ont ce nom dans la
structure de mise en forme. Les compteurs prennent le style indiqu (par dfaut, 'decimal'). Voir le
passage traitant des compteurs et du numrotage automatiques pour plus d'informations ;
openquote et closequote
Ces valeurs sont remplaces par les chanes appropries, cellesci tant indiques par la proprit 'quotes'
;
105
Exemple(s) :
La rgle suivante insre le texte de l'attribut HTML "alt" avant l'image. Si l'image n'est pas affiche, le lecteur
verra quand mme ce texte :
IMG:before { content: attr(alt) }
Les auteurs peuvent produire des retours la ligne dans le contenu gnr en crivant la squence d'chappement
"\A" dans l'une des chanes aprs la proprit 'content'. Ceci insre un retour la ligne forc, semblable
l'lment BR en HTML. Voir les chapitres "Les chanes" et "Les caractres et la casse" pour informations.
Exemple(s) :
H1:before {
display: block;
textalign: center;
content: "chapter\A hoofdstuk\A chapitre"
}
Le contenu gnr n'altre pas l'arborescence du document. Et, en particulier, celuici n'est pas rintroduit dans le
processeur du langage du document (par exemple pour y tre reinterprt).
Note : Dans des versions ultrieures, la proprit 'content' pourrait accepter d'autres valeurs, qui lui permettrait
de modifier le style de certaines parties du contenu gnr, en CSS2, l'ensemble du contenu des pseudolments
:before et :after recevant le mme style.
12.3 L'interaction de :before et :after avec les lments ayant les valeurs
'compact' et 'runin'
Les cas suivants peuvent survenir :
1. Un lment 'runin' ou 'compact' a un pseudolment :before de type enligne : le pseudolment
est pris en compte au moment o la taille de la bote de l'lment est calcule (pour 'compact'), puis est
rendu dans la mme bote de bloc que l'lment ;
2. Un lment 'runin' ou 'compact' a un pseudolment :after de type enligne : mme chose que pour
le point prcdent ;
3. Un lment 'runin' ou 'compact' a un pseudolment :before de type bloc : le pseudolment est
mis en forme en tant que bloc audessus de l'lment et n'est pas considr lors du calcul de la taille de
l'lment (pour 'compact') ;
4. Un lment 'runin' ou 'compact' a un pseudolment :after de type bloc : l'lment et son
pseudolment :after sont tous deux mis en forme en tant que botes de bloc. L'lment n'est pas format
comme une bote enligne l'intrieur de son propre pseudolment :after ;
106
Cette proprit spcifie des guillemets, quel que soit le nombre de citations imbriques. Les significations des
valeurs sont :
none
Les valeurs 'openquote' et 'closequote' de la proprit 'content' ne produisent pas de guillemets ;
[<chane> <chane>]+
Les valeurs 'openquote' et 'closequote' de la proprit 'content' sont tires de cette liste de paires de
guillemets (ouvrants et fermants). La premire paire (celle la plus gauche) correspond au niveau de
citation le plus extrieur, la deuxime paire, le premier niveau d'imbrication, etc. L'agent utilisateur doit
appliquer la paire de guillemets approprie en fonction du niveau d'imbrication.
Exemple(s) :
Par exemple, la feuille de style suivante :
/* Spcifie des paires de guillemets sur deux niveaux et pour deux langues */
Q:lang(en) { quotes: '"' '"' "'" "'" }
Q:lang(no) { quotes: "" "" "<" ">" }
/* Ins des guillemets avant et aprs le contenu d'un lment Q */
Q:before { content: openquote }
Q:after { content: closequote }
107
Note : Dans l'exemple prcdent, bien que les guillemets dsigns par la proprit 'quotes' se trouvent facilement
sur un clavier, une typographie de meilleure qualit demanderait des caractres supplmentaires. Le tableau
informatif ciaprs donne une liste de quelques marques de citation issus de ISO 10646 :
Aspect approximatif
"
'
<
>
Description
00AB
[guillemet franais ouvrant]
MARQUE DE CITATION CHEVRON DOUBLE DROIT
00BB
[guillement franais fermant]
GUILLEMET SIMPLE GAUCHE HAUT [guillemet anglais
2018
ouvrant simple, ou apostrophe typographique]
GUILLEMET SIMPLE DROIT HAUT [guillemet anglais fermant
2019
simple]
GUILLEMET DOUBLE GAUCHE HAUT [guillemet anglais
201C
ouvrant double]
GUILLEMET DOUBLE DROIT HAUT [guillemet anglais
201D
fermant double]
201E
GUILLEMET DOUBLE BAS [guillemet double bas]
12.4.2 Insrer des guillemets avec la proprit 'content'
Les valeurs 'openquote' et 'closequote' de la proprit 'content' insrent les guillemets aux endroits appropris
du document. L'une des chanes issues des valeurs de la proprit 'quotes' se substituent chaque survenue de
'openquote', ou ' closequote', selon le niveau d'imbrication.
La valeur 'openquote' se rapporte au premier guillemet d'une paire donne, celle de 'closequote' au second
guillemet. L'utilisation de telle ou telle paire de guillemet dpend de la profondeur d'imbrication de la citation : le
nombre d'apparitions de 'openquote' dans tout le texte gnr avant la citation en question, moins le nombre
d'apparitions de 'closequote'. Pour une profondeur gale 0, la premire paire est retenue, pour une profondeur
108
Ceci s'appuyant sur le fait que le dernier paragraphe a la classe "dernier", car il n'existe pas de slecteurs qui
puissent correspondre au dernier enfant d'un lment.
De faon symtrique, le motcl 'noopenquote', qui ne fait pas apparatre de guillemet ouvrant, incrmente la
profondeur de citation d'une unit.
Note : Quand une citation est dans une langue diffrente de celle du texte qui la contient, on utilise habituellement
les marques de citation de la langue de ce texte, et non pas celles de la citation en question.
Exemple(s) :
Par exemple, une citation en franais dans un texte en anglais :
The device of the order of the garter is Honni soit qui mal y pense. [la devise de l'ordre de la
Jarretire].
et ici, une citation en anglais dans un texte en franais :
Il disait : Il faut faire dfiler la bande en fast forward.
Cette feuille de styleci va spcifier les valeurs de la proprit 'quotes' de manire ce que les guillemets ouvrants
et fermants fonctionnent correctement pour tous les lments. Les rgles s'appliquent aux documents de langue
anglaise, franaise, ou bien ceux dans les deux langues. On associe une rgle chaque langue supplmentaire.
Noter l'emploi de la conjonction (">"), concernant les enfants de l'lment, pour faire correspondre les guillemets
la langue contextuelle :
[LANG|=fr] > *
[LANG|=en] > *
On a tap ici les caractres reprsentant les marques de citation anglaises dans une forme que la plupart des gens
peuvent utiliser. Quand on peut les taper directement, il apparassent ainsi :
[LANG|=fr] > * { quotes: "" "" "" "" }
[LANG|=en] > * { quotes: "" "" "" "" }
non
sans objet
tous
[ <identifiant> <entier>? ]+ | none | inherit
none
tous les lments
non
sans objet
tous
La proprit 'counterincrement' accepte un ou plusieurs noms de compteurs (des identifiants), chacun d'eux tant
suivi d'un entier facultatif. Cet entier indique la valeur de l'incrmentation du compteur chaque fois que survient
l'lment. L'incrmentation par dfaut est d'une unit. Les entiers nuls ou ngatifs sont admis.
La proprit 'counterreset' contient aussi une liste de noms de compteurs, un ou plusieurs, chacun d'eux tant
suivi d'un entier facultatif. Cet entier indique la valeur que prend un compteur chaque fois que survient
l'lment. Par dfaut, celuici a une valeur nulle.
Quand la proprit 'counterincrement' se rfre un compteur qui est hors de porte (voir plus loin) de la
proprit 'counterreset', le compteur est considr avoir t mis zro par l'lment racine.
Exemple(s) :
Voici une manire de numroter des chapitres et leurs sections, tel que "Chapitre 1", "1.1", "1.2", etc. :
H1:before {
content: "Chapitre " counter(chapitre) ". ";
counterincrement: chapitre; /* Ajoute 1 au chapitre */
counterreset: section;
/* Remet la section zro */
}
H2:before {
content: counter(chapitre) "." counter(section) " ";
counterincrement: section;
}
Quand un lment incrmente, ou remet zro, un compteur, et dans le mme temps, l'utilise (au travers de la
proprit 'content' du pseudolment :before ou :after qui lui est attach), le compteur n'est utilis qu'aprs avoir
t incrment, ou remis zro.
Quand un lment, la fois, remet zro et incrmente un compteur, la remise zro intervient avant
l'incrmentation.
La proprit 'counterreset' suit les rgles de cascade, ainsi la feuille de style :
H1 { counterreset: section 1 }
H1 { counterreset: imagenum 99 }
celleci va seulement remettre zro le compteur 'imagenum'. Pour que les deux compteurs le soient, il faut les
runir :
H1 { counterreset: section 1 imagenum 99 }
110
L'autoimbrication se base sur le principe que chaque lment, ayant une proprit 'counterreset' pour un
compteur X, cre un nouveau compteur X, dont la porte va s'tendre l'lment en question, aux descendants de
celuici, et ceux des lments prcdents de mme parent et leurs descendants.
Dans l'exemple prcdent, un lment OL va crer un compteur et tous les enfants de cet lment vont se rfrer
ce dernier.
Si on note par item[n] la neme instance du compteur "item", par "(" et ")" le dbut et la fin d'une porte, l'extrait
HTML suivant utilisant ce compteur (et la feuille de style prcdente associe celuici :
<OL>
<LI>item
<LI>item
<OL>
<LI>item
<LI>item
<LI>item
<OL>
<LI>item
</OL>
<OL>
<LI>
</OL>
<LI>item
</OL>
<LI>item
<LI>item
</OL>
<OL>
<LI>item
<LI>item
</OL>
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
<!
(met item[0] 0
>
incrmente item[0] (= 1)
>
incrmente item[0] (= 2)
>
(met item[1] 0
>
incrmente item[1] (= 1) >
incrmente item[1] (= 2) >
incrmente item[1] (= 3) >
(met item[2] 0
>
incrmente item[2] (= 1) >
)
>
(met item[3] 0
>
incrmente item[3] (= 1) >
)
>
incrmente item[1] (= 4) >
)
>
incrmente item[0] (= 3)
>
incrmente item[0] (= 4)
>
)
>
(remet item[4] 0
>
incrmente item[4] (= 1)
>
incrmente item[4] (= 2)
>
)
>
La fonction 'counters()' gnre une chane compose des valeurs de tous les compteurs de mme nom, cellesci
spares par une chane donne.
Exemple(s) :
Cette feuille de style numrote les articles d'une liste imbrique, tel que "1", "1.1", "1.1.1", etc. :
OL { counterreset: item }
LI { display: block }
LI:before { content: counters(item, "."); counterincrement: item }
Tous les styles sont admis, y compris 'disc', 'circle', 'square' et 'none'.
Exemple(s) :
H1:before
H2:before
BLOCKQUOTE:after
DIV.note:before
P:before
{
{
{
{
{
content:
content:
content:
content:
content:
111
Par contre, les lments dont la valeur de la proprit 'visibility' est 'hidden', incrmentent les compteurs.
Avec des slecteurs descendants et des slecteurs d'enfants, il est possible de spcifier divers types de marqueurs en
fonction de la profondeur de listes imbriques.
12.6.1 Les marqueurs : la proprit 'markeroffset'
On cre un marqueur en spcifiant la valeur 'marker' la proprit 'display' dans un pseudolment :before ou
:after. Alors que les contenus de ces pseudolments, ayant les valeurs 'block' et 'inline', font partie de la bote
principale gnre par l'lment, un contenu avec la valeur 'marker' est mis en forme dans une bote indpendante,
en dehors de la bote principale. Les botes des marqueurs s'inscrivent dans une seule ligne (c..d. dans une bote
de ligne), cellesci ne sont pas aussi souples d'emploi que les flottants. Une bote de marqueur n'est cre que si la
proprit 'content' du pseudolment gnre effectivement un contenu.
112
Voici l'item
numro 1.
113
Voici l'item
numro 2.
Voici l'item
numro 3.
Cet exempleci cre des marqueurs avant et aprs les items d'une liste :
Soit le document :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Des marqueurs avant et aprs les items d'une liste</TITLE>
<STYLE type="text/css">
@media screen, print {
LI:before {
display: marker;
content: url("smiley.gif");
LI:after {
display: marker;
content: url("sad.gif");
}
}
</STYLE>
</HEAD>
<BODY>
<UL>
<LI>le premier item vient d'abord
<LI>le second item vient ensuite
</UL>
</BODY>
</HTML>
celuici pourrait tre rendu ainsi (on utilise une reprsentation en caractres ASCII la place des images) :
:) le premier item
vient d'abord
:) le second item
vient ensuite
:(
:(
L'exemple suivant utilise des marqueurs pour numroter des notes (de paragraphes).
Soit le document :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Des marqueurs pour numroter des notes</TITLE>
<STYLE type="text/css">
P { marginleft: 12 em; }
@media screen, print {
P.Note:before
{
display: marker;
content: url("note.gif")
"Note " counter(compteurdenote) " :";
counterincrement: compteurdenote;
textalign: left;
width: 10em;
}
}
</STYLE>
</HEAD>
<BODY>
<P>Voici le premier paragraphe de ce document.</P>
<P CLASS="Note">Maintenant, un paragraphe trs court.</P>
<P>Et le paragraphe final.</P>
</BODY>
</HTML>
114
Maintenant, un paragraphe
'markeroffset'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie la distance entre les bords des bordures les plus proche d'une bote de marqueur et la bote
principale qui lui est associe. Ce dcalage peut tre dfinie par l'utilisateur (<longueur>) ou bien par l'agent
utilisateur (pour une valeur 'auto'). Les valeurs peuvent tre ngatives, mais leur interprtation peut dpendre de
l'implmentation.
L'exemple suivant montre comment utiliser les marqueurs pour ajouter un point aprs chaque item numrot d'une
liste. Soit ce document HTML et sa feuille de style :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Exemple 5 avec les marqueurs</TITLE>
<STYLE type="text/css">
P { marginleft: 8em } /* Fait de la place pour les compteurs */
LI:before {
display: marker;
markeroffset: 3em;
content: counter(compteur, lowerroman) ".";
counterincrement: compteur;
}
</STYLE>
</HEAD>
<BODY>
<P> Voici le long paragraphe qui prcde...
<OL>
<LI> Le premier item.
<LI> Le deuxime item.
<LI> Le troisime item.
</OL>
<P> Et le long paragraphe qui suit...
</BODY>
</HTML>
Le premier item.
Le deuxime item.
Le troisime item.
Et le long paragraphe
qui suit...
115
Noter que l'alignement des marqueurs de liste (ici, en justification droite) dpend de l'agent utilisateur.
Note : Les versions ultrieures de CSS pourraient apporter d'autres styles de numrotation.
'liststyleimage'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit dsigne l'image qui sera employe comme marqueur d'item de liste. Quand l'image est disponible,
elle remplace le marqueur produit par la proprit 'liststyletype'.
Exemple(s) :
Cet exemple place l'image "ellipse.png" comme marqueur au dbut de chacun des items de liste :
UL { liststyleimage: url("http://png.com/ellipse.png") }
'liststyleposition'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie l'emplacement de la bote de marqueur dans la bote de bloc principale. Les significations
des valeurs sont :
outside
La bote de marqueur est place en dehors de la bote de bloc principale. Note : CSS1 ne donnait pas
l'emplacement exact de la bote de marqueur, cette ambigut reste en CSS2 pour des raisons de
compatibilit. Pour un contrle plus fin de la position des botes des marqueurs, utiliser 'marker' ;
inside
117
Dans un texte lu de droite gauche, les marqueurs auraient t places au ct droit de la bote.
'liststyle'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
La proprit raccourcie 'liststyle' sert runir les trois proprits 'liststyletype', 'liststyleimage' et
'liststyleposition' dans la feuille de style.
Exemple(s) :
Bien qu'on puisse spcifier directement l'information de 'liststyle' aux lments d'item de liste (ex. l'lment LI
en HTML), ceci requiert un soin particulier. Les deux rgles suivantes semblent identiques, cependant la premire
comporte un slecteur descendant et la seconde, un slecteur d'enfant (plus spcifique) :
OL.alpha LI
{ liststyle: loweralpha } /* Tous les lments LI descendant d'un lment OL */
OL.alpha > LI { liststyle: loweralpha } /* Tous les lments LI enfant d'un lment OL */
118
L'aspect souhait aurait t d'avoir les items de liste du niveau 1 avec des marqueurs 'loweralpha' et les items de
liste du niveau 2 avec des marqueurs 'disc'. Cependant, l'ordre de la cascade va faire que la premire (qui inclut
une information de classe spcifique) masquera la seconde. L'emploi d'un slecteur d'enfant dans la rgle suivante
amne au rsultat attendu :
OL.alpha > LI { liststyle: loweralpha }
UL LI
{ liststyle: disc }
Une autre solution aurait t de spcifier l'information de 'liststyle' seulement aux lments de type de liste :
OL.alpha
UL
{ liststyle: loweralpha }
{ liststyle: disc }
Les lments LI vont hriter des valeurs de la proprit 'liststyle' au travers des lments OL et UL. On
recommande cette manire de faire pour spcifier le style des listes.
Exemple(s) :
On peut combiner une valeur d'URI avec chacune des autres valeurs, comme :
UL { liststyle: url("http://png.com/ellipse.png") disc }
Dans cet exemple, la valeur 'disc' sera employe en cas d'indisponibilit de l'image.
Quand on spcifie la valeur 'none' pour la proprit 'liststyle', les proprits 'liststyletype' et 'liststyleimage'
prennent toutes deux cette mme valeur 'none' :
UL { liststyle: none }
119
120
Les valeurs calcules des marges de la bote, en haut ou en bas de la page, sont gales '0'.
La notion de police tant trangre au contexte de la page, ainsi les units 'em' et 'ex' ne sont pas admises. Les
valeurs en pourcentage des proprits de marge se rapportent aux dimensions de la bote de la page, la largeur de
celleci pour les marges gauche et droite, la hauteur, pour les marges du haut et du bas. Les autres units
dfinies respectivement leurs proprits sont admises.
Des valeurs de marge ngatives (pour la bote de la page, ou pour certains lments) ou un positionnement absolu
peuvent placer un contenu en dehors de la bote de la page, aussi celuici peut tre "coup" (par l'agent utilisateur,
par l'imprimante ou, finalement, par le massicot).
13.2.2 La taille de la page : la proprit 'size'
'size'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Les valeurs de longueur de la proprit 'size' crent une bote de page de taille absolue. Quand on ne spcifie
qu'une seule valeur, la largeur et la hauteur de la bote de la page sont les mmes (c..d. une bote carre). La bote
de la page tant le bloc conteneur initial, la proprit 'size' n'admet pas de valeurs en pourcentage.
Exemple(s) :
Par exemple :
@page {
size: 8.5in 11in;
}
/* width height */
Ici, la bote de la page a une largeur de 8.5in et une hauteur de 11in. Les dimensions requises pour la feuille cible
sont 8.5 x 11 pouces, au moins.
Les agents utilisateurs peuvent autoriser un certain contrle du transfert de la page vers la feuille (c..d. la rotation
d'une bote de page absolue en vue de son impression).
Le rendu d'une bote de page qui ne tient pas sur une feuille cible
Quand la bote de la page ne tient pas dans la feuille cible, l'agent utilisateur peut exercer :
Une rotation de la bote de 90 si cela permet de la faire tenir dans la feuille ;
Une diminution de l'chelle de la page pour la faire tenir dans la feuille.
L'agent utilisateur devrait prvenir l'utilisateur avant d'effectuer ces oprations.
Le positionnement de la bote de la page sur la feuille
Quand la bote de la page est plus petite que la feuille cible, l'agent utilisateur est libre de la placer n'importe o
dans la feuille. Cependant, on recommande que celleci soit centre dans la feuille, ce qui permet un certain
alignement sur une feuille au recto et au verso, et aussi d'viter d'ventuelles pertes d'information quand
l'impression a lieu trop prs du bord de la feuille.
13.2.3 Les repres de coupe : la proprit 'marks'
'marks'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Pour les impressions de qualit, on ajoute souvent des repres en dehors de la bote de la page. Cette proprit
indique si des repres de coupe, ou d'alignement, ou les deux en mme temps, doivent apparatre, ou non, en
dehors des limites de la bote de la page.
122
Quand on donne des dclarations distinctes aux pages de gauche et de droite, l'agent utilisateur doit respecter
cellesci, mme si celuici n'effectue pas le transfert des botes de page selon les feuilles de gauche et celles de
droite (ex. l'imprimante n'imprime qu'en recto).
Les auteurs peuvent galement spcifier un style particulier la premire page d'un document avec la
pseudoclasse :first :
Exemple(s) :
@page { margin: 2cm } /* Toutes les marges font 2cm */
@page :first {
margintop: 10cm
}
La dtermination du ct de la premire page d'un document, page de gauche ou de droite, dpend du sens
d'criture principal du document, ceci n'est pas trait dans la prsente spcification. Cependant, pour forcer la
premire page gauche, ou droite, les auteurs peuvent insrer une coupure de page avant la premire bote
gnre (ex. en HTML, le faire pour lment BODY).
Les proprits spcifis dans une rgle @page, avec une pseudoclasse :left ou :right, surclassent celles dans une
rgle @page qui en est dpourvue. Et celles dans une rgle @page, avec une pseudoclasse :first, surclassent
leur tour celles avec une pseudoclasse :left ou :right.
Note : Le fait d'ajouter des dclarations aux pseudoclasses :left ou :right ne prsage en rien d'une sortie
d'impression du document en recto ou en recto verso (ceci tant en dehors de l'objet de cette spcification).
Note : Des versions ultrieures de CSS pourraient introduire d'autres pseudoclasses de page.
13.2.5 Le contenu en dehors de la bote de page
Lors de la mise en forme d'un contenu dans le modle de la page, une partie de celuici peut se trouver en dehors
de la bote de la page. Par exemple, un lment dont la proprit 'whitespace' a la valeur 'pre' peut gnrer une
bote plus grande que celle de la page. De mme, les botes en position absolue peuvent finir des emplacements
"inattendus". Par exemple, des images peuvent tre places au bord de la bote de la page, ou encore 100 000
pouces en dessous de celleci.
La dfinition de la mise en forme pour de tels lments n'est pas aborde dans cette spcification. Cependant, dans
ces cas, on recommande, de la part des auteurs et des agents utilisateurs, de suivre les principes gnraux suivants
:
123
'pagebreakafter'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
'pagebreakinside'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Pourcentage :
124
<identifiant> | auto
auto
ceux des lments de type bloc
oui
sans objet
visuel, pagins
La proprit 'page' peut tre employe pour dsigner un type particulier de page o devrait s'afficher un lment
donn.
Exemple(s) :
Dans cet exemple, toutes les tables seront places, avec une orientation paysage [ndt. landscape], dans une page de
droite (celleci est nomme "retournee") :
@page rotated {size: landscape}
TABLE {page: retournee; pagebreakbefore: right}
La proprit 'page' a le fonctionnement suivant : quand une bote de bloc, avec un contenu enligne, a une
proprit 'page' dont la valeur est diffrente de celle de la bote prcdente, galement de type bloc avec un
contenu enligne, alors une ou deux coupures de page sont insres entre ces deux botes, et les botes survenant
aprs la coupure sont rendues dans une bote de page avec ce nom. Voir "Les coupures de page forces" plus loin.
Exemple(s) :
Dans cet exemple, les deux tables sont affiches avec une orientation paysage (sur la mme page en effet, si
celleci peut les contenir), la page nomme "etroite" n'tant pas du tout employe, bien que celleci ait t
applique l'lment DIV :
@page etroite {size: 9cm 18cm}
@page retournee {size: landscape}
DIV {page: etroite}
TABLE {page: retournee}
<entier> | inherit
2
ceux des lments de type bloc
oui
sans objet
visuel, pagin
'widows'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
<entier> | inherit
2
ceux des lments de type bloc
oui
sans objet
visuel, pagin
125
126
En consquence de la plus grande specificit du slecteur avec une pseudoclasse, les pages de gauche auront une
marge gauche de '4cm', les autres pages (c..d. les pages de droite) auront une marge gauche de '3cm'.
127
<couleur> | inherit
selon l'agent utilisateur
tous les lments
oui
sans objet
visuel
Cette proprit dcrit la couleur d'avantplan du contenu de texte d'un lment. Voici plusieurs faons d'indiquer
la couleur rouge :
Exemple(s) :
EM { color: red }
EM { color: rgb(255,0,0) }
14.2 L'arrireplan
Les auteurs peuvent spcifier l'arrireplan d'un lment (c..d. la surface o celui est rendu) comme tant une
couleur ou bien une image. Selon le modle de la bote, l'arrireplan correspond aux aires du contenu, de
l'espacement et de bordure. Les couleurs et styles de bordure sont spcifies par les proprits de bordure. Les
marges tant transparentes, l'arrireplan du parent est toujours visible au travers de cellesci.
Bien que les proprits d'arrireplan ne s'hritent pas, l'arrireplan de la bote du parent transparatra par dfaut,
du fait de la valeur initiale 'transparent' de la proprit 'backgroundcolor'.
L'arrireplan de la bote gnre par l'lment racine recouvre la totalit du canevas.
Dans le cas de documents HTML, on recommande aux auteurs de spcifier un arrireplan l'lment BODY,
plutt qu' l'lment HTML. Les agents utilisateurs devraient suivre les rgles de prsance suivantes pour remplir
le fond du canevas : quand la valeur de la proprit 'background' pour l'lment HTML diffre de 'transparent',
alors utiliser la valeur spcifie, autrement utiliser celle spcifie par la proprit 'background' de l'lment
BODY. Le rendu n'est pas dfini si la valeur finale reste 'transparent'.
Selon ces rgles, le canevas en dessous du document HTML suivant aura un arrireplan "marbr" :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Donner un arrireplan au canevas</TITLE>
<STYLE type="text/css">
BODY { background: url("http://style.com/marbre.png") }
</STYLE>
</HEAD>
<BODY>
<P>Mon arrireplan est marbr.
</BODY>
</HTML>
Cette proprit donne la couleur d'arrireplan d'un lment, avec une valeur de <couleur>, ou bien avec le
motcl 'transparent', celuici laissant ventuellement voir les couleurs situes plus endessous.
Exemple(s) :
H1 { backgroundcolor: #F00 }
'backgroundimage'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie l'image d'arrireplan d'un lment. En mme temps qu'une image, les auteurs devraient
aussi spcifier une couleur d'arrireplan, cette couleur tant employe en remplacement d'une image
indisponible. Celleci, une fois disponible, vient se superposer sur le fond color. La couleur du fond tant ainsi
visible au travers des zones transparentes de l'image.
La proprit admet les valeurs d'<uri>, pointant vers une image, ou 'none', prohibant l'emploi d'image.
Exemple(s) :
BODY { backgroundimage: url("marble.gif") }
P { backgroundimage: none }
'backgroundrepeat'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Quand on spcifie une image d'arrireplan, cette proprit indique si l'image est rpte (appose) et la manire
de la rptition. La mosaque de fond rsultante correspond aux aires de contenu, d'espacement et de bordure de la
bote de l'lment en question. Les significations des valeurs sont :
repeat
L'image se rpte la fois horizontalement et verticalement ;
repeatx
L'image ne se rpte qu'horizontalement ;
repeaty
L'image ne se rpte que verticalement ;
norepeat
L'image ne se rpte pas : un seul exemplaire de celleci est dessin.
Exemple(s) :
BODY {
background: white url("pendant.gif");
backgroundrepeat: repeaty;
backgroundposition: center;
}
129
Un exemplaire de l'image d'arrireplan est place au centre, puis d'autres exemplaires de cellesci se placent les
unes audessus, les autres endessous, produisant une bande verticale derrire l'lment.
'backgroundattachment'
Valeur :
scroll | fixed | inherit
Initiale :
scroll
S'applique :
tous les lments
Hrite :
non
Pourcentage : sans objet
Mdias :
visuel
Quand on spcifie une image d'arrireplan, cette proprit indique si l'image est fixe par rapport l'espace de
visualisation (pour la valeur 'fixed'), ou si celleci dfile en mme temps que le document (pour la valeur 'scroll').
Noter qu'il n'existe qu'un seul espace de visualisation par document ; c..d., mme si l'lment est dot d'un
mcanisme de dfilement (voir la proprit 'overflow'), un arrireplan avec la valeur 'fixed' ne se dplace pas
avec cet lment.
Si l'image est fixe, celleci n'est seulement visible que quand elle se trouve dans les aires d'arrireplan,
d'espacement et de bordure de l'lment. moins que l'image ne se rpte en mosaque ('backgroundrepeat:
repeat'), celleci peut ainsi ne pas apparatre.
Exemple(s) :
Dans cet exemple, une bande verticale infinie reste "colle" dans l'espace de visualisation quand l'lment dfile :
BODY {
background: red url("pendant.gif");
backgroundrepeat: repeaty;
backgroundattachment: fixed;
}
Les agents utilisateurs peuvent considrer une valeur 'fixed' comme tant 'scroll'. Cependant, on recommande une
interprtation correcte de la valeur 'fixed', au moins pour les lments HTML et BODY, autrement il serait
impossible pour un auteur de fournir une image destine seulement aux navigateurs reconnaissant la valeur 'fixed'.
Voir le passage sur la conformit pour des explications.
'backgroundposition'
[ [<pourcentage > | <longueur> ]{1,2} | [ [top | center | bottom] || [left | center | right] ] ] |
Valeur :
inherit
Initiale :
0% 0%
S'applique ceux des lments de type bloc et ceux remplacs
:
130
non
se rapporte la taille de la bote ellemme
visuel
Quand on spcifie une image d'arrireplan, cette proprit indique la position initiale de celleci. Les
significations des valeurs sont :
<pourcentage> <pourcentage>
Pour la paire de valeurs '0% 0%', le coin en haut et gauche de l'image est align sur celui du bord de
l'espacement de la bote. Pour la paire de valeurs '100% 100%', c'est le coin en bas et droite de l'image
sur celui du bord de l'espacement de la bote. Pour la paire de valeurs '14% 84%', le point dans l'image,
situ 14% vers la droite et 84% vers le bas, se place sur celui contenu dans l'aire d'espacement de la bote,
dans les mmes proportions ;
<longueur> <longueur>
Pour la paire de valeur '2cm 2cm', le coin en haut et gauche de l'image se place sur le point, situ 2cm
vers la droite et 2cm vers le bas en partant du coin en haut et gauche de l'aire d'espacement de la bote ;
top left et left top
Identique '0% 0%' ;
top, top center et center top
Identique '50% 0%';
right top et top right
Identique '100% 0%' ;
left, left center et center left
Identique '0% 50%' ;
center et center center
Identique '50% 50%' ;
right, right center etcenter right
Identique '100% 50%' ;
bottom left et left bottom
Identique '0% 100%' ;
bottom, bottom center et center bottom
Identique '50% 100%' ;
bottom right et right bottom
Identique '100% 100%'.
Quand on ne donne qu'une seule valeur, en pourcentage ou en longueur, celleci ne concerne que la position
horizontale, la position verticale sera 50%. Quand on donne deux valeurs, la premire concerne la position
horizontale. Les combinaisons de valeurs de pourcentage et de longueur sont admises (ex. '50% 2cm'). Les
positions ngatives le sont galement. On ne peut pas combiner des motscls avec des valeurs de pourcentage ou
de longueur (ce qui est possible est indiqu plus haut).
Exemple(s) :
BODY
BODY
BODY
BODY
{
{
{
{
background:
background:
background:
background:
url("banner.jpeg")
url("banner.jpeg")
url("banner.jpeg")
url("banner.jpeg")
right top }
top center }
center }
bottom }
/* 100%
0%
/* 50%
0%
/* 50% 50%
/* 50% 100%
*/
*/
*/
*/
Quand l'image d'arrireplan est fixe par rapport l'espace de visualisation (voir la proprit
'backgroundattachment'), cette image se place relativement celuici, et non par rapport l'aire d'espacement de
l'lment. Par exemple :
Exemple(s) :
BODY {
backgroundimage: url("logo.png");
backgroundattachment: fixed;
backgroundposition: 100% 100%;
backgroundrepeat: norepeat;
}
Ici, l'image (solitaire) est place dans le coin en bas droite de l'espace de visualisation.
'background'
Valeur :
La proprit 'background' est une proprit raccourcie qui sert regrouper les proprits individuelles
'backgroundcolor', 'backgroundimage', 'backgroundrepeat', 'backgroundattachment' et 'backgroundposition'
dans la feuille de style.
La proprit 'background' distribue d'abord toutes les proprits individuelles d'arrireplan leur valeur
initiale, puis leur applique les valeurs explicites de la dclaration.
Exemple(s) :
Dans la premire rgle de l'exemple suivant, la valeur de la proprit 'backgroundcolor' est seule spcifie, les
autres proprits individuelles recevant leur valeur initiale. Dans la seconde rgle, toutes les valeurs des proprits
individuelles sont spcifies :
BODY { background: red }
P { background: url("chess.png") gray 50% repeat fixed }
ce qui vite des calculs compliqus pour chaque attribut de couleur et autrement faramineux au niveau de chaque
pixel.
132
15 Les polices
15.1 Introduction
Pour le rendu visuel du texte d'un document, les caractres (lments comportant une information abstraite)
doivent correspondre avec des glyphes abstraits. Un ou plusieurs caractres peuvent tre reprsents par un ou
plusieurs glyphes abstraits, parfois en fonction du contexte. Un glyphe correspond la reprsentation artistique
d'un caractre abstrait, dans un certain style typographique, sous forme de contours vectoriels ou d'images bitmaps
pouvant tre dessins l'cran ou sur du papier. Une police se compose d'un jeu de glyphes, ceuxci tant fonds
sur un mme squelette pour leur dessin, leur taille, leur aspect et d'autres attributs associs au jeu entier, et d'un
systme de correspondance entre les caractres et ces glyphes abstraits.
Un agent utilisateur visuel doit rpondre aux questions suivantes avant le rendu effectif d'un caractre :
Existetil, directement ou de faon drive, une police spcifie pour ce caractre ?
Estce que l'agent utilisateur dispose de cette police ?
Si c'est le cas, quel(s) glyphe(s) correspond ce caractre ou cette combinaison de caractres ?
Si ce n'est pas le cas, que faudraitil faire ? Faudraitil effectuer une substitution de police ? Peuton
synthtiser cette police ? Peuton la tlcharger sur le Web ?
En CSS1 comme en CSS2, les auteurs peuvent spcifier les caractristiques des polices l'aide d'une batterie de
proprits de police.
Des changements sont intervenus entre CSS1 et CSS2 sur la faon dont un agent utilisateur doit interprter ces
proprits, dans le cas o la police demande n'est pas disponible. En CSS1, toutes les polices taient supposes
prsentes dans le systme de l'utilisateur et uniquement identifies par leur nom. On pouvait spcifier des polices
de rechange l'aide de proprits, mais les agents utilisateurs ne pouvaient offrir d'autres choix l'utilisateur (par
exemple, des polices de style apparent dont aurait pu disposer l'agent utilisateur) que celui des polices gnriques
par dfaut.
En CSS2, les volutions survenues accordent une plus grande libert aux :
auteurs de feuilles de style, pour dcrire les polices que ceuxci souhaitent voir utiliser ;
agents utilisateurs, pour slectionner une police quand celle demande n'est pas immdiatement
disponible.
CSS2 amliore la dtection d'une police correspondante dans le systme de l'utilisateur, introduit la synthse des
polices et leur rendu progressif ainsi que leur tlchargement partir du Web. Ces capacits accrues sont
regroupes sous le vocable 'PoliceWeb'.
Dans le modle de police de CSS2, comme dans celui de CSS1, chaque agent utilisateur dispose d'une "base de
donnes de polices". CSS1 se rfrait celleci sans en fournir le dtail interne. Par contre, CSS2 dfinit les
informations qui y sont contenues et permet aux auteurs d'y contribuer. Ainsi, quand un caractre est sollicit dans
une police donne, l'agent utilisateur, dans un premier temps, identifie celle dans la base de donnes qui
correspond "au mieux" (en fonction de l'algorithme de correspondance de police). Une fois qu'une correspondance
a t trouve, celuici charge les informations la concernant localement ou partir du Web, et peut ainsi afficher
le caractre avec les glyphes appropris.
En fonction de ce modle, nous avons organis la spcification en deux parties. La premire concerne le
mcanisme de spcification de police, avec lequel l'auteur prcise les polices dont celuici souhaitent l'utilisation.
La seconde concerne le mcanisme de slection de police, l'aide duquel l'agent utilisateur identifie et charge la
police qui correspond au mieux aux souhaits de l'auteur.
La manire dont les agents utilisateurs construisent cette base de donnes n'est pas traite dans cette spcification,
l'implmentation de celleci dpendant entre autres du systme d'exploitation, du systme d'affichage des fentres
et des agents utilisateurs euxmmes.
134
Cette proprit donne une liste, par ordre de priorit, de noms de familles de polices et/ou de noms de familles
gnriques. Pour contourner certaines difficults, une police seule ne contenant pas ncessairement tous les
glyphes pour le rendu de chacun des caractres d'un document, ou des polices tant absentes de certains systmes,
ainsi la proprit permet aux auteurs de spcifier une liste de polices, cellesci de mme style et taille, qui sont
essayes successivement pour vrifier la correspondance d'un glyphe avec un caractre donn. On appelle cette
liste un jeu de polices.
Exemple(s) :
Par exemple, un texte en franais avec des symboles mathmatiques peut ncessiter un jeu de polices de deux
polices, l'une d'entre elles contenant les caractres latins et les chiffres, l'autre contenant les symboles
mathmatiques. Voici un jeu de polices qui conviendrait pour le rendu d'un texte qu'on sait contenir des caractres
latins, japonais et des symboles mathmatiques :
BODY { fontfamily: Baskerville, "Heisi Mincho W3", Symbol, serif }
La police "Baskerville" va fournir les glyphes pour les caractres latins, la police "Heisi Mincho W3", ceux pour
les caractres japonais, la police "Symbol", ceux pour les symboles mathmatiques, et la famille de polices
gnrique 'serif', ceux ventuels d'autres caractres.
La famille de polices gnrique sera utilise si une, ou plusieurs, des polices d'un jeu de polices n'taient pas
disponibles. Bien que certaines polices fournissent un glyphe de substitution pour indiquer un "caractre
manquant", celuici prenant typiquement l'aspect d'un carr, on ne devrait pas considrer ce glyphe comme une
correspondance valide.
Il existe deux types de noms de famille de polices :
<famillenom>
Le nom d'une famille de polices choisi. Dans l'exemple prcdent, "Baskerville", "Heisi Mincho W3" et
"Symbol" sont des noms de famille de polices. Celles dont l'intitul contient des blancs devraient tre
crites entre guillemets. Si on omet les guillemets, chacun des caractres blancs avant et aprs le nom de
la police sont ignors et chaque squence de blancs dans celuici sont convertis en un seul espace ;
<famillegnrique>
On dfinit les familles gnriques suivantes : 'serif', 'sansserif', 'cursive', 'fantasy' et 'monospace'. Voir le
passage traitant des familles de polices gnriques pour leur description. Les noms de famille de polices
gnriques sont des motscls, on ne doit pas les mettre entre guillemets.
On recommande aux auteurs de citer une famille de polices gnrique comme dernire alternative, pour
une meilleure efficacit.
Par exemple :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Essai de police</TITLE>
<STYLE type="text/css">
BODY { fontfamily: "new century schoolbook", serif }
</STYLE>
</HEAD>
<BODY>
<H1 style="fontfamily: 'Ma propre police', fantasy">Essai</H1>
<P>Quoi de neuf ?
</BODY>
</HTML>
135
Ces rgles s'appliquent aux lments dans une langue donne, japonais ou chinois traditionnel, et appellent la
police approprie.
15.2.3 Le style de police : les proprits 'fontstyle', 'fontvariant', 'fontweight' et 'fontstretch'
'fontstyle'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
La proprit 'fontstyle' slectionne, parmi les polices d'une famille de polices, celles avec un dessin normal (aussi
appel "roman" ou "upright"), italique et oblique. Les significations des valeurs sont :
normal
Spcifie une police dite normale dans la base de donnes de police de l'agent utilisateur ;
oblique
Spcifie une police dite oblique dans la base de donnes de police de l'agent utilisateur. Les polices dont
le nom contient les mots Oblique, Slanted ou Incline sont typiquement tiquetes 'oblique' dans la base de
donnes de police de l'agent utilisateur. Celles avec ce label ayant pu avoir t obtenues lectroniquement
en inclinant une police normale ;
italic
Spcifie une police dite italique dans la base de donnes de police de l'agent utilisateur, ou, s'il n'y en a
pas, une avec un label 'oblique'. Les polices dont le nom contient les mots Italic, Cursive ou Kursiv seront
typiquement tiquetes 'italic'.
Exemple(s) :
Dans cet exemple, le texte des lments H1, H2 et H3 sera affich avec une police italique et le texte accentu
(EM) ventuel dans les lments H1 avec un dessin normal :
H1, H2, H3 { fontstyle: italic }
H1 EM { fontstyle: normal }
'fontvariant'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Dans une police en petites capitales, les glyphes des lettres minuscules ont un aspect similaire aux lettres
majuscules, cependant avec une taille rduite et des proportions lgrement diffrentes. La proprit 'fontvariant'
appelle ce genre de police bicamrale (qui ont deux casses, comme les critures latines). Celleci ne produit
aucun effet visible pour les critures monocamrales (qui n'ont qu'une seule casse, comme la plupart des
systmes d'criture mondiaux). Les significations des valeurs sont :
normal
Spcifie une police qui n'est pas tiquete comme tant en petites capitales ;
smallcaps
Spcifie une police tiquete comme tant en petites capitales. S'il n'y a pas une telle police, les agents
utilisateurs devraient en effectuer la simulation, par exemple en slectionnant une police normale et y
remplaant les lettres minuscules par des majuscules mises l'chelle. En dernier ressort, les lettres
majuscules inchanges d'une police normale peuvent se substituer aux glyphes en petites capitales, ainsi le
136
Comme cette proprit provoque la transformation du texte en majuscule, les mmes considrations que pour la
proprit 'texttransform' s'appliquent.
'fontweight'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage
:
Mdias :
normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
normal
tous les lments
oui
sans objet
visuel
La proprit 'fontweight' spcifie la graisse de la police. Les significations des valeurs sont :
100 900
Ces valeurs forment une squence ordonne, o chacun des nombres indique, pour la police, une graisse
au moins aussi grasse que celle du nombre prcdent ;
normal
quivaut '400' ;
bold
quivaut '700' ;
bolder
Spcifie la graisse suprieure celle assigne une police, cette graisse tant plus grasse que celle hrite
par la police. S'il n'y en a pas, la valeur de graisse de la proprit prend simplement la valeur numrique
suprieure (l'aspect de la police ne changeant pas), moins que la valeur hrite ne soit dj gale '900',
auquel cas la valeur rsultante devient galement '900' ;
lighter
Spcifie la graisse infrieure celle assigne une police, cette graisse tant moins grasse que celle
hrite par la police. S'il n'y en a pas, la valeur de graisse de la proprit prend simplement la valeur
numrique infrieure (l'aspect de la police ne changeant pas), moins que la valeur hrite ne soit dj
gale '100', auquel cas la valeur rsultante devient galement '100'.
Example(s) :
P { fontweight: normal }
/* 400 */
H1 { fontweight: 700 }
/* bold */
BODY { fontweight: 400 }
STRONG { fontweight: bolder } /* 500 si disponible */
La proprit 'fontstretch' slectionne les dessins normal, troitis ou largi dans une famille de polices. Les
valeurs des motscls absolus, du plus troit au plus espac, sont :
1. ultracondensed
137
Cette proprit dcrit la taille d'une police spcifie explicitement. Celleci correspond au carr em, un concept
issu de la typographie. Noter que certains glyphes peuvent dborder de leur carr em. Les significations des
valeurs sont :
<tailleabsolue>
Un motcl <tailleabsolue> se rfre une entre de la table des tailles de police, celleci tant dresse
et mise en uvre par l'agent utilisateur. Les valeurs possibles :
[ xxsmall | xsmall | small | medium | large | xlarge | xxlarge ]
Pour un cran de moniteur, on suggre un facteur d'chelle de 1.2 entre les valeurs conscutives de la
table ; si la valeur 'medium' correspond 12pt, la valeur 'large' devrait correspondre 14.4pt. Les facteurs
d'chelle peuvent diffrer selon les mdias considrs. Par ailleurs, l'agent utilisateur devrait prendre en
compte la qualit et la disponibilit des polices au moment du calcul de cette table. Celleci peut aussi
diffrer d'une famille de polices une autre.
Note : En CSS1, on suggrait un facteur d'chelle de 1.5, qui s'est avr trop grand l'usage.
<taillerelative>
Un motcl <taillerelative> s'entend par rapport la table des tailles de police et par rapport la taille de
la police de l'lment parent. Les valeurs possibles :
[ larger | smaller ]
Par exemple, quand l'lment parent a une taille de police de valeur 'medium', l'lment en question ayant
une valeur 'larger', la taille de police rsultante de celuici correspondra 'large'. Si la taille de police de
l'lment parent a une valeur trop loigne d'une des valeurs de la table, l'agent utilisateur est libre
d'effectuer une interpolation entre les deux valeurs qui la circonscrivent ou un arrondi la valeur la plus
proche. L'agent utilisateur peut devoir procder une extrapolation des valeurs de la table quand une
valeur numrique sort du champs des motscls.
<longueur>
Une valeur de longueur spcifie une taille de police absolue (indpendante de la table des tailles de police
de l'agent utilisateur). Les valeurs ngatives ne sont pas admises ;
<pourcentage>
Une valeur en pourcentage spcifie une taille de police absolue par rapport celle de l'lment parent.
Leur emploi, de mme pour les valeurs exprimes en 'em', conduit des feuilles de style plus fiables, en
plein accord avec le principe de la cascade.
La valeur relle, pour cette proprit, peut diffrer de la valeur calcule, la proprit 'fontsizeadjust' ayant une
valeur numrique et certaines tailles de police tant indisponibles.
Les lments enfants hritent de la valeur calcule de 'fontsize' (autrement l'effet de la proprit
'fontsizeadjust' serait combin).
138
'fontsizeadjust'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Pour les critures bicamrales, la taille apparente et la lisibilit subjectives d'une police dpendent moins de la
valeur de la proprit 'fontsize' que de celle de 'xheight', ou plus utilement, du ratio de ces deux valeurs
(xheight/fontsize), appel valeur d'aspect. Plus grande la valeur d'aspect, plus la police restera lisible dans les
petites tailles. Et inversement, les polices, qui ont une valeur d'aspect plus faible, verront leur lisibilit se dgrader
plus rapidement, partir d'un certain seuil, que celles de plus grande valeur d'aspect. Les simples substitutions de
polices, bases sur le seul critre de la taille de police, peuvent conduire un texte illisible.
Par exemple, la police Verdana, trs rpandue, a une valeur d'aspect de 0.58, c..d. quand la taille de celleci est
de 100 units, sa valeur de hauteurx (xheight) est de 58 units. En comparaison, la police Times New Roman a
une valeur d'aspect de 0.46. La police Verdana restera donc lisible plus longtemps que Times New Roman, la
taille de police diminuant. Inversement, pour une taille donne, Verdana semblera souvent "trop grande" quand
substitue par Times New Roman.
Cette proprit permet de spcifier une valeur d'aspect pour un lment, ce qui prserve la valeur hauteurx de la
premire police choisir dans la liste des polices de substitution. Les significations des valeurs sont :
none
Ne prserve pas la valeur hauteurx de la police ;
<nombre>
Spcifie la valeur d'aspect. Ce nombre concerne la valeur d'aspect de la premire police choisir. Le
facteur dchelle pour les polices disponibles se dtermine selon cette formule :
y(a/a') = c
ce qui correspond :
y
a
a'
c
=
=
=
=
la
la
la
la
valeur
valeur
valeur
valeur
de 'fontsize'
d'aspect de la
d'aspect de la
de 'fontsize'
Exemple(s) :
Par exemple, la police Verdana (valeur d'aspect de 0.58) avec une taille de police 14px spcifie n'tant pas
disponible, une police de substitution avec une valeur d'aspect de 0.46 tant disponible, la taille de police de
celleci serait : 14 * (0.58/0.46) = 17.65px.
L'ajustement de la taille de police intervient lors du calcul de la valeur relle de la proprit 'fontsize'. L'hritage
tant bas sur la valeur calcule, les lments enfants hritent de valeurs sans ajustement.
La premire image cidessous montre plusieurs polices rendues dans le mme corps (11pt 72dpi), avec leur
valeur d'aspect correspondante. Noter que les polices avec une grande valeur d'aspect apparaissent plus grande que
celles avec une valeur d'aspect plus petite. Celles avec une valeur d'aspect trs faible sont illisibles pour cette taille
donne.
139
L'image suivante montre la correction apporte par le facteur d'chelle de 'fontsizeadjust', la police Verdana
tant la "premire du choix". Une fois l'ajustement effectu, les tailles apparentes semblent identiques entre les
polices, bien que la taille relle (en em) puisse varier de plus de 100%. Noter que la proprit 'fontsizeadjust'
tend galement stabiliser les dimensions horizontales des lignes.
140
[Errata 20010625] La proprit 'fontsizeadjust' devraient tre applique galement la premire police du
choix. Ceci ne devrait avoir aucun effet, la valeur de 'fontsizeadjust' tant par dfinition gale au ratio ex/em de
cette premire police du choix. Ceci corrige une omission en relation avec les cas o la proprit est hrite par les
lments enfants de type enligne.
15.2.5 La proprit raccourcie de police : la proprit 'font'
'font'
[ [ <'fontstyle'> || <'fontvariant'> || <'fontweight'> ]? <'fontsize'> [ / <'lineheight'> ]?
Valeur :
<'fontfamily'> ] | caption | icon | menu | messagebox | smallcaption | statusbar | inherit
Initiale :
voir les proprits individuelles
S'applique tous les lments
:
Hrite :
oui
Percentages:allowed on 'fontsize' and 'lineheight'
141
visuel
La proprit raccourcie 'font', sauf comme indiqu plus loin, sert regrouper les proprits 'fontstyle',
'fontvariant', 'fontweight', 'fontsize', 'lineheight' et 'fontfamily' dans la feuille de style. La syntaxe de
celleci est issue d'une notation typographique traditionnelle pour fixer plusieurs proprits lies aux polices.
Tout d'abord, les valeurs des proprits de police sont toutes rinitialises leur valeur initiale, les proprits
dcrites prcdemment ainsi que 'fontstretch' et 'fontsizeadjust'. Ensuite, les valeurs spcifies explicitement
dans la proprit 'font' sont donnes aux proprits concernes. Voir les dfinitions des proprits pour les valeurs
admises et initiales de cellesci. Pour des raisons de compatibilit, il n'est pas possible, au moyen de cette
proprit 'font', de spcifier des valeurs autres que leur valeur initiale aux proprits 'fontstretch' et
'fontsizeadjust' ; pour ce faire, utiliser directement cellesci.
Exemple(s) :
P
P
P
P
P
P
{
{
{
{
{
{
font:
font:
font:
font:
font:
font:
12pt/14pt sansserif }
80% sansserif }
xlarge/110% "new century schoolbook", serif }
bold italic large Palatino, serif }
normal smallcaps 120%/120% fantasy }
oblique 12pt "Helvetica Nue", serif; fontstretch: condensed }
Dans la deuxime rgle, la taille de police en pourcentage ('80%') se rapporte celle de l'lment parent. Dans la
troisime, le pourcentage de hauteur de ligne ('110%') se rapporte la taille de police de l'lment luimme.
Les trois premires rgles ne spcifiant pas explicitement les valeurs des proprits 'fontvariant' et 'fontweight',
cellesci ont donc leur valeur initiale 'normal'. Noter que le nom de la famille de polices "new century
schoolbook" contenant des blancs, celuici est mis entre guillemets. La quatrime rgle spcifie la valeur 'bold'
pour la proprit 'fontweight', la valeur 'italic' pour 'fontstyle' et, implicitement, la valeur 'normal' pour
'fontvariant'.
La cinquime rgle spcifie les valeurs des proprits individuelles 'fontvariant' ('smallcaps'), 'fontsize' (120%
de la taille de police du parent), 'lineheight' (120% de la taille de police) et 'fontfamily' ('fantasy'). On en dduit
que le motcl 'normal' s'applique aux deux proprits restantes, 'fontstyle' et 'fontweight'.
La sixime rgle spcifie les valeurs des proprits 'fontstyle', 'fontsize' et 'fontfamily', les autres proprits
gardant leur valeur initiale. Puis celleci spcifie la valeur 'condensed' pour la proprit 'fontstretch', ceci ne
pouvant tre ralis au moyen de la proprit raccourcie 'font'.
Les valeurs suivantes concernent les polices de systme :
caption
La police employe pour lgender les contrles (ex. les boutons, les menus droulants, etc.) ;
icon
La police employe pour lgender les icones ;
menu
La police employe dans les menus (ex. les menus droulants et les listes de menus) ;
messagebox
La police employe dans les botes de dialogue ;
smallcaption
La police employe pour tiqueter les contrles de petite taille;
statusbar
La police employe dans les barres de statut de la fentre.
On ne peut spcifier les polices de systme que globalement, c..d. une spcification en une seule fois de la
famille d'une police, de sa taille, de son poids, de son style, etc. Ces valeurs peuvent tre ensuite modifies
individuellement. S'il n'y a pas de police avec les caractristiques requises sur une plateforme donne, l'agent
utilisateur devrait exercer une interprtation adquate (par exemple utiliser une forme rduite de la police dsigne
par la valeur 'caption' pour la valeur 'smallcaption') ou bien lui substituer une police par dfaut. Comme pour les
polices normales, si, pour une police de systme, une quelconque des proprits individuelles n'tait pas
disponible au travers des prfrences de l'utilisateur du systme d'exploitation, ces proprits devraient prendre
leur valeur intiale.
C'est pourquoi cette proprit est "presque" une proprit raccourcie : on ne peut spcifier les polices de systme
qu'avec celleci, et non avec la proprit 'fontfamily'. Ainsi, la proprit 'font' permet un plus grand champs
d'action que la somme de ses sousproprits. Cependant, les proprits individuelles, telle que 'fontweight',
142
Si, selon exemple, la police employe pour les menus droulants sur un systme donn tait Charcoal en 9pt, avec
un poids de 600, alors les lments P descendants de l'lment BUTTON serait affichs comme si la rgle tait :
BUTTON P { font: 600 9pt Charcoal }
La proprit raccourcie 'font' rinitialisant leur valeur initiale chacune des proprits non spcifie, ces
dclarations auraient produit le mme effet :
BUTTON P {
fontstyle: normal;
fontvariant: normal;
fontweight: 600;
fontsize: 9pt;
lineheight: normal;
fontfamily: Charcoal
}
Les glyphes des polices serifs, tel que le mot est employ en CSS, ont des terminaisons au bout de leurs traits, des
bouts vases ou en pointes, ou plus simplement des terminaisons avec des empattements (y compris des
empattements en pav). Les polices serifs ont typiquement un espacement des lettres proportionnel. Elles
prsentent souvent une plus grande variation entre les pleins et les dlis que les polices appartenant au type
gnrique 'sansserif. En CSS, le terme 'serif' s'applique une police, quelle que soit son criture, bien que
d'autres dnominations soient plus courantes pour d'autres critures, telles que Mincho (japonais), Sung ou Song
(chinois) ou Pathang (coren). Toute police ainsi dcrite peut reprsenter la famille gnrique 'serif'.
Quelques exemples de polices dans cette description :
Polices latines
Polices greques
Polices cyrilliques
Polices hbraques
Polices japonaises
Polices arabes
Polices cherokees
Times New Roman, Bodoni, Garamond, Minion Web, ITC Stone Serif, MS Georgia,
Bitstream Cyberbit
Bitstream Cyberbit
Adobe Minion Cyrillic, Excelcior Cyrillic Upright, Monotype Albion 70, Bitstream Cyberbit,
ER Bukinst
New Peninim, Raanana, Bitstream Cyberbit
Ryumin LightKL, Kyokasho ICA, Futo Min A101
Bitstream Cyberbit
Lo Cicero Cherokee
143
Les glyphes sans serifs, tel que le mot est employ en CSS, ont les fins des traits pleins, sans vasement, ni
recoupements ou autres ornements. Les polices sans serifs ont typiquement un espacement des lettres
proportionnel. Elles prsentent en gnral peu de variation entre les pleins et les dlis, compares aux polices
appartenant au type gnrique 'serif'. En CSS, le terme 'sansserif' s'applique une police, quelle que soit son
criture, bien que d'autres dnominations soient plus courantes pour d'autres critures, telles que Gothic
(japonais), Kai (chinois), Totum ou Kodig (coren). Toute police ainsi dcrite peut reprsenter la famille
gnrique 'sansserif'.
Quelques exemples de polices dans cette description :
MS Trebuchet, ITC Avant Garde Gothic, MS Arial, MS Verdana, Univers, Futura, ITC Stone
Sans, Gill Sans, Akzidenz Grotesk, Helvetica
Polices greques
Attika, Typiko New Era, MS Tahoma, Monotype Gill Sans 571, Helvetica Greek
Polices cyrilliques Helvetica Cyrillic, ER Univers, Lucida Sans Unicode, Bastion
Polices hbraques Arial Hebrew, MS Tahoma
Polices japonaises Shin Go, Heisei Kaku Gothic W5
Polices arabes
MS Tahoma
Polices latines
cursive
Les glyphes des polices cursives, tel que le terme est employ en CSS, ont gnralement des traits qui se
recoupent ou bien un aspect manuscrit plus affirm que le dessin des polices italiques. Les glyphes se touchent en
partie ou compltement, ce qui donne un rsultat plus proche d'une criture manuscrite que celui d'un travail
imprim. Les polices de certaines critures, comme l'arabe, sont presque toujours cursives. En CSS, le terme
'cursive' s'applique une police, quelle que soit son criture, bien que d'autres dnominations sont galement
utilises, telles que Chancery, Brush, Swing et Script.
Quelques exemples de polices dans cette description :
Polices latines
Polices cyrilliques
Polices hbraques
Polices arabes
fantasy
Les polices fantaisie, tel que le terme est employ en CSS, sont principalement dcoratives, contenant toujours les
reprsentations des caractres ( l'inverse des polices Pi ou Picture, qui n'en ont pas). Quelques exemples :
Polices latines Alpha Geometrique, Critter, Cottonwood, FB Reactor, Studz
monospace
Le critre de dtermination unique d'une police monospace : tous les glyphes ont les mmes dimensions (ce qui
peut donner un rsultat surprenant avec certaines critures, telle l'arabe). L'aspect tant semblable celui obtenu
avec une machine crire manuelle, on les emploie souvent pour transmettre des chantillons de code
informatique.
Quelques exemples de polices dans cette description :
Polices latines
Polices greques
Polices cyrilliques
Polices japonaises
Polices cherokees
Chacune des rgles de @fontface spcifie la valeur pour chacun des descripteurs de police, soit implicitement
soit explicitement. Ceux dont les valeurs ne sont pas explicites prenant la valeur initiale dfinie pour chacun des
descripteurs dans cette spcification. Ces descripteurs ne s'appliquent que dans le contexte de la rgle @fontface
dans laquelle ceuxci sont dfinis, et non aux lments dans le langage du document. Ainsi, aucunes notions de
descripteurs s'appliquant des lments, ou de valeurs hrites par des lments enfants, n'interviennent.
Les descripteurs de police disponibles sont traits plus loin dans cette spcification.
Par exemple ici, la police 'Robson Celtic' est dfinie et rfrence dans une feuille de style incorpore un
document HTML :
<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>Essai de police</TITLE>
<STYLE TYPE="text/css" MEDIA="screen, print">
@fontface {
fontfamily: "Robson Celtic";
src: url("http://site/fonts/robcelt")
}
H1 { fontfamily: "Robson Celtic", serif }
</STYLE>
</HEAD>
<BODY>
<H1> Ce titre s'affiche dans la police Robson Celtic</H1>
</BODY>
</HTML>
La feuille de style (dans un lment STYLE) contient une rgle CSS qui enjoint l'utilisation de la famille de
polices 'Robson Celtic' tous les lments H1.
Une implmentation CSS1 consulterait le systme pour y trouver une police dont le nom de la famille et d'autres
proprits correspondent 'Robson Celtic' et, en cas d'chec, utiliserait la police serif de repli (celleci ayant une
existence dfinie) de l'agent utilisateur .
Une implmentation CSS2 examinerait d'abord les rgles contenues dans @fontface en qute d'une description
de police dfinissant 'Robson Celtic'. Dans l'exemple cidessus, une rgle correspond. Bien que cette rgle ne
recle que peu de donnes sur la police, celleci donne un URI qui pointe sur une police tlchargeable pour le
rendu du document. Les polices tlchargeables ne devraient pas tre disponibles pour d'autres applications. Si
aucune correspondance n'est obtenue via @fontface, l'agent utilisateur essaiera d'en trouver une comme l'aurait
fait une implmentation CSS1.
Noter que, si la police 'Robson Celtic' avait t installe dans le systme, l'agent utilisateur aurait ajout une entre
dans la base de donnes de police, tel que dcrit dans l'algorithme de correspondance de police. Dans l'exemple
prcdent, cette correspondance aurait t retenue en premier, coupant court au tlchargement de la police.
Les implmentations CSS1 qui ne reconnaissent pas la rgle @fontface, rencontrant l'accolade ouvrante, vont en
ignorer le contenu jusqu' l'accolade fermante. Cette rgleat se conformant aux obligations de compatibilit
ascendante de CSS. Les interprteurs peuvent ignorer ces rgles sans provoquer d'erreurs.
Cette sparation entre les descripteurs de police et leurs donnes prsente un intrt, audel de pouvoir effectuer
une slection et/ou une substitution de police. La protection des donnes et les restrictions exerces sur leur copie,
pour les descripteurs de police, peuvent tre beaucoup moins strictes que pour les donnes d'une police entire.
Ainsi, on peut installer la dfinition de police localement, ou au moins dans un cache local si la police est appele
partir d'une feuille de style commune ; ceci vitant d'avoir tlcharger la dfinition de police complte, c..d.
plus d'une fois par police nomme.
Quand un descripteur de police apparat plusieurs reprises, le dernier survenu l'emporte, les autres devant tre
ignors.
galement, tout descripteur non reconnu ou inutile pour un agent utilisateur doit tre ignor. Des versions
ultrieures de CSS pourraient introduire des descripteurs supplmentaires pour l'amlioration de la substitution de
police, de leur correspondance ou de leur synthse.
146
148
150
Dans le premier exemple, on a une tendue de 32 caractres, de 4E00 4E1F. Le glyphe correspondant au premier
caractre (4E00) a une dimension de 1736, le deuxime une dimension de 1874 et le troisime une dimension de
1692. Comme des dimensions manquent, la dernire est rplique pour couvrir le reste de l'tendue spcifie.
Dans le second exemple, on a une seule dimension pour toute une tendue de 256 glyphes, puis des dimensions
explicites pour une tendue de 16 glyphes.
Ce descripteur ne peut pas dcrire plusieurs glyphes correspondant tous un seul caractre ou des ligatures de
plusieurs caractres. Ainsi, celuici peut seulement tre employ avec des critures qui n'ont pas de formes
contextuelles ni de ligatures obligatoires. Nanmoins utilement dans ces cas. Les critures qui requirent une
correspondance d'unplusieurs ou de plusieursplusieurs des caractres vers les glyphes, ne peuvent pas pour
le moment employer ce descripteur pour la synthse de police, mais on peut toujours utiliser le tlchargement de
police ou la correspondance intelligente avec cellesci.
'bbox' (Descripteur)
<nombre>, <nombre>, <nombre>, <nombre>
Valeur :
Initiale :
indfinie
Mdias : visuel
C'est le descripteur de la bote de circonscription maximale d'une police. La valeur consiste en une liste
d'exactement quatre nombres, spares par une virgule, qui indique les coordonnes de cette bote pour la police
152
155
Ce descripteur ne prsente pas d'intrt pour les polices qui ne contiennent pas les glyphes dans ces critures. Les
hauteurs des minuscules et des majuscules apparaissant souvent sous la forme d'un ratio pour comparer des
polices, il peut tre utile de leur donner une mme valeur de hauteur pour les critures monocamrales telle
l'hbreu, quand celuici apparat dans un texte mixte latin hbreu, les caractres hbreux ayant typiquement une
hauteur michemin entre celles des minuscules et des majuscules des polices latines.
156
157
Exemple(s) :
L'exemple suivant dfinit une famille de polices. Un seul URI est donn pour ramener les donnes de police. Ce
fichier de donnes va contenir plusieurs styles et graisses pour la police demande. Une fois qu'une de ces
dfinitions @fontface aura t excute, ces donnes vont se retrouver dans le cache de l'agent utilisateur au
service des autres polices partageant le mme URI :
@fontface {
src: local("Helvetica Medium"),
url(http://www.fonts.org/sans/Helvetica_family) format("truedoc");
fontfamily: "Helvetica";
fontstyle: normal
}
@fontface {
src: local("Helvetica Oblique"),
url("http://www.fonts.org/sans/Helvetica_family") format("truedoc");
fontfamily: "Helvetica";
fontstyle: oblique;
slope: 18
}
Exemple(s) :
L'exemple suivant regroupe trois polices existantes en une seule police virtuelle, celleci gagnant une couverture
largie. Dans chacune de ces trois dclarations, on donne le nom entier de la police au moyen du descripteur 'src',
ce qui en provoquerait l'utilisation prfrentielle au cas o celleci tait disponible localement. Une quatrime
rgle pointe vers une police ayant la mme couverture en une seule ressource :
161
Exemple(s) :
L'exemple suivant pourrait faire partie de la feuille de style par dfaut d'un agent utilisateur. C'est une
implmentation de la famille de polices gnrique de CSS2 serif, ralisant une correspondance sur une grande
varit de polices serifs qui existent sur diverses plateformes. Aucunes dimensions ne sont indiques, cellesci
variant pour chacune des alternatives :
@fontface {
src: local("Palatino"),
local("Times New Roman"),
local("New York"),
local("Utopia"),
url("http://somewhere/free/font");
fontfamily: serif;
fontweight: 100, 200, 300, 400, 500;
fontstyle: normal;
fontvariant: normal;
fontsize: all
}
162
16 Le texte
Les proprits dfinies cidessous influencent la reprsentation visuelle des caractres, des blancs, des mots et des
paragraphes.
Cette proprit spcifie un alina pour la premire ligne du texte dans un bloc. Plus prcisment, celui de la
premire bote de la premire range dans la premire bote de ligne de ce bloc. Cette bote est indente partir du
bord gauche (ou droit, pour une mise en page de droite gauche) de la bote de ligne. Les agents utilisateurs
devraient reprsenter cette indentation comme un espace vide.
Le significations des valeurs sont :
<longueur>
L'alina a une longueur fixe ;
<pourcentage>
L'alina correspond un pourcentage de la largeur du bloc conteneur.
La valeur de la proprit 'textindent' peut tre ngative, mais ceci dpend des limites de l'implmentation. Si
cette valeur est ngative, la valeur de la proprit 'overflow' peut avoir une influence sur la visibilit du texte.
Exemple(s) :
Cet exemple produit un alina de '3em' :
P { textindent: 3em }
Cette proprit dcrit l'alignement d'un contenu enligne dans un lment de type bloc. Les significations des
valeurs sont :
left, right, center et justify
Respectivement, l'alignement gauche, droite, centr et justifi d'un texte ;
<chane>
Spcifie une chane sur laquelle les cellules d'une table vont s'aligner (voir le passage sur l'alignement
horizontal dans une colonne pour le dtail et pour un exemple). Cette valeur ne s'applique qu'aux cellules
d'une table. Applique un autre lment, celleci sera considre comme tant 'left' ou 'right', en
fonction de la valeur de la proprit 'direction', respectivement 'ltr' ou 'rtl'.
Un pav de texte consiste en un empilement de botes de ligne. Pour les valeurs 'left', 'right' et 'center', cette
proprit indique la faon dont les botes enligne, dans chacune des botes de ligne, s'alignent par rapport aux
cts gauche et droite de ces botes de ligne ; l'alignement n'est pas effectu par rapport l'espace de visualisation.
Pour la valeur 'justify', l'agent utilisateur peut, en plus des ajustements de position, tirer les botes de ligne. Voir
galement les proprits 'letterspacing' et 'wordspacing').
163
16.3 La dcoration
16.3.1 Trait endessous, trait audessus, rayure et clignotement: la proprit 'textdecoration'
'textdecoration'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit dcrit les dcorations qui sont ajoutes au texte d'un lment. Quand la proprit est applique un
lment de type bloc, elle agit sur tous les descendants de type enligne de celuici. Quand elle est applique un
lment de type enligne, ou agit sur celuici, cette proprit influence toutes les botes gnres par cet lment.
Quand les lments sont vides ou sans contenu textuel (ex. l'lment IMG en HTML), les agents utilisateurs
doivent ignorer cette proprit.
Les significations des valeurs sont :
none
Aucune dcoration ;
underline
Chaque ligne de texte est souligne ;
overline
Chaque ligne de texte reoit un trait audessus ;
linethrough
Chaque ligne de texte est raye en son milieu ;
blink
Le texte clignote (une alternance entre visible et invisible). Les agents utilisateurs conformes ne sont pas
tenus de reconnatre cette valeur.
La couleur, ou les couleurs, requises pour la dcoration de texte devraient tre dtermines par la valeur de la
proprit 'color'.
Cette proprit n'est pas hrite, cependant les botes qui descendent d'une bote de bloc donne devraient recevoir
la mme dcoration que celleci (ex. toutes devraient tre soulignes). La couleur de la dcoration devrait tre
conserve, mme si la valeur de la proprit 'color' des lments descendants tait diffrente.
Exemple(s) :
Dans cet exemple en HTML, le contenu de texte de chacun des lments A, ceuxci tant des liens, seront
souligns :
A[href] { textdecoration: underline }
164
Celuici produira un ombrage droite et endessous du texte de l'lment. Cet ombrage aura un rayon de flou de
5px et de couleur rouge :
H2 { textshadow: 3px 3px 5px red }
Dans l'exemple suivant, on spcifie une liste d'effets d'ombrage. Le premier ombrage apparatra droite et
endessous du texte, avec une couleur rouge et sans effet de flou. Le deuxime va recouvrir le premier effet
d'ombrage et apparatra gauche et endessous du texte, avec une couleur jaune et un effet de flou. Le troisime
sera plac droite et audessus du texte. Aucune couleur n'tant spcifie pour celuici, c'est la valeur de la
proprit 'color' de l'lment en question qui sera utilise :
H2 { textshadow: 3px 3px red, yellow 3px 3px 2px, 3px 3px }
Exemple(s) :
Considrons cette rgle :
SPAN.glow {
background: white;
color: white;
textshadow: black 0px 0px 5px;
}
Ici, on a utilis les proprits 'background' et 'color' avec la mme valeur, ainsi que la proprit 'textshadow' pour
crer un effet "clipse solaire" :
165
Note : Cette proprit n'est pas dfinie en CSS1. Certains effets d'ombrage (tel que celui du dernier exemple)
peuvent rendre le texte invisible pour les agents utilisateurs ne reconnaissant que CSS1.
Cette proprit prcise le comportement de l'espacement entre les caractres du texte. Les significations des
valeurs sont :
normal
C'est l'espacement normal pour la police en question. Cette valeur permet l'agent utilisateur la
modification de l'interlettrage pour la justification d'un texte ;
<longueur>
Cette valeur indique la quantit d'espacement qui s'ajoute l'interlettrage par dfaut. Celleci peut tre
ngative, son interprtation dans les limites de l'implmentation. Pour un texte justifier, les agents
utilisateurs peuvent ne plus pouvoir augmenter ou diminuer l'interlettrage.
Les algorithmes d'interlettrage dpendent des agents utilisateurs. La justification peut aussi avoir une influence sur
l'interlettrage (voir la proprit 'textalign').
Exemple(s) :
Dans cet exemple, l'interlettrage des lments BLOCKQUOTE est augment de 'O.1em' :
BLOCKQUOTE { letterspacing: 0.1em }
/* Pareil '0' */
Quand l'interlettrage rsultant entre deux caractres est diffrent de celui par dfaut, les agents utilisateurs ne
devraient pas utiliser de ligatures.
Les agents utilisateurs conformes peuvent interprter la valeur de la proprit 'letterspacing' comme tant
'normal'.
'wordspacing'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit prcise le comportement de l'espacement entre des mots. Les significations des valeurs sont :
normal
L'espacemot normal, tel que dfini par la police en question et/ou l'agent utilisateur ;
<longueur>
Cette valeur indique la quantit d'espacement qui s'ajoute l'espacemot par dfaut. Les valeurs peuvent
tre ngatives, leur interprtation dans les limites de l'implmentation.
166
Les agents utilisateurs conformes peuvent interprter la valeur de la proprit 'wordspacing' comme tant
'normal'.
Cette proprit dtermine les effets de capitalisation du texte d'un lment. Les significations des valeurs sont :
capitalize
La premire lettre de chaque mot est en majuscule ;
uppercase
Les lettres de chacuns des mots sont en majuscules ;
lowercase
Les lettres de chacuns des mots sont en minuscules ;
none
Aucun effet de capitalisation.
Dans chaque cas, la transformation effective dpend de l'criture de la langue en question. Voir RFC 2070
([RFC2070]) pour la dtermination de la langue utilise dans un lment.
Les agents utilisateurs conformes peuvent interprter la valeur de la proprit 'texttransform' comme tant 'none',
pour les caractres n'appartenant pas au rpertoire Latin1 et pour les lments dans certaines langues, langues
pour lesquelles la transformation serait diffrente de celle spcifie dans les tables de conversion de ISO 10646
([ISO10646]).
Exemple(s) :
Dans cet exemple, l'ensemble du texte des lments H1 est transform en capitales :
H1 { texttransform: uppercase }
Les agents utilisateurs conformes peuvent ignorer la proprit 'whitespace' des feuilles de style de l'auteur et de
l'utilisateur, mais pas dans la feuille de style par dfaut o une valeur doit tre spcifie pour celleci.
168
17 Les tables
17.1 Introduction aux tables
Les tables sont une reprsentation des relations entre des donnes. Les auteurs prcisent ces relations dans le
langage du document et prcisent la reprsentation de cellesci de deux manires, l'une visuelle et l'autre auditive.
Les auteurs peuvent spcifier la mise en forme d'une table sous la forme d'un quadrillage de cellules. Les ranges
et les colonnes de cellules peuvent s'organiser en groupes de ranges et en groupes de colonnes. Ces ranges,
colonnes, groupes de ranges, groupes de colonnes et cellules peuvent recevoir des bordures dessines autour
d'eux (en CSS2, selon deux modles de bordures). Les auteurs peuvent aligner les donnes ,dans un sens vertical ou
horizontal, dans la cellule ou dans toutes les cellules d'une range ou d'une colonne.
Les auteurs peuvent aussi spcifier le rendu auditif d'une table, comment les enttes et les donns seront dites.
Dans le langage du document, ceuxci peuvent tiqueter des cellules ou des groupes de cellules, quand il s'agit
d'un rendu auditif, pour que les cellules d'entte soit dites avant celles des donnes. Dans les faits, ceci "srialise"
la table : les utilisateurs consultant de faon auditive la table entendent la squence d'enttes suivie par celle des
donnes.
Exemple(s) :
Voici, dcrit en HTML 4.0, une table simple de trois ranges par trois colonnes :
<TABLE>
<CAPTION>Voici une table simple en 3x3</CAPTION>
<TR id="rangee1">
<TH>Entte 1
<TD>Cellule 1
<TD>Cellule 2
<TR id="rangee2">
<TH>Entte 2
<TD>Cellule 3
<TD>Cellule 4
<TR id="rangee3">
<TH>Entte 3
<TD>Cellule 5
<TD>Cellule 6
</TABLE>
Ce code cre une table (l'lment TABLE), trois ranges (les lments TR), trois cellules d'entte (les lment
TH) et six cellules de donnes (les lments TD). Noter que, dans l'exemple, les trois colonnes sont implicites : il
y en a autant dans la table que l'entte et les cellules de donns le demandent.
Cette rgle CSS centre le texte horizontalement dans les cellules d'entte et applique un style gras celles de
donnes :
TH { textalign: center; fontweight: bold }
La rgle suivante aligne le texte des cellules d'entte sur leur ligne de base et centre verticalement le texte de
chacune des cellules de donnes :
TH { verticalalign: baseline }
TD { verticalalign: middle }
Cette rgleci spcifie une bordure en trait plein bleu pais de 3px autour de la premire range et un trait plein
noir pais de 1px autour des ranges suivantes :
TABLE
TR#rangee1
TR#rangee2
TR#rangee3
{
{
{
{
bordercollapse: collapse }
bordertop: 3px solid blue }
bordertop: 1px solid black }
bordertop: 1px solid black }
Noter, cependant, que les bordures autour des ranges se recouvrent quand cellesci se rencontrent. De quelle
couleur (noir ou bleu) et de quelle paisseur (1px ou 3px) seront les bordures entre rangee1 et rangee2 ? Ce point
est abord dans le passage traitant de la rsolution des conflits de bordure.
Dans cette rgle, la lgende est place audessus de la table :
CAPTION { captionside: top }
169
Par exemple, la premire range serait dite "Entte, Cellule1, Cellule2". Par contre, avec cette rgle :
TH { speakheader: always }
Les divers lments des tables sont abords dans le chapitre qui suit. Dans cette spcification, le terme lment
de table se rfre tout lment impliqu dans la cration d'une table. Un lment de table "interne" est un de
ceux qui produisent une range, un groupe de ranges, une colonne, un groupe de colonnes ou une cellule.
{
{
{
{
{
{
{
{
{
display:
display:
display:
display:
display:
display:
display:
display:
display:
table }
tablerow }
tableheadergroup }
tablerowgroup }
tablefootergroup }
tablecolumn }
tablecolumngroup }
tablecell }
tablecaption }
Les agents utilisateurs peuvent ignorer ces valeurs de la proprit 'display' pour des documents HTML, car les
auteurs ne devraient pas modifier le comportement attendu pour un lment.
17.2.1 Les objets de table anonymes
Chaque lment table va automatiquement gnrer des objets de table anonymes autour de luimme, ceuxci
consistent d'au moins trois objets imbriqus qui correspondent aux lments avec la valeur 'table' ou 'inlinetable,
avec la valeur 'tablerow' et avec la valeur 'tablecell'.
Des langages de document autres que HTML peuvent ne pas contenir tous les lments du modle de table de
CSS2. Pour ceuxci, on doit supposer l'existence des lments "absents" pour que le modle puisse fonctionner.
Ces lments absents gnrent des objets anonymes (par exemple des botes anonymes dans la mise en forme de
la table) selon les rgles suivantes :
1. Quand le parent, not P, d'un lment 'tablecell', not T, n'est pas un lment 'tablerow', un objet
correspondant ce dernier sera gnr entre P et T. Cette objet recouvrira l'ensemble des lments
'tablecell' conscutifs de T de mme ascendance (dans l'arborescence du document) ;
2. Quand le parent P d'un lment 'tablerow' T n'est pas un lment 'table', 'inlinetable' ou
'tablerowgroup', un objet correspondant un lment 'table' sera gnr entre P et T. Cette objet
recouvrira l'ensemble des lments 'tablerow' conscutifs de T de mme ascendance (dans l'arborescence
du document), ceuxci requrant un parent 'table', savoir 'tablerow', 'tablerowgroup',
'tableheadergroup', 'tablefootergroup', 'tablecolumn', 'tablecolumngroup' et 'caption' ;
3. Quand le parent P d'un lment 'tablecolumn' n'est pas un lment 'table' T, 'inlinetable' ou
'tablecolumngroup', un objet correspondant un lment 'table' sera gnr entre P et T. Cet objet
recouvrira l'ensemble des lments 'tablecolumn' conscutifs de T de mme ascendance (dans
l'arborescence du document), ceuxci requrant un parent 'table', savoir 'tablerow', 'tablerowgroup',
'tableheadergroup', 'tablefootergroup', 'tablecolumn', 'tablecolumngroup' et 'tablecaption' ;
4. Quand le parent P d'un lment 'tablerowgroup' (ou 'tableheadergroup' ou 'tablefootergroup') T
n'est pas un lment 'table' ou 'inlinetable', un objet correspondant un lment 'table' est gnr entre P
et T. Cet objet recouvrira l'ensemble des lments conscutifs de T de mme ascendance (dans
l'arborescence du document), ceuxci requrant un parent 'table', savoir 'tablerow', 'tablerowgroup',
'tableheadergroup', 'tablefootergroup', 'tablecolumn', 'tablecolumngroup' et 'caption' ;
5. Quand un enfant T d'un lment 'table (ou 'inlinetable') P n'est pas un lment 'tablerowgroup',
'tableheadergroup', 'tablefootergroup' ou 'tablerow', un objet correspondant un lment
'tablerow' sera gnr entre P et T. Cet objet recouvrira l'ensemble des lments conscutifs de T de
mme ascendance, ceuxci n'tant pas des lments 'tablerowgroup', 'tableheadergroup',
'tablefootergroup' ou 'tablerow' ;
6. Quand un enfant T d'un lment 'tablerowgroup' (ou 'tableheadergroup' ou 'tablefootergroup') P
n'est pas un lment 'tablerow', un objet correspondant un lment 'tablerow' sera gnr entre P et T.
Cet objet recouvrira l'ensemble des lments conscutifs de T de mme ascendance, ceuxci n'tant pas
171
Example(s) :
Dans cet exempleci, on suppose que trois lments 'tablecell' contiennent les textes des lments ROW. Noter
que le texte est son tour encapsul dans des botes de ligne anonymes, ainsi que c'est expliqu dans le modle de
mise en forme visuel :
<STACK>
<ROW>Voici la range du <D>haut</D>.</ROW>
<ROW>Voici la range du <D>milieu</D>.</ROW>
<ROW>Voici la range du <D>bas</D>.</ROW>
</STACK>
Les agents utilisateurs HTML ne sont pas tenus de crer des objets anonymes selon les rgles prcites.
172
Schma d'une table avec une lgende suprieure, la marge du bas de la lgende fusionne avec celle du haut de la
table.
17.4.1 La position et l'alignement de la lgende
'captionside'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit indique la position de la bote de la lgende en fonction de celle de la table. Les significations des
valeurs sont :
top
Place la bote de la lgende audessus de celle de la table ;
bottom
Place la bote de la lgende audessous de celle de la table ;
left
Place la bote de la lgende gauche de celle de la table ;
right
Place la bote de la lgende droite de celle de la table.
173
Exemple(s) :
L'exemple suivant montre comment placer une lgende dans la marge de gauche. La table ellemme est centre,
ses marges gauche et droite ayant la valeur 'auto', et l'ensemble de la bote contenant la table et la lgende est
dplac dans la marge de gauche de la mme quantit que la largeur de la lgende :
BODY {
marginleft: 8em
}
TABLE {
marginleft: auto;
marginright: auto
}
CAPTION {
captionside: left;
marginleft: 8em;
width: 8em;
textalign: right;
verticalalign: bottom
}
En supposant que la largeur de la table est infrieure la largeur totale disponible, la mise en forme serait
similaire celleci :
174
Schma montrant une table centre dont la lgende se rpand dans la marge de gauche, en rponse la valeur
ngative d'une proprit 'marginleft'.
175
La seconde table est mise en forme selon l'illustration de droite. En HTML, le rendu de la table du premier
exemple n'est pas dfini explicitement, et en CSS pas du tout. Cette apprciation est laisse l'agent utilisateur
(ex. comme dans l'illustration de gauche).
gauche, une interprtation possible d'une table HTML 4.0 errone ; droite, la seule mise en forme possible
d'une table non HTML similaire.
17.5.1 Les couches de la table et la transparence
Dans le but de dterminer l'arrireplan de chacune des cellules de la table, on peut se reprsenter les divers
lments de celleci comme tant disposs sur six couches superposes. L'arrireplan d'un lment d'une couche
donne ne sera visible que si la couche qui vient pardessus celleci a un arrireplan transparent.
4.
non
sans objet
visuel
La proprit 'tablelayout' contrle l'algorithme employ pour la disposition des cellules, des ranges et des
colonnes de la table. Les significations des valeurs sont :
fixed
Utilisation de l'algorithme de disposition de table fixe ;
auto
Utilisation d'un quelconque algorithme automatique pour la disposition de la table.
Les deux algorithmes sont dcrits cidessous.
La disposition de table fixe
Avec cet algorithme (rapide), la disposition horizontale de la table ne dpend pas du contenu des cellules, mais
seulement de la largeur de la table, de la largeur des colonnes, des bordures et de l'espacement entre les cellules.
On peut spcifier explicitement la largeur de la table avec la proprit 'width'. Une valeur 'auto' (dans le cas de
'display: table' et 'display: inlinetable') conduit l'emploi de l'algorithme de disposition de table automatique.
Dans l'algorithme de disposition de table fixe, la largeur de chacune des colonnes est dtermine ainsi :
1. Quand un lment de colonne a une valeur pour la proprit 'width' autre que 'auto', alors cette valeur est
retenue pour la largeur de cette colonne ;
2. Autrement, quand une cellule de la premi range a une valeur pour la proprit 'width' autre que 'auto',
cette valeur est retenue pour la largeur de cette colonne. Si cette cellule s'tend sur plus d'une colonne, la
largeur est divises entre les colonnes concernes ;
3. Les ventuelles colonnes restantes se partagent quitablement l'espace horizontal restant de la table
(moins les bordures et l'espacement entre les cellules).
Ainsi la largeur de la table est la plus grande des valeurs entre celle de la proprit 'width' de l'lment table et la
somme des largeurs des colonnes (plus l'espacement entre les cellules et les bordures).
De cette faon, l'agent utilisateur peut commencer afficher la table ds la rception de la premire range
effectue. Les cellules des ranges suivantes n'affectent pas les largeurs des colonnes. Toute cellule dont le
contenu dborderait s'appuie sur la proprit 'overflow' pour dterminer le rognage, ou non, du contenu qui a
dbord.
La disposition de table automatique
Avec cet algorithme (qui ne demande gnralement pas plus de deux itrations), la largeur de la table est donne
par celles de ses colonnes et des bordures intermdiaires. Cet algorithme reflte le comportement de plusieurs
agents utilisateurs courants au moment de la rdaction de cette spcification. Les agents utilisateurs ne sont pas
tenus de l'implmenter pour la dtermination de la disposition de la table, dans le cas o la valeur de la proprit
'tablelayout' est 'auto', et peuvent alors employer un algorithme quelconque.
Cet algorithme peut tre inefficace, l'agent utilisateur devant avoir connaissance du contenu entier de la table
avant de dterminer la disposition finale, et demander plus d'une itration.
On dtermine les largeurs des colonnes comme ceci :
1. Calculer la largeur minimale du contenu, note LMC, de chaque cellule : le contenu mis en forme peut
s'tendre sur un nombre indiffrent de lignes mais ne doit pas dborder de la bote de la cellule. Si la
valeur, note L, spcifie pour la proprit 'width' de la cellule est plus grande que LMC, alors cette
valeur L devient la largeur minimale de la cellule. Pour une valeur L de la proprit 'width' gale 'auto',
c'est LMC qui correspond la largeur minimale de la cellule ;
Calculer galement la largeur "maximale" de la cellule pour chaque cellule : la mise en forme du contenu
se fait alors sans retours la ligne sinon aux endroits explicitement indiqus ;
2. Pour chacune des colonnes, dterminer une largeur minimale et maximale partir des cellules qui
s'tendent dans celleci. La largeur minimale correspond celle de la cellule qui demande la plus grande
largeur minimale de cellule (ou la valeur de la proprit 'width' de la colonne, la plus grande entre ces
178
Schma montrant les effets de diverses valeurs de la proprit 'verticalalign' sur les cellules d'une table.
Les botes des cellules 1 et 2 s'alignent sur leur ligne de base. La bote de cellule 2 ayant la plus grande hauteur
audessus de sa ligne de base, c'est elle qui dtermine la ligne de base de la range. Noter que, si aucune cellule
ne s'alignait sur sa ligne de base, la range n'aurait pas (ou n'aurait pas besoin) de ligne de base.
Pour viter des situations ambiges, l'alignement des cellules se dtermine dans cet ordre :
1. On positionne en premier les cellules alignes sur leur ligne de base. Ceci tablit la ligne de base de la
range. Ensuite, on positionne les cellules dont la valeur de la proprit 'verticalalign' est 'top' ;
2. La range a maintenant un haut, ventuellement une ligne de base et une hauteur provisoire qui
correspond la distance entre le haut et le point le plus bas des cellules positionnes jusqu'ici (voir les
conditions d'espacement de la cellule plus loin) ;
3. Si une des cellules restantes, celles qui sont alignes en bas ou au milieu, a une hauteur plus grande que la
hauteur provisoire, alors la hauteur de la range est augmente jusqu'au maximum de cellesci, en
dplaant le bas ;
4. Et finalement, on positionne les autres cellules.
Les botes de cellule moins grandes que la hauteur de la range reoivent un espacement supplmentaire en haut
ou en bas.
17.5.4 L'alignement horizontal dans une colonne
On spcifie l'alignement horizontal du contenu d'une cellule dans sa bote avec la proprit 'textalign'.
Pour plus d'une cellule dans une colonne, quand on spcifie une valeur de <chane> la proprit 'textalign', le
contenu de ces cellules s'aligne sur un axe vertical. Le dbut de la chane touche cet axe. C'est le sens de lecture
qui dtermine de quel ct se situe la chane par rapport l'axe.
Un alignement du texte de cette manire ne prsente un intrt que si le texte tient sur une seule ligne. Le rsultat
n'est pas dfini quand le contenu de la cellule s'tend sur plusieurs lignes.
180
Ceci fera que le signe montaire dollar va s'aligner sur le point dcimal. En complment, on a utilis le
pseudolment :before pour insrer le signe dollar devant chacun des chiffres. La table pourrait tre rendue ainsi
:
Appels hors circonscription :
$1.30
$2.50
$10.80
$111.01
$85.
$90
$.05
$.06
181
Les longueurs spcifient la distance qui sparent les bordures de cellules adjacentes. Quand on ne spcifie qu'une
longueur, ceci donne l'espacement horizontal et vertical. Quand on spcifie deux longueurs, la premire donne
l'espacement horizontal et la deuxime celui vertical. Ces longueurs ne peuvent pas tre ngatives.
Dans ce modle, chaque cellule a une bordure individuelle. La proprit 'borderspacing' indique la distance entre
les bordures de cellules adjacentes. Cet espace est combl par l'arrireplan de l'lment table. Les ranges,
colonnes, groupes de ranges et de colonnes ne peuvent pas avoir de bordures (c..d. les agents utilisateurs doivent
ignorer les proprits de bordure de ces lments).
Exemple(s) :
La table dont l'illustration suit pourrait tre le rsultat d'une feuille de style comme celleci :
TABLE
Une table dont la proprit 'borderspacing' n'a qu'une valeur de longueur. Noter que chacune des cellules a sa
propre bordure tout comme la table une bordure spare.
Les bordures autour des cellules vides : la proprit 'emptycells'
'emptycells'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
182
183
Dans le modle des bordures fusionnes, on peut spcifier les bordures de chacun des bords de chacune des
cellules avec les proprits de bordure pour les divers lments qui ont des bords communs (ceux des cellules,
ranges, groupes de ranges, colonnes, groupes de colonnes et de la table ellemme), ces bordures peuvent varier
en style, taille et couleur. En rgle gnrale, pour un bord donn, c'est le style de bordure "attirant le plus
l'attention" qui est retenu, sauf quand survient ventuellement la proprit 'borderstyle' avec une valeur 'hidden',
ce qui a pour effet inconditionnel de supprimer l'affichage de la bordure.
En cas de conflit, les rgles suivantes dterminent lequel des styles de bordure l'emporte :
1. Les bordures contrles par la proprit 'borderstyle' avec la valeur 'hidden' sont considres avant toutes
celles intervenant dans le conflit. Cette valeur cause la suppression de toutes les bordures cet endroit ;
2. Les bordures dont la valeur de la proprit 'borderstyle' est 'none' ont la plus faible priorit. Une bordure
ne sera omise que quand toutes les proprits de bordure des lments convergents sur ce bord auront une
valeur 'none' (noter en passant que c'est la valeur par dfaut pour la proprit 'borderstyle') ;
3. Si aucun des styles de bordure de ces lments n'est 'hidden' et au moins l'un d'entre eux n'est pas 'none',
alors les bordures les plus larges sont retenues, les plus troites rejetes. Si plusieurs d'entre eux ont la
mme valeur pour leur proprit 'borderwidth', alors on retiendra le style de bordure dans cet ordre de
priorit 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove' et enfin, celui de moindre poids, 'inset' ;
4. Si les styles de bordure ne diffrent que par leur couleur, alors le style de bordure d'une cellule l'emporte
sur celui d'une range, ce dernier l'emporte son tour sur celui d'un groupe de ranges, puis en succesion,
sur celui d'une colonne, sur celui d'un groupe de colonnes et finalement, sur celui de la table.
Exemple(s) :
L'exemple suivant illustre l'application de ces rgles de prsance. Soit la feuille de style :
TABLE
{ bordercollapse: collapse;
border: 5px solid yellow; }
*#col1
{ border: 3px solid black; }
TD
{ border: 1px solid red; padding: 1em; }
TD.solidblue { border: 5px dashed blue; }
TD.solidgreen { border: 5px solid green; }
184
Exemple(s) :
Voici un autre exemple de bordures fusionnes caches :
185
Cette proprit indique si les enttes de table sont parles avant chacune des cellules ou seulement avant une
cellule quand celleci est associe une entte diffrente de la cellule prcdente. Les significations des valeurs
sont :
once
L'entte est annonce une fois, avant une succession de cellules ;
always
L'entte est annonce chaque fois, avant chacune des cellules pertinentes.
Chaque langage de document peut avoir un mcanisme diffrent permettant aux auteurs la spcification des
enttes. Par exemple en HTML 4.0 ([HTML40]), on peut spcifier une information d'entte l'aide de trois
attributs diffrents ("headers", "scope" et "axis"), cette spcification prcisant un algorithme pour dterminer cette
information d'entte en l'absence de ces attributs.
186
Illustration d'une table dont les cellules d'entte ("San Jose" et "Seattle") ne se trouvent pas dans la mme range,
ou colonne, que les donnes auxquelles elles s'appliquent.
Cet exemple en HTML prsente les notes de frais, repas, htels et transport, pour un sjour de plusieurs jours dans
deux dplacements. Conceptuellement, on peut considrer cette table comme un espace en plusieurs dimensions.
Les enttes de cet espace sont : le lieu du dplacement, la date, la catgorie de frais et les soustotaux. Certaines
cellules dfinissent des repres le long d'un axe alors que d'autres reprsentent l'argent dpens, des points de cet
espace. Voici le balisage pour cette table :
<TABLE>
<CAPTION>Rapport de frais de dplacement</CAPTION>
<TR>
<TH></TH>
<TH>Repas</TH>
<TH>Htels</TH>
<TH>Transports</TH>
<TH>Soustotaux</TH>
</TR>
<TR>
<TH id="sanjose" axis="sanjose">San Jose</TH>
</TR>
<TR>
<TH headers="sanjose">25Aug97</TH>
<TD>37.74</TD>
<TD>112.00</TD>
<TD>45.00</TD>
<TD></TD>
</TR>
<TR>
<TH headers="sanjose">26Aug97</TH>
<TD>27.28</TD>
<TD>112.00</TD>
<TD>45.00</TD>
<TD></TD>
</TR>
<TR>
<TH headers="sanjose">subtotal</TH>
<TD>65.02</TD>
<TD>224.00</TD>
<TD>90.00</TD>
<TD>379.02</TD>
</TR>
<TR>
<TH id="seattle" axis="seattle">Seattle</TH>
</TR>
<TR>
<TH headers="seattle">27Aug97</TH>
<TD>96.25</TD>
<TD>109.00</TD>
<TD>36.00</TD>
<TD></TD>
</TR>
<TR>
<TH headers="seattle">28Aug97</TH>
<TD>35.00</TD>
<TD>109.00</TD>
<TD>36.00</TD>
<TD></TD>
187
En produisant le modle des donnes de cette manire, les auteurs autorisent une exploration plus riche de la table
par les navigateurs synthtiseurs de parole, par exemple, chaque cellule pourrait tre numre dans une liste,
l'entte concerne tant rpte avant chacune des cellules de donnes :
San Jose, 25Aug97, Repas : 37.74
San Jose, 25Aug97, Htels : 112.00
San Jose, 25Aug97, Transports : 45.00
...
188
18 L'interface utilisateur
18.1 Les curseurs : la proprit 'cursor'
'cursor'
Valeur :
Initiale :
S'applique
:
Hrite :
Pourcentage
:
Mdias :
[ [<uri> ,]* [ auto | crosshair | default | pointer | move | eresize | neresize | nwresize |
nresize | seresize | swresize | sresize | wresize| text | wait | help ] ] | inherit
auto
tous les lments
oui
sans objet
visuel, interactif
Cette proprit spcifie le type de curseur qui sera affich pour l'appareil de pointage. Les significations des
valeurs sont :
auto
L'agent utilisateur dtermine lequel des curseurs employer selon un contexte donn
crosshair
Une marque en croix (ex. deux traits formant un signe "+" ;
default
Le curseur par dfaut dpendant de la plateforme. Souvent rendu par une flche ;
pointer
Le curseur est reprsent par un doigt indiquant un lien ;
move
Indique un objet qu'on peut dplacer ;
eresize, neresize, nwresize, nresize, seresize, swresize, sresize, wresize
Indique que le bord d'un certain objet peut tre dplacer. Par exemple, la valeur 'seresize' est utilise
pour un mouvement commenant du coin sudest de la bote ;
text
Indique qu'on peut slectionner le texte. Souvent rendu par une barre en I ;
wait
Indique un programme en progression, l'utilisateur devrait en attendre l'achvement. Souvent rendu par
une montre ou un sablier ;
help
Une aide est disponible pour l'objet survol par le curseur. Souvent rendu par un point d'interrogation ou
une bulle ;
<uri>
L'agent utilisateur charge le curseur partir de la ressource dsigne par l'URI. Quand l'agent utilisateur,
dans une liste de curseur, ne peut pas prendre en charge le premier curseur, il devrait essayer avec le
deuxime, et ainsi de suite. Si celuici ne peut rien faire avec aucun des curseurs de la liste, il doit utiliser
le curseur gnrique plac la fin de celleci.
Exemple(s) :
P { cursor : url("mything.cur"), url("second.csr"), text; }
'outlinewidth'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
<bordurepaisseur> | inherit
medium
tous les lments
non
sans objet
visuel, interactif
'outlinestyle'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
<bordurestyle> | inherit
none
tous les lments
non
sans objet
visuel, interactif
'outlinecolor'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Le contour produit par les proprits de contour est dessin "par dessus" la bote, c..d. le contour est toujours
audessus de celleci et n'influence pas sur son placement ou sur sa taille, et sur aucune des autres botes. De ce
fait, l'affichage, ou la suppression, des contours ne provoque pas une nouvelle mise en forme de la page.
Le contour est dessin juste en dehors du bord de la bordure.
Les contours peuvent avoir une forme non rectangulaire. Par exemple, quand un lment est distribu sur
plusieurs lignes, le contour correspond celui minimum qui englobe toutes les botes de l'lment. l'inverse des
bordures, le contour ne s'ouvre pas la fin ou au dbut de la bote de ligne, et celuici est toujours entirement
connect.
La proprit 'outlinewidth' admet les mmes valeurs que celles de la proprit 'borderwidth'.
191
On peut employer un script pour le changement dynamique de l'paisseur du contour, sans induire une remise en
forme de la page.
18.4.1 Les contours et la slection [ndt. focus]
Les interfaces graphiques des utilisateurs peuvent employer des contours autour des lments pour confirmer
ceuxci lequel des lments de la page est slectionn. Ces contours s'ajoutent aux ventuelles bordures de ces
lments, leur slection ou dslection ne devant pas provoquer une nouvelle mise en forme de la page. La
slection d'un lment d'un document relve d'une action de l'utilisateur (ex. saisie d'un texte, slection d'un
bouton, etc.). Les agents utilisateurs reconnaissant le groupe de mdia interactif doivent conserver l'information
relative l'endroit o intervient la slection et doivent aussi en donner une reprsentation. Ceci peut tre ralis
l'aide de contours dynamiques en conjonction avec la pseudoclasse :focus.
Exemple(s) :
Par exemple, on peut employer les rgles suivantes pour faire apparatre un trait noir pais autour d'un lment
slectionn, ce trait devenant rouge quand on l'active :
:focus { outline: thick solid black }
:active { outline: thick solid red }
18.5 La magnification
Le groupe de travail de CSS considre que la magnification d'un document, ou de parties de celuici, ne devrait
pas tre spcifie par des feuilles de style. Les agents utilisateurs peuvent en avoir une interprtation de diffrentes
faons (ex. images agrandies, volumes sonores augments, etc.).
Lors de la magnification d'une page, les agents utilisateurs devraient conserver les relations entre les lments
positionns. Par exemple, une bande dessine peut se composer d'images sur lesquelles viennent s'appliquer des
lments de texte. Quand un agent utilisateur magnifie celleci, le texte devrait rester dans les bulles de la bande
dessine.
192
Ceci va conduire le synthtiseur de parole dire les enttes avec une voix (un peu comme une "police auditive")
appele "paul", d'un ton neutre mais avec des intonations fortes. Avant la lecture de cellesci, un chantillon
sonore, dsign par l'URI, sera jou. Les paragraphes avec la classe "heidi" sembleront venir de l'avant gauche
(pourvu que le systme sonore soit capable de spacialisation audio) et ceux avec la classe "peter" venir de la
droite. Les paragraphes avec la classe "goat" seront dit trs doucement.
Le volume se rfre la valeur moyenne de la forme de la vibration. En d'autres mots, une voix avec de fortes
inflexions pour un volume de 50 pourrait trs bien se situer audel de cette moyenne. Ces valeurs globales seront
vraisemblablement ajustes par une action humaine pour un certain confort (avec pour effet d'augmenter
proportionnellement les valeurs 0 et 100) ; cette proprit permet le rglage de l'chelle dynamique.
Les significations des valeurs sont :
<nombre>
Tout nombre compris en tre '0' et '100'. La valeur '0' reprsente le volume du niveau minimum audible et
la valeur '100' correspond celui du maximum de confort ;
<pourcentage>
Les valeurs en pourcentage sont calcules par rapport la valeur hrite, et sont ensuite rognes pour se
ranger dans l'chelle de '0' '100' ;
193
Cette proprit spcifie si un texte aura un rendu auditif, et si c'est le cas, la manire de ce rendu (d'une faon
analogue la proprit 'visibility' et, parfois, la proprit 'display'). Les valeurs admises sont :
none
Supprime le rendu auditif de manire ce qu'un lment donn ne consomme pas de temps pour ce rendu.
Noter, cependant, que les descendants peuvent surclasser cette valeur et ainsi tre lus. Pour compltement
supprimer le rendu d'un lment et de ses descendants, utiliser la proprit 'display') ;
normal
Suit les rgles de prononciation propres de la langue pour le rendu auditif d'un lment et de ses enfants
;
spellout
pelle le texte, lettre par lettre (utile pour les acronymes et les abrviations).
Noter la diffrence entre un lment dont la valeur de la proprit 'volume' est 'silent' et un lment dont la valeur
de la proprit 'speak' est 'none'. Le premier lment aurait la mme dure que s'il avait t lu, y compris les
pauses avant et aprs celuici, aucun son n'tant produit. Le second n'a aucune dure et n'est pas rendu (bien que
ses descendants puissent l'tre).
'pauseafter'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Ces proprits spcifient la pause observer avant que le contenu d'un lment ne soit lu, ou aprs qu'il l'ait t.
Les significations des valeurs sont :
<dure>
Exprime la pause dans une unit de dure absolue (secondes et millisecondes) ;
<pourcentage>
Se rapporte la valeur inverse de la proprit 'speechrate'. Par exemple, si la valeur de celleci est de
120 mots par minute (c..d. un mot dure une demiseconde ou 500ms) alors une valeur de 100% pour la
proprit 'pausebefore' signifie une pause de 500ms et une valeur de 20% une pause de 100ms.
La pause s'insre entre le contenu de l'lment et les contenus ventuels des proprits 'cuebefore' ou 'cueafter'.
Les auteurs devraient employer des units relatives pour crer des feuilles de style plus robustes quand le dbit de
la parole varie beaucoup.
'pause'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
La proprit raccourcie 'pause' regroupe les spcifications des proprits individuelles 'pausebefore' et
'pauseafter'. Quand on lui donne deux valeurs, la premire s'applique la proprit 'pausebefore' et la seconde
la proprit 'pauseafter'. Pour une seule valeur, celleci s'applique ces deux proprits.
Exemple(s) :
H1 { pause: 20ms } /* pausebefore: 20ms; pauseafter: 20ms */
H2 { pause: 30ms 40ms } /* pausebefore: 30ms; pauseafter: 40ms */
H3 { pauseafter: 10ms } /* pausebefore: ?; pauseafter: 10ms */
'cueafter'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
'cue'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
La proprit raccourcie 'cue' regroupe les spcifications des proprits individuelles 'cuebefore' et 'cueafter'.
Quand on lui donne deux valeurs, la premire s'applique la proprit 'cuebefore' et la seconde la proprit
'cueafter'. Pour une seule valeur, celleci s'applique ces deux proprits.
Exemple(s) :
Ces deux rgles sont quivalentes :
H1 {cuebefore: url("pop.au"); cueafter: url("pop.au") }
H1 {cue: url("pop.au") }
Quand un agent utilisateur ne peut rendre une image auditive (ex. l'environnement de l'utilisateur ne le permettant
pas), on recommande que celuici produise un signal alternatif (ex. un message d'avertissement, l'mission d'un
bip sonore, etc.).
Voir les passages sur les pseudolments :before et :after pour des informations sur les aspects techniques de la
gnration de contenu.
Semblable aux proprits 'cuebefore' et 'cueafter', cette proprit spcifie le son jouer en arrireplan, au
cours de la lecture de l'lment. Les significations des valeurs sont :
<uri>
Le son dsign par cet <uri> est jou en arrireplan du contenu de l'lment en train dtre lu ;
mix
Si prsent, ce motcl indique que le son, celui hrit de la proprit 'playduring' du parent de l'lment
en question, continuant d'tre jou, est mix avec celui dsign par la proprit <uri>. Quand cette valeur
'mix' n'est pas spcifie, le son d'arrireplan de l'lment en question remplace celui de son parent ;
repeat
Si prsent, ce motcl indique que le son se rptera quand celuici est trop court pour le temps de la
lecture d'un lment donn. Autrement, le son est jou une seule fois et puis s'arrte. Ceci est similaire la
proprit 'backgroundrepeat'. Quand le son est trop long pour la dure de l'lment, on rogne ce son
quand l'lment a fini d'tre lu ;
auto
196
197
/* 60deg */
/* 120deg */
/* 180deg */
Quand on spcifie un azimuth spatial, l'appareil de sortie ne pouvant produire de sons en arrire de la position de
l'auditeur, les agents utilisateurs devraient convertir ces valeurs de l'hmisphre arrire pour les ramener vers
l'hmisphre avant. En voici une mthode :
si 90deg < x <= 180deg alors x := 180deg x
si 180deg < x <= 270deg alors x := 540deg x
'elevation'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
{
{
{
{
elevation:
elevation:
elevation:
elevation:
above
60deg
30deg
level
}
}
}
}
sans objet
auditif
Cette proprit spcifie le dbit de la parole. Noter que des valeurs de motscls absolus et relatifs sont la fois
admises ( comparer avec la proprit 'fontsize'). Les significations des valeurs sont :
<nombre>
Spcifie le dbit de parole en mots par minute, celuici, bien que variant selon la langue, est une quantit
largement reconnue par les synthtiseurs de parole ;
xslow
quivaut 80 mots par minute ;
slow
quivaut 120 mots par minute ;
medium
quivaut 180 200 mots par minute ;
fast
quivaut 300 mots par minute ;
xfast
quivaut 500 mots par minute ;
faster
Ajoute 40 mots par minute au dbit courant ;
slower
Soustrait 40 mots par minute au dbit courant.
'voicefamily'
Valeur :
Initiale :
S'applique
:
Hrite :
Pourcentage
:
Mdias :
La valeur est une liste de noms de familles de voix, ceuxci spars par une virgule et par ordre de priorit (
comparer avec 'fontfamily'). Les significations des valeurs sont :
<voixgnrique>
Ce sont des familles de voix. Les valeurs admises sont 'male', 'female' et 'child' ;
<voixspcifique>
Ces valeurs sont des instances spcifiques (ex. comedian, trinoids, carlos, lani, etc.) ;
Exemple(s) :
H1 { voicefamily: announcer, male }
P.part.romeo { voicefamily: romeo, male }
P.part.juliet { voicefamily: juliet, female }
On peut mettre les noms des voix spcifiques entre guillemets et on doit en effet le faire si un mot ventuel
formant le nom ne se conforme pas aux rgles de syntaxe pour les identifiants. On recommande aussi les
guillemets pour les noms des voix spcifiques composs de plusieurs mots. Si on omet ces guillemets, les
caractres blancs survenant avant ou aprs le nom de la famille de voix sont ignors et les squences ventuelles
de ceuxci sont converties en un seul espace.
'pitch'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit spcifie la tonalit moyenne (une frquence) de la voix. Celleci dpend de la famille de voix. Par
exemple, la tonalit moyenne pour une voix masculine se situe aux alentours de 120Hz et pour une voix fminine
199
<nombre> | inherit
50
tous les lments
oui
sans objet
auditif
Cette proprit spcifie la variation d'une tonalit moyenne. La perception de la tonalit d'une voix humaine est
dtermine par la frquence fondamentale, la valeur typique de celleci tant 120Hz pour une voix masculine et
210Hz pour une voix fminine. Les langues humaines comportent des inflexions et des tonalits variables, ces
variations vhiculent des significations supplmentaires et des accentuations. Ainsi, une voix exalte, qui a
beaucoup d'inflexions, affiche une grande variation de tonalit. Cette proprit donne l'tendue de cette variation,
c..d. de combien la frquence fondamentale peut dvier par rapport la tonalit moyenne.
Les significations des valeurs sont :
<nombre>
Une valeur entre '0' et '100'. Une variation de tonalit de '0' produit une voix terne et monotone. Une
variation de '50' correspond une voix avec des inflexions normales. Pour des valeur suprieures '50', la
voie devient de plus en plus exalte.
'stress'
Valeur :
Initiale :
S'applique ::
Hrite :
Pourcentage :
Mdias :
<nombre> | inherit
50
tous les lments
oui
sans objet
auditif
Cette proprit spcifie la hauteur des "pics locaux" dans le profil de l'intonation d'une voix. Par exemple, l'anglais
est une langue accentue, diffrentes parties d'une phrase recevant une accentuation primaire, secondaire ou
tertiaire. La valeur de la proprit 'stress' rgit l'ampleur de l'inflexion survenant l'endroit de ces accentuations.
Cette proprit s'utilise en conjonction avec la proprit 'pitchrange' et permet aux dveloppeurs l'exploitation
d'appareils auditifs de haute performance.
Les significations des valeurs sont :
<nombre>
Une valeur entre '0' et '100'. L'interprtation de celleci dpend de la langue employe. Soit, par exemple,
une valeur de '50' pour une voix masculine moyenne anglaise (tonalit moyenne = 122Hz) avec une
intonation et une accentuation normale, toutes choses tant gales, une voix italienne aurait un autre sens.
'richness'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
<nombre> | inherit
50
tous les lments
oui
sans objet
auditif
Cette proprit spcifie l'ampleur, ou la clart, d'une voix. Une voix ample va "porter" dans une grande pice, au
contraire d'une voix douce (le terme "douce" se rfre au dessin de la forme de la vibration).
200
Cette proprit spcifie comment lire les signes de ponctuation. Les significations des valeurs sont :
code
Les signes de ponctuation, telles que les pointvirgules, les accolades et tout le reste, sont lues
litralement ;
none
Les signes de ponctuation ne sont pas lus, mais plutt rendus naturellement, avec des pauses diverses.
'speaknumeral'
Valeur :
Initiale :
S'applique :
Hrite :
Pourcentage :
Mdias :
Cette proprit contrle la faon de lire les nombres. Les significations des valeurs sont :
digits
Lit les nombres dcomposs en leurs chiffres individuels. Ainsi, le nombre "237" est lu "deux trois sept" ;
continuous
Lit les nombres dans leur forme globale. Ainsi, le nombre "237" est lu "deux cent trente sept", leur
reprsentation textuelles dpendant de la langue.
201
202
Appendices
Appendice A : Un exemple de feuille de style pour HTML 4.0
Cet appendice est informatif, et non normatif.
Cette feuille de style dcrit la mise en forme typique de tous les lments HTML 4.0 ([HTML40]) partir d'un
examen approfondi des pratiques des agents utilisateurs actuels. On encourage les dveloppeurs l'utiliser comme
feuille de style par dfaut pour leurs implmentations.
La prsentation complte de certains lments HTML n'est pas exprimable en CSS2, ainsi les lments remplacs
(IMG, OBJECT), des scripts (SCRIPT, APPLET), des contrles des formulaires et des cadres.
ADDRESS,
BLOCKQUOTE,
BODY, DD, DIV,
DL, DT,
FIELDSET, FORM,
FRAME, FRAMESET,
H1, H2, H3, H4,
H5, H6, IFRAME,
NOFRAMES,
OL, P, UL,
CENTER, DIR,
HR, MENU, PRE
{
OBJECT, APPLET {
LI
{
HEAD
{
TABLE
{
TR
{
THEAD
{
TBODY
{
TFOOT
{
COL
{
COLGROUP
{
TD, TH
{
CAPTION
{
TH
{
CAPTION
{
BODY
{
H1
{
H2
{
H3
{
H4, P,
BLOCKQUOTE, UL,
FIELDSET, FORM,
OL, DL, DIR,
MENU
{
H5
{
H6
{
H1, H2, H3, H4,
H5, H6, B,
STRONG
{
BLOCKQUOTE
{
I, CITE, EM,
VAR, ADDRESS
{
PRE, TT, CODE,
KBD, SAMP
{
PRE
{
BIG
{
SMALL, SUB, SUP {
SUB
{
SUP
{
S, STRIKE, DEL {
HR
{
OL, UL, DIR,
MENU, DD
{
OL
{
OL UL, UL OL,
UL UL, OL OL
{
U, INS
{
CENTER
{
BR:before
{
display: block }
display: inline }
display: listitem }
display: none }
display: table }
display: tablerow }
display: tableheadergroup }
display: tablerowgroup }
display: tablefootergroup }
display: tablecolumn }
display: tablecolumngroup }
display: tablecell }
display: tablecaption }
fontweight: bolder; textalign: center }
textalign: center }
padding: 8px; lineheight: 1.12em }
fontsize: 2em; margin: .67em 0 }
fontsize: 1.5em; margin: .83em 0 }
fontsize: 1.17em; margin: 1em 0 }
margin: 1.33em 0 }
fontsize: .83em; lineheight: 1.17em; margin: 1.67em 0 }
fontsize: .67em; margin: 2.33em 0 }
fontweight: bolder }
marginleft: 40px; marginright: 40px }
fontstyle: italic }
fontfamily: monospace }
whitespace: pre }
fontsize: 1.17em }
fontsize: .83em }
verticalalign: sub }
verticalalign: super }
textdecoration: linethrough }
border: 1px inset }
marginleft: 40px }
liststyletype: decimal }
margintop: 0; marginbottom: 0 }
textdecoration: underline }
textalign: center }
content: "\A" }
203
204
{ margin: 10%
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
206
207
209
Le systme d'exploitation Windows95 utilise les informations des rubriques Famille, Style Serif et Proportion
pour la slection et la correspondance d'une police.
On donne ciaprs la signification des dix chiffres avec leurs valeurs admises (entre parenthses), pour le cas le
plus courant o le chiffre pour la "famille" est 2 texte et affichage (quand le premier chiffre a une
valeur diffrente, les neufs chiffres restants prennent un autre sens). Pour des dtails supplmentaires sur
Panose1, voir [PANOSE].
Famille
Tous (0)
Pas de correspondance (1)
[PANOSE] Texte et affichage latins (2)
[PANOSE] criture latine (3)
[PANOSE] Dcoratif latin (4)
[PANOSE] Pictural latin (5)
Style des srifs
Tous (0)
Pas de correspondance (1)
Anse (2)
Anse obtuse(3)
Anse carre (4)
Anse obtuse carre (5)
Carr (6)
Mince (7)
Arte (8)
Exagre (9)
Triangulaire (10)
Normal Sans (11)
Obtus Sans (12)
Perpendiculaire Sans (13)
vas (14)
Arrondi (15)
Graisse
Tous (0)
Pas de correspondance (1)
Very Light (2)[100]
Light (3) [200]
210
Tous (0)
Pas de correspondance (1)
Ancienne mode (2)
Moderne (3)
Largeur galise (4)
largie (5)
troite (6)
Trs largie (7)
Trs troite (8)
Monospace (9)
Contraste
Tous (0)
Pas de correspondance (1)
Aucun (2)
Trs faible (3)
Faible (4)
Moyen faible (5)
Moyen (6)
Moyen grand (7)
Grand (8)
Trs grand (9)
Variation du trait
Tous (0)
Pas de correspondance (1)
Aucune variation (2)
Graduelle/Diagonale (3)
Graduelle/Transitionnelle (4)
Graduelle/Verticale (5)
Graduelle/Horizontale (6)
Rapide/Verticale (7)
Rapide/Horizontale (8)
Instantane/Horizontale (9)
Instantane/Verticale (10)
Style des branches
Tous (0)
Pas de correspondance (1)
Branches droites/Horizontal (2)
Branches droites/Cal (3)
Branches droites/Vertical (4)
Branches droites/Serif simple (5)
Branches droites/Serif double (6)
Branches non droites/Horizontal (7)
Branches non droites/Cal (8)
Branches non droites/Vertical 90)
Branches non droites/Serif simple (10)
Branches non droites/Serif double (11)
Forme de la lettre
Tous (0)
Pas de correspondance (1)
Normale/Touchante (2)
Normale/quilibre (3)
Normale/Encadre (4)
Normale/Aplatie (5)
Normale/Arrondie (6)
Normale/Dcentre (7)
Normale/Carre (8)
211
La valeur Panose2 n'est incorpore aucun format de police connu, nanmoins on peut la mesurer.
212
Bloc Adresse
Nom de l'ensemble
tendue Unicode
0
1
2
3
1
2
4
8
Latin de base
Supplment Latin1
Latin1 tenduA
Latin tenduB
U+07F
U+80FF
U+10017F
U+18024F
4
5
6
7
1
2
4
8
Extensions IPA
Lettres modifiant l'espacement
Combinaisons de marques diacritiques
Grec
U+2502AF
U+2B02FF
U+30036F
U+3703CF
8
9
10
11
1
2
4
8
U+3D03EF
U+4004FF
U+53058F
U+5905FF
12
Quelles tendues ?
13
14
15
2
4
8
Hbreu tenduA
Hbreu tenduB
Arabe
Arabe tendu
Devanagari
16
17
18
19
1
2
4
8
Bengali
Gurmukhi
Gujarati
Oriya
U+9809FF
U+A00A7F
U+A80AFF
U+B00B7F
20
21
22
23
1
2
4
8
Tamil
Telugu
Kannada
Malayalam
U+B80BFF
U+C00C7F
U+C80CFF
U+D00D7F
24
25
26
27
1
2
4
8
Thai
Lao
Georgien
Georgien tendu
U+E00E7F
U+E80EFF
U+10A010EF
U+10F010FF ?
28
29
30
31
1
2
4
8
Hangul Jamo
Latin tendu supplmentaire
Grec tendu
Ponctuation gnrale
U+110011FF
U+1F001FFF
U+2000206F
32
Exposants et indices
U+60069F
U+6706FF
U+90097F
213
2
4
8
Symboles montaires
U+20A020CF
Combinaisons de marques pour les symboles U+20D020FF
Symboles avec un aspect de lettre
U+2100214F
36
37
38
39
1
2
4
8
Formes numriques
Flches
Oprateurs mathmatiques
Divers techniques
U+2150218F
U+219021FF
U+220022FF
U+230023FF
40
41
42
43
1
2
4
8
Dessins de contrle
Reconnaissance optique des caractres
Les alphanumriques inclus
Dessins de botes
U+2400243F
U+2440245F
U+246024FF
U+2500257F
44
45
46
47
1
2
4
8
lments d'ensemble
Formes gomtriques
Symboles divers
Dingbats
U+2580259F
U+25A025FF
U+260026FF
U+270027BF
48
49
50
51
1
2
4
8
U+3000303F
U+3040309F
U+30A030FF
U+3100312F
52
53
54
55
1
2
4
8
U+3130318F
?
U+320032FF
U+330033FF
56
59
1
8
Hangul
CJK Idogrammes unifis
U+AC00D7FF
U+4E009FFF
60
61
62
63
1
2
4
8
U+E000F8FF
U+F900FAFF
U+FB00FB4F
U+FB50FDFF
64
65
66
67
1
2
4
8
Combinaisons de demimarques
CJK Formes de compatibilit
Petites variantes de forme
FormesB de prsentation arabe
U+FE20FE2F
U+FE30FE4F
U+FE50FE6F
U+FE70FEFF
68
69
1
2
214
Type 1
TrueType et OpenType
Dans la table bsln, on peut utiliser la ligne de base idographique centrale pour des
successions majoritaires de caractres idographiques, la ligne de base idographique
infrieure convenant mieux un jet de caractres majoritairement latins, grecs ou cyrilliques.
215
D.1 La grammaire
La grammaire cidessous est LL(1) (mais noter que la plupart des agents utilisateurs ne devraient pas l'employer
telle quelle car celleci n'exprime pas les conventions d'interprtation, mais seulement la syntaxe CSS2). Le
format de ces productions est optimis pour une consultation humaine, certaines notations raccourcies allant
audel de Yacc (voir [YACC]) tant employes :
* : 0 ou plus ;
+ : 1 ou plus ;
? : 0 ou 1 ;
| : alternatives spares ;
[ ] : regroupement.
Voici les productions :
stylesheet
: [ CHARSET_SYM S* STRING S* ';' ]?
[S|CDO|CDC]* [ import [S|CDO|CDC]* ]*
[ [ ruleset | media | page | font_face ] [S|CDO|CDC]* ]*
;
import
: IMPORT_SYM S*
[STRING|URI] S* [ medium [ ',' S* medium]* ]? ';' S*
;
media
: MEDIA_SYM S* medium [ ',' S* medium ]* '{' S* ruleset* '}' S*
;
medium
: IDENT S*
;
page
: PAGE_SYM S* IDENT? pseudo_page? S*
'{' S* declaration [ ';' S* declaration ]* '}' S*
;
pseudo_page
: ':' IDENT
;
font_face
: FONT_FACE_SYM S*
'{' S* declaration [ ';' S* declaration ]* '}' S*
;
operator
: '/' S* | ',' S* | /* vide */
;
combinator
: '+' S* | '>' S* | /* vide */
;
unary_operator
: '' | '+'
;
property
: IDENT S*
;
ruleset
: selector [ ',' S* selector ]*
'{' S* declaration [ ';' S* declaration ]* '}' S*
;
selector
: simple_selector [ combinator simple_selector ]*
;
216
[09af]
[\200\377]
\\{h}{1,6}[ \t\r\n\f]?
{unicode}|\\[ ~\200\377]
[az_]|{nonascii}|{escape}
[az09_]|{nonascii}|{escape}
\"([\t !#$%&(~]|\\{nl}|\'|{nonascii}|{escape})*\"
\'([\t !#$%&(~]|\\{nl}|\"|{nonascii}|{escape})*\'
ident
name
num
string
url
w
nl
range
{nmstart}{nmchar}*
{nmchar}+
[09]+|[09]*"."[09]+
{string1}|{string2}
([!#$%&*~]|{nonascii}|{escape})*
[ \t\r\n\f]*
\n|\r\n|\r|\f
\?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h})))))
%%
[ \t\r\n\f]+
{return S;}
217
"<!"
">"
"~="
"|="
{return
{return
{return
{return
CDO;}
CDC;}
INCLUDES;}
DASHMATCH;}
{string}
{return STRING;}
{ident}
{return IDENT;}
"#"{name}
{return HASH;}
"@import"
"@page"
"@media"
"@fontface"
"@charset"
{return
{return
{return
{return
{return
"!{w}important"
{return IMPORTANT_SYM;}
{num}em
{num}ex
{num}px
{num}cm
{num}mm
{num}in
{num}pt
{num}pc
{num}deg
{num}rad
{num}grad
{num}ms
{num}s
{num}Hz
{num}kHz
{num}{ident}
{num}%
{num}
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
{return
IMPORT_SYM;}
PAGE_SYM;}
MEDIA_SYM;}
FONT_FACE_SYM;}
CHARSET_SYM;}
EMS;}
EXS;}
LENGTH;}
LENGTH;}
LENGTH;}
LENGTH;}
LENGTH;}
LENGTH;}
ANGLE;}
ANGLE;}
ANGLE;}
TIME;}
TIME;}
FREQ;}
FREQ;}
DIMEN;}
PERCENTAGE;}
NUMBER;}
{return UNICODERANGE;}
{return UNICODERANGE;}
{return *yytext;}
219
Appendice E : Rfrences
E.1 Les rfrences normatives
[COLORIMETRY]
"Colorimetry, Second Edition", CIE Publication 15.21986, ISBN 3900734003.
Disponible http://www.hike.te.chibau.ac.jp/ikeda/CIE/publ/abst/15286.html ;
[CSS1]
"Cascading Style Sheets, level 1", H. W. Lie and B. Bos, 17 December 1996.
Disponible http://www.w3.org/TR/RECCSS1961217.html ;
[FLEX]
"Flex: The Lexical Scanner Generator", Version 2.3.7, ISBN 1882114213 ;
[HTML40]
"HTML 4.0 Specification", D. Raggett, A. Le Hors, I. Jacobs, 8 July 1997.
Disponible http://www.w3.org/TR/REChtml40/. Ce document dfinit trois dfinitions de type de
document, Strict, Transitional et Frameset, cellesci tant atteignables depuis cette Recommandation ;
[IANA]
"Assigned Numbers", STD 2, RFC 1700, USC/ISI, J. Reynolds and J. Postel, October 1994.
Disponible ftp://ftp.internic.net/rfc/rfc1700.txt ;
[ICC32]
"ICC Profile Format Specification, version 3.2", 1995.
Disponible ftp://sgigate.sgi.com/pub/icc/ICC32.pdf ;
[ISO8879]
ISO 8879:1986 "Information Processing Text and Office Systems Standard Generalized Markup
Language (SGML)", ISO 8879:1986.
Pour une liste des entits SGML, consulter ftp://ftp.ifi.uio.no/pub/SGML/ENTITIES/ ;
[ISO10646]
"Information Technology Universal Multiple Octet Coded Character Set (UCS) Part 1: Architecture
and Basic Multilingual Plane", ISO/IEC 106461:1993. La spcification actuelle prend aussi en
considration les cinq premiers amendements ISO/IEC 106461:1993. On peut consulter utilement les
documents relatifs BMP et au plan 1 qui montrent l'emplacement des critures par rapport celui des
tendues numriques ;
[PNG10]
"PNG (Portable Network Graphics) Specification, Version 1.0 specification", T. Boutell ed., 1 October
1996.
Disponible http://www.w3.org/pub/WWW/TR/RECpngmulti.html ;
[RFC1808]
"Relative Uniform Resource Locators", R. Fielding, June 1995.
Disponible ftp://ds.internic.net/rfc/rfc1808.txt ;
[RFC2045]
"Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", N. Freed
and N. Borenstein, November 1996.
Disponible ftp://ftp.internic.net/rfc/rfc2045.txt. Noter que cet RFC2045 annule RFC1521, RFC1522 et
RFC1590 ;
[RFC2068]
"HTTP Version 1.1 ", R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, and T. BernersLee, January
1997.
Disponible ftp://ftp.internic.net/rfc/rfc2068.txt ;
[RFC2070]
"Internationalization of the HyperText Markup Language", F. Yergeau, G. Nicol, G. Adams, and M.
Drst, January 1997.
Disponible ftp://ds.internic.net/rfc/rfc2070.txt ;
[RFC2119]
"Key words for use in RFCs to Indicate Requirement Levels", S. Bradner, March 1997.
Disponible ftp://ds.internic.net/rfc/rfc2119.txt ;
[RFC2318]
"The text/css Media Type", H. Lie, B. Bos, C. Lilley, March 1998.
Disponible ftp://ds.internic.net/rfc/rfc2318.txt ;
[RFC1738]
"Uniform Resource Locators", T. BernersLee, L. Masinter, and M. McCahill, December 1994.
Disponible ftp://ds.internic.net/rfc/rfc1738.txt ;
[SRGB]
"Proposal for a Standard Color Space for the Internet sRGB", M. Anderson, R. Motta, S. Chandrasekar,
M. Stokes.
220
222
Valeurs
Valeur
initiale
S'applique
(dfaut : all)
'azimuth'
center
oui
'background'
['backgroundcolor' || 'backgroundimage'
|| 'backgroundrepeat' ||
'backgroundattachment'
|| 'backgroundposition'] | inherit
voir les
proprits
indivi
duelles
non
'backgroundattachment'
scroll
non
visuel
'backgroundcolor'
transparent
non
visuel
'backgroundimage'
none
non
visuel
'backgroundposition'
0% 0%
'backgroundrepeat'
repeat
non
visuel
'border'
[ 'borderwidth' || 'borderstyle' ||
<couleur> ] | inherit
voir les
proprits
indivi
duelles
non
visuel
'bordercollapse'
collapse
oui
visuel
'bordercolor'
voir les
proprits
indivi
duelles
non
visuel
'borderspacing'
oui
visuel
'borderstyle'
<bordurestyle>{1,4} | inherit
voir les
proprits
indivi
non
visuel
Hrite ?
non
Pourcentage
Groupes de
(dfaut : sans objet)
mdias
auditif
admis pour
'background
position'
se rapporte la taille
de la bote
ellemme
visuel
visuel
duelles
'bordertop'
'borderright'
'borderbottom'
'borderleft'
[ 'bordertopwidth' || 'borderstyle' ||
<couleur> ] | inherit
voir les
proprits
indivi
duelles
non
visuel
'bordertopcolor'
'borderrightcolor'
'borderbottomcolor'
'borderleftcolor'
<couleur> | inherit
la valeur de la
proprit
'color'
non
visuel
'bordertopstyle'
'borderrightstyle'
'borderbottomstyle'
'borderleftstyle'
<bordurestyle> | inherit
none
non
visuel
'bordertopwidth'
'borderrightwidth'
'borderbottomwidth'
'borderleftwidth'
<bordurepaisseur> | inherit
medium
non
visuel
'borderwidth'
<bordurepaisseur>{1,4} | inherit
voir les
proprits
indivi
duelles
non
visuel
'bottom'
auto
lments positionns
non
'captionside'
top
oui
visuel
'clear'
none
non
visuel
'clip'
auto
non
visuel
'color'
<couleur> | inherit
selon l'agent
utilisateur
oui
visuel
'content'
chane vide
non
tous
pseudolments
:before et :after
se rapporte la
hauteur du bloc
conteneur
visuel
'counterincrement'
none
non
tous
'counterreset'
none
non
tous
'cue'
XX
non
auditif
'cueafter'
none
non
auditif
'cuebefore'
none
non
auditif
'cursor'
auto
oui
visuel,
inter
active
'direction'
ltr
oui
visuel
'display'
inline
non
tous
'elevation'
level
oui
auditif
'emptycells'
show
oui
visuel
non
visuel
'float'
none
'font'
[ [ 'fontstyle' || 'fontvariant' ||
'fontweight' ]? 'fontsize' [ / 'lineheight'
]? 'fontfamily' ] | caption | icon | menu |
messagebox | smallcaption | statusbar |
inherit
voir les
proprits
indivi
duelles
oui
'fontfamily'
[[ <famillenom> | <famillegnrique>
],]* [<famillenom> |
<famillegnrique>] | inherit
selon l'agent
utilisateur
oui
'fontsize'
<tailleabsolue> | <taillerelative> |
<longueur> | <pourcentage> | inherit
medium
admis pour
'fontsize' et
'lineheight'
visuel
visuel
visuel
s'hrite
'fontsizeadjust'
none
oui
visuel
'fontstretch'
normal
oui
visuel
'fontstyle'
normal
oui
visuel
'fontvariant'
normal
oui
visuel
'fontweight'
normal
oui
visuel
'height'
auto
'left'
auto
'letterspacing'
normal
oui
'lineheight'
normal
oui
'liststyle'
[ 'liststyletype' || 'liststyleposition' ||
'liststyleimage' ] | inherit
XX
oui
visuel
'liststyleimage'
none
oui
visuel
'liststyleposition'
outside
oui
visuel
'liststyletype'
disc
oui
visuel
non
voir explication
visuel
non
se rapporte la
largeur du bloc
conteneur
visuel
visuel
se rapporte la taille
de la police de
l'lment luimme
visuel
<margelargeur>{1,4} | inherit
XX
non
se rapporte la
largeur du bloc
conteneur
visuel
'margintop'
'marginright'
'marginbottom'
'marginleft'
<margelargeur> | inherit
non
se rapporte la
largeur du bloc
conteneur
visuel
'markeroffset'
auto
non
visuel
'marks'
none
dans un contexte de
page
sans objet
visuel,
pagin
none
non
se rapporte la
hauteur du bloc
conteneur
visuel
none
non
se rapporte la
largeur du bloc
conteneur
visuel
non
se rapporte la
hauteur du bloc
conteneur
visuel
non
se rapporte la
largeur du bloc
conteneur
visuel
oui
visuel,
pagin
visuel,
inter
active
'maxheight'
'maxwidth'
'minheight'
'minwidth'
'orphans'
<entier> | inherit
'outline'
[ 'outlinecolor' || 'outlinestyle' ||
'outlinewidth' ] | inherit
voir les
proprits
indivi
duelles
non
'outlinecolor'
invert
non
visuel,
inter
active
'outlinestyle'
<bordurestyle> | inherit
none
non
visuel,
inter
active
'outlinewidth'
<bordurepaisseur> | inherit
medium
non
visuel,
inter
active
'overflow'
visible
non
visuel
'padding'
<espacementlargeur>
{1,4} | inherit
XX
non
se rapporte la
largeur du bloc
conteneur
visuel
'paddingtop'
'paddingright'
'paddingbottom'
'paddingleft'
<espacementlargeur> | inherit
non
se rapporte la
largeur du bloc
conteneur
visuel
'page'
<identifiant> | auto
auto
oui
visuel,
pagin
'pagebreakafter'
auto
non
visuel,
pagin
'pagebreakbefore'
auto
non
visuel,
pagin
'pagebreakinside'
auto
oui
visuel,
pagin
'pause'
l'agent
[ [<dure> | <pourcentage>]{1,2} ] | inherit selon
utilisateur
non
auditif
'pauseafter'
selon l'agent
utilisateur
non
voir explication
auditif
'pausebefore'
selon l'agent
utilisateur
non
voir explication
auditif
'pitch'
medium
oui
auditif
'pitchrange'
<nombre> | inherit
50
oui
auditif
'playduring'
auto
non
auditif
'position'
static
non
visuel
'quotes'
selon l'agent
utilisateur
oui
visuel
'richness'
<nombre> | inherit
50
oui
auditif
'right'
auto
lments positionns
non
'size'
auto
dans un contexte de
page
sans objet
visuel,
pagin
'speak'
normal
oui
auditif
'speakheader'
once
oui
auditif
'speaknumeral'
continuous
oui
auditif
'speakpunctuation'
none
oui
auditif
'speechrate'
medium
oui
auditif
'stress'
<nombre> | inherit
50
oui
auditif
non
visuel
selon l'agent
utilisateur et ceux des lments de
du sens
type bloc
d'criture
oui
visuel
non (voir
explications)
visuel
'tablelayout'
auto
'textalign'
'textdecoration'
none
'textindent'
oui
se rapporte la
largeur du bloc
conteneur
se rapporte la
largeur du bloc
conteneur
visuel
visuel
'textshadow'
none
non (voir
explications)
visuel
'texttransform'
none
oui
visuel
'top'
auto
lments positionns
non
'unicodebidi'
normal
non
'verticalalign'
baseline
'visibility'
inherit
non
visuel
'voicefamily'
[[<voixspcifique> | <voixgnrique>
],]* [<voixspcifique> |
<voixgnrique> ] | inherit
selon l'agent
utilisateur
oui
auditif
'volume'
medium
oui
'whitespace'
normal
oui
visuel
'widows'
<entier> | inherit
oui
visuel,
pagin
non
'width'
auto
'wordspacing'
normal
'zindex'
auto
lments positionns
non
se rapporte la
hauteur du bloc
conteneur
visuel
visuel
se rapporte la
valeur de
'lineheight' de
l'lment luimme
se rapporte la
valeur hrite
se rapporte la
largeur du bloc
conteneur
visuel
auditif
visuel
oui
visuel
non
visuel
'fontstretch'
'fontstyle'
'fontvariant'
'fontweight'
'mathline'
'panose1'
'slope'
'src'
'stemh'
'stemv'
'topline'
'unicoderange'
'unitsperem'
'widths'
'xheight'
Valeur
<nombre>
<nombre>
<nombre>, <nombre>, <nombre>,
<nombre>
<nombre>
<nombre>
<uri>
<nombre>
[ <famillenom> | <famillegnrique> ]
[, [<famillenom> | <famillegnrique>
]]*
all | <longueur> [, <longueur>]*
all | [ normal | ultracondensed |
extracondensed | condensed |
semicondensed | semiexpanded |
expanded | extraexpanded |
ultraexpanded ] [, [ normal |
ultracondensed | extracondensed |
condensed | semicondensed |
semiexpanded | expanded |
extraexpanded | ultraexpanded] ]*
all | [ normal | italic | oblique ] [, [normal |
italic | oblique] ]*
[normal | smallcaps] [,[normal |
smallcaps]]*
all | [normal | bold | 100 | 200 | 300 | 400 |
500 | 600 | 700 | 800 | 900] [, [normal |
bold | 100 | 200 | 300 | 400 | 500 | 600 |
700 | 800 | 900]]*
<nombre>
[<entier>]{10}
<nombre>
[ <uri> [format(<chane> [, <chane>]*)] |
<policenom> ] [, <uri>
[format(<chane> [, <chane>]*)] |
<policenom> ]*
<nombre>
<nombre>
<nombre>
<tendueunicode> [,
<tendueunicode>]*
<nombre>
[<tendueunicode> ]? [<nombre> ]+
[,[<tendueunicode> ]? <nombre> ]+]
<nombre>
Valeur initiale
indfinie
0
indfinie
indfinie
indfinie
indfinie
indfinie
selon l'agent utilisateur
all
normal
all
normal
all
indfinie
0000000000
0
indfinie
indfinie
indfinie
indfinie
U+07FFFFFFF
indfinie
indfinie
indfinie