1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
|
---
title: font-size
slug: Web/CSS/font-size
tags:
- CSS
- Propriété
- Reference
translation_of: Web/CSS/font-size
---
<div>{{CSSRef}}</div>
<p>La propriété <strong><code>font-size</code></strong> définit la taille de fonte utilisée pour le texte. La modification de cette taille peut entraîner la modification de la taille d'autres éléments car elle est utilisée pour calculer les valeurs des longueurs relatives (type {{cssxref("<length>")}}) (par exemple exprimées avec les unités <code>em</code> ou <code>ex</code>).</p>
<div>{{EmbedInteractiveExample("pages/css/font-size.html")}}</div>
<p class="hidden">Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> et à envoyer une <em>pull request</em> !</p>
<h2 id="Syntaxe">Syntaxe</h2>
<pre class="brush:css no-line-numbers notranslate">/* Valeurs dont la taille est absolue */
font-size: xx-small;
font-size: x-small;
font-size: small;
font-size: medium;
font-size: large;
font-size: x-large;
font-size: xx-large;
/* Valeurs relatives */
font-size: larger;
font-size: smaller;
/* Valeurs de longueurs */
/* Type <length> */
font-size: 12px;
font-size: 0.8em;
/* Valeurs proportionnelles */
/* Type <percentage> */
font-size: 80%;
/* Valeurs globales */
font-size: inherit;
font-size: initial;
font-size: unset;
</pre>
<p>La propriété <code>font-size</code> peut être définie de deux façons :</p>
<ul>
<li>Comme un mot-clé désignant <a href="#absolue">une taille absolue</a> ou <a href="#relative">une taille relative</a></li>
<li>Comme une valeur de type <code><length></code> ou de <code><percentage></code></li>
</ul>
<h3 id="Valeurs">Valeurs</h3>
<dl>
<dt><a id="absolue" name="absolue"><code>xx-small, x-small, small, medium, large, x-large, xx-large</code></a></dt>
<dd>Un ensemble de mots-clés désignant des valeurs absolues basées sur la taille par défaut de l'utilisateur (qui vaut <code>medium</code>). Le comportement est analogue à ce qu'on obtient en utilisant le code HTML <code><font size="1"></code> à <code><font size="7"></code> lorsque la taille par défaut de l'utilisateur vaut <code><font size="4"></code>.</dd>
<dt><a id="relative" name="relative"><code>larger, smaller</code></a></dt>
<dd>La taille de la fonte est plus grande (<code>larger</code>) ou plus petite (<code>smaller</code>) que celle de l'élément parent. Le ratio d'agrandissement/réduction est le même que celui qui sépare les mots-clés présentés avant.</dd>
<dt><a id="lp" name="lp"><code><length></code></a></dt>
<dd>Une longueur positive (type {{cssxref("<length>")}} ou un pourcentage (type {{cssxref("<percentage>")}}). Lorsque les valeurs sont exprimées avec les unités <code>em</code> ou <code>ex</code>, la taille est alors relative à la taille de la fonte de l'élément parent. Ainsi, une valeur de <code>0.5em</code> indiquera que la taille de fonte pour l'élément courant est la moitié de celle utilisée pour l'élément parent. Lorsque l'unité utilisée est <code>rem</code>, la taille est alors relative à la taille de la fonte utilisée pour l'élément racine <code>html</code>.</dd>
<dt><a id="lp" name="lp"><code><percentage></code></a></dt>
<dd>Les valeurs exprimées en pourcentages (type {{cssxref("<percentage>")}}) sont proportionnelles à la taille de fonte de l'élément parent.</dd>
</dl>
<div class="note">
<p><strong>Note :</strong> Il est généralement préférable d'utiliser des valeurs relatives à la taille par défaut choisie par l'utilisateur.</p>
</div>
<h3 id="Syntaxe_formelle">Syntaxe formelle</h3>
{{csssyntax}}
<h2 id="Les_différentes_approches">Les différentes approches</h2>
<p>Plusieurs méthodes existent pour définir la taille de fonte utilisée : des mots-clés ou des valeurs numériques exprimées en pixels ou en ems. Selon les besoins, on utilisera une méthode différente.</p>
<h3 id="Les_mots-clés">Les mots-clés</h3>
<p>Les mots-clés sont une méthode simple et efficace pour déterminer la taille de fonte à utiliser. En utilisant un mot-clé sur l'élément {{HTMLElement("body")}}, on peut définir des tailles relatives sur toute la page et réduire ou augmenter la taille de la fonte en conséquence.</p>
<h3 id="Les_pixels">Les pixels</h3>
<p>L'utilisation des pixels (<code>px</code>) permet d'obtenir un résultat statique, absolu et indépendant du système d'exploitation et du navigateur. Cependant, cette méthode est déconseillée car elle n'est pas accessible. Ainsi, les utilisateurs ne peuvent pas adapter la taille du texte avec leurs réglages si besoin.</p>
<h3 id="Les_ems">Les ems</h3>
<p>On peut également définir la taille de la fonte en <code>em</code>. La taille d'une valeur exprimée en <code>em</code> est dynamique. Lorsqu'on définit la propriété <code>font-size</code>, un <code>em</code> est équivalent à la taille de fonte appliquée à l'élément parent de l'élément courant. Si cette taille n'a pas été définie pour l'élément parent, elle correspondra à la taille par défaut du navigateur (généralement 16px). Ainsi, si on définit <code>font-size</code> avec une valeur de <code>20px</code> sur l'élément <code>body</code>, <code>1em</code> correspondra à <code>20px</code> et <code>2em</code> à <code>40px</code>. Ici, la valeur 2 est un facteur multiplicateur de la taille.</p>
<p>Pour calculer une équivalence entre <code>em</code> et un résultat exprimé en pixels, on peut utiliser cette formule :</p>
<pre class="brush: css notranslate">em = taille visée en px / font-size du parent en pixels</pre>
<p>Ainsi, si la taille <code>font-size</code> de <code>body</code> vaut <code>1em</code> et que l'échelle par défaut du navigateur indique <code>1em</code> = <code>16px</code> et qu'on souhaite obtenir une <code>font-size</code> équivalente à <code>12px</code>, on pourra utiliser la valeur <code>0.75em</code> (car 12/16 = 0.75). De même, si on veut une taille analogue à <code>10px</code>, on utilisera <code>0.625em</code> (10/16 = 0.625).</p>
<p>L'unité <code>em</code> est très utile car elle s'adapte automatiquement à la taille de fonte choisie par l'utilisateur.</p>
<p>Un autre aspect important est la <strong>composition</strong> des valeurs exprimées avec cette unité. Si on prend le fragment HTML suivant :</p>
<pre class="brush: html notranslate"><div>
<span>
Extérieur
<span>Intérieur</span>
Extérieur
</span>
</div>
</pre>
<p>Et qu'on applique la feuille de style suivante :</p>
<pre class="brush: css notranslate">body {
font-size: 62.5%;
}
span {
font-size: 1.6em;
}</pre>
<p>On obtiendra le résultat suivant :</p>
<p>{{EmbedLiveSample("Les_ems", 400, 40)}}</p>
<p>Si la taille par défaut du navigateur est 16px, le mot « Extérieur » sera affiché avec 16 pixels et le mot « Intérieur » sera affiché avec 25.6 pixes. En effet, la taille de <code>font-size</code> pour le bloc <code>span</code> vaut <code>1.6em</code> et cette valeur est relative à la valeur de <code>font-size</code> pour son élément parent, elle-même relative à la valeur de <code>font-size</code> pour son élément parent. C'est ce qu'on appelle <strong>la composition</strong>.</p>
<h3 id="Les_rems">Les rems</h3>
<p>L'unité <code>rem</code> a été conçue pour régler les problèmes engendrés par la composition. Les valeurs exprimées en <code>rem</code> sont relatives à l'élément {{HTMLElement("html")}} et pas à l'élément parent. Autrement dit, cette unité permet d'exprimer une taille relative sans être impacté par la taille de l'élément parent, court-circuitant ainsi la composition.</p>
<p>La feuille de style qui suit ressemble fortement à celle utilisée dans l'exemple précédent, on a simplement remplacé l'unité par <code>rem</code>.</p>
<pre class="brush: css notranslate">html {
font-size: 62.5%;
}
span {
font-size: 1.6rem;
}
</pre>
<p>On utilisera le même fragment de HTML :</p>
<pre class="brush: html notranslate"><span>
Extérieur
<span>Intérieur</span>
Extérieur
</span></pre>
<p>{{EmbedLiveSample("Les_rems", 400, 40)}}</p>
<p>Dans cet exemple, si la taille par défaut du navigateur vaut <code>16px</code>, tous les mots seront affichés avec une hauteur de <code>16px</code>.</p>
<h2 id="Exemples">Exemples</h2>
<h3 id="Premiers_exemples">Premiers exemples</h3>
<pre class="brush: css notranslate">/* Le paragraphe sera écrit avec une grande */
/* fonte. */
p { font-size: xx-large }
/* La taille du texte des h1 sera 2.5 fois plus */
/* grande que le texte autour. */
h1 { font-size: 250% }
/* Le texte contenu dans des éléments span */
/* mesurera 16px */
span { font-size: 16px; }
</pre>
<h3 id="Démonstration">Démonstration</h3>
<h4 id="CSS">CSS</h4>
<pre class="brush: css notranslate">.small {
font-size: xx-small;
}
.larger {
font-size: larger;
}
.point {
font-size: 24pt;
}
.percent {
font-size: 200%;
}
</pre>
<h4 id="HTML">HTML</h4>
<pre class="brush: html notranslate"><h1 class="small">Petit H1</h1>
<h1 class="larger">H1 plus grand</h1>
<h1 class="point">H1 de 24 points</h1>
<h1 class="percent">H1 à 200%</h1></pre>
<h4 id="Résultat">Résultat</h4>
<p>{{EmbedLiveSample('Démonstration','600','200')}}</p>
<h2 id="Notes">Notes</h2>
<p>Les unités <code>em</code> et <code>ex</code> pour la propriété {{Cssxref("font-size")}} sont relatives à la taille de la fonte de l'élément parent. Pour les autres propriétés, en utilisant ces unités, on aura une valeur relative à la taille de fonte de l'élément courant. Cela signifie que les valeurs exprimées en <code>em</code> ou en pourcents ont le même comportement pour {{cssxref("font-size")}}.</p>
<h2 id="Spécifications">Spécifications</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Spécification</th>
<th scope="col">État</th>
<th scope="col">Commentaires</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('CSS3 Fonts', '#font-size-prop', 'font-size')}}</td>
<td>{{Spec2('CSS3 Fonts')}}</td>
<td>Aucune modification.</td>
</tr>
<tr>
<td>{{SpecName('CSS3 Transitions', '#animatable-css', 'font-size')}}</td>
<td>{{Spec2('CSS3 Transitions')}}</td>
<td><code>font-size</code> peut désormais être animée.</td>
</tr>
<tr>
<td>{{SpecName('CSS2.1', 'fonts.html#propdef-font-size', 'font-size')}}</td>
<td>{{Spec2('CSS2.1')}}</td>
<td>Aucune modification.</td>
</tr>
<tr>
<td>{{SpecName('CSS1', '#font-size', 'font-size')}}</td>
<td>{{Spec2('CSS1')}}</td>
<td>Définition initiale.</td>
</tr>
</tbody>
</table>
<p>{{cssinfo}}</p>
<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2>
<div class="hidden">Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une <em>pull request</em> sur <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>
<p>{{Compat("css.properties.font-size")}}</p>
|