Propriété CSS font
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La propriété raccourcie CSS font permet de définir toutes les différentes propriétés de la police d'un élément. Elle permet aussi d'attribuer à un élément une police système.
Exemple interactif
font:
1.2rem "Fira Sans",
sans-serif;
font:
italic 1.2rem "Fira Sans",
serif;
font: italic small-caps bold 16px/2 cursive;
font: small-caps bold 24px/1 sans-serif;
font: caption;
<section id="default-example">
<q id="example-element">
Comme chacun sait, les préjugés sont particulièrement difficiles à éradiquer
d'un cœur dont le sol n'a jamais été ameubli ni fertilisé par
l'éducation : ils y poussent, tenaces comme des mauvaises herbes parmi
les pierres.
</q>
</section>
@font-face {
font-family: "Fira Sans";
src:
local("FiraSans-Regular"),
url("/shared-assets/fonts/FiraSans-Regular.woff2") format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Fira Sans";
src:
local("FiraSans-Italic"),
url("/shared-assets/fonts/FiraSans-Italic.woff2") format("woff2");
font-weight: normal;
font-style: italic;
}
section {
margin-top: 10px;
font-size: 1.1em;
}
Comme pour les autres propriétés CSS, les valeurs qui ne sont pas définies avec la propriété raccourcie sont définies avec leur valeur initiale, ce qui peut surcharger les valeurs définies précédemment avec les propriétés « détaillées ». Bien qu'elles ne puissent pas directement être paramétrées avec font, les propriétés détaillées, font-size-adjust, et font-kerning sont également réinitialisées avec leurs valeurs initiales.
Propriétés constitutives
Cette propriété est une propriété raccourcie pour les propriétés CSS suivantes :
Syntaxe
/* font-size font-family */
font: 1.2em sans-serif;
/* font-size/line-height font-family */
font: 1.2em/2 "Fira Sans", sans-serif;
/* font-style font-weight font-size font-family */
font: italic bold 1.2em monospace;
/* font-width font-variant font-size font-family */
font: ultra-condensed small-caps 1.2em Montserrat, Helvetica, sans-serif;
/* Polices système */
font: caption;
Valeurs
La valeur est soit une propriété raccourcie définissant les différentes propriétés liées aux polices, soit un seul mot-clé <system-font-family-name> :
<'font-style'>Facultatif-
Voir la propriété CSS
font-style. Par défaut,normal. <font-variant-css2>Facultatif-
Soit la valeur
normal, soit la valeursmall-capsde la propriété CSSfont-variant. Par défaut,normal. <'font-weight'>Facultatif-
Voir la propriété CSS
font-weight. Par défaut,normal. <font-width-css3>Facultatif-
Les mots-clés pris en charge par la propriété CSS
font-width. Par défaut,normal. <'font-size'>-
Voir la propriété CSS
font-size. <'line-height'>Facultatif-
Voir la propriété CSS
line-height. Par défaut,normal. <'font-family'>-
Voir la propriété CSS
font-family. Doit être la dernière valeur. <system-font-family-name>-
Un mot-clé unique représentant une police système, y compris :
caption-
La police système utilisée pour les contrôles avec légende (boutons, menus déroulants, etc.).
icon-
La police système utilisée pour étiqueter les icônes.
-
La police système utilisée dans les menus (par exemple, les menus déroulants et les listes de menus).
message-box-
La police système utilisée dans les boîtes de dialogue.
small-caption-
La police système utilisée pour étiqueter les petits contrôles.
status-bar-
La police système utilisée dans les barres d'état des fenêtres.
Il existe plusieurs valeurs non standard implémentées avec des préfixes.
Description
La valeur de la propriété font est soit un mot-clé unique représentant un system-font-family-name, soit plusieurs valeurs de propriétés individuelles utilisées pour définir toutes les différentes propriétés de la police d'un élément.
Déclarations de polices système
Si font est défini comme un mot-clé <system-font-family-name>, la valeur complète de la propriété doit être définie sur ce mot-clé unique, insensible à la casse. Les valeurs valides incluent caption, icon, menu, message-box, small-caption ou status-bar.
Les navigateurs prennent également en charge des valeurs non standard avec des préfixes.
- Chromium implémente
-webkit-control,-webkit-small-controlet-webkit-mini-control. - Webkit inclut les valeurs de Chromium, et ajoute
-webkit-body,-webkit-pictographet-webkit-ruby-text, ainsi que plusieurs noms de polices système préfixés par-apple-system-*. - Gecko implémente
-moz-window,-moz-document,-moz-desktop,-moz-info,-moz-dialog,-moz-button,-moz-pull-down-menu,-moz-listet-moz-field.
La police système, ou <system-font-family-name>, ne peut être définie qu'avec la propriété font. La définition d'une seule valeur de mot-clé, telle que font: icon, définit la famille, la taille, le poids, le style, etc., de la police sur les valeurs que le navigateur définit pour la police système nommée. Toutes ces valeurs peuvent être modifiées avec des déclarations en propriété longue placées après la déclaration font.
Inclure des composants en propriété longue font après le mot-clé <system-font-family-name> dans une valeur de propriété font invalide la déclaration. Par exemple, font: icon small est invalide.
Si un mot-clé <system-font-family-name> apparaît n'importe où dans la valeur autre que comme premier composant, le mot-clé est traité comme un <ident> représentant un nom de font-family standard. Par exemple, la déclaration font: small icon définit la font-family sur une police nommée icon, une police non système qui peut ou non exister. Cette déclaration définit également la font-size sur small et réinitialise toutes les autres propriétés de composant en propriété longue à leurs valeurs initiales.
Déclarations raccourcies de polices
Si font est défini comme une déclaration raccourcie pour plusieurs propriétés liées aux polices, alors :
-
elle doit inclure des valeurs pour :
-
elle peut facultativement inclure des valeurs pour :
Comme pour toute propriété raccourcie, toutes les propriétés détaillées non définies sont définies à leurs valeurs initiales, ce qui peut éventuellement remplacer les valeurs précédemment définies à l'aide de propriétés non raccourcies. De plus, la propriété raccourcie réinitialise les propriétés suivantes à leurs valeurs initiales. La propriété raccourcie ne peut pas les définir explicitement :
Ordre de la propriété raccourcie
L'ordre de certaines des valeurs détaillées au sein de la déclaration raccourcie font doit suivre quelques règles :
- Les composants
font-sizeetfont-familysont obligatoires (sauf pour les déclarations de police système). - Les composants
font-style,font-variantetfont-weightdoivent précéder la valeurfont-size. - Une
line-heightne peut être incluse que sifont-sizeest incluse. Si elle est présente, laline-heightdoit suivre immédiatement lefont-size, les deux valeurs étant séparées par une barre oblique (/), par exemple :16px / 3. - La
font-familydoit être la dernière valeur définie.
Composants avec des valeurs limitées
Pour des raisons de compatibilité, les valeurs valides des composants font-variant et font-width n'incluent pas toutes les valeurs valides ni les équivalents détaillés.
Les valeurs valides pour le composant font-variant sont limitées à normal ou small-caps. Bien qu'aucune autre valeur ne soit prise en charge, la déclaration raccourcie font réinitialise toutes les propriétés détaillées font-variant-* à normal, y compris font-variation-settings, font-variant-position, font-variant-emoji, font-variant-caps, font-variant-ligatures, font-variant-numeric, font-variant-east-asian et font-variant-alternates.
Les valeurs valides pour le composant font-width sont limitées aux mots-clés : normal, ultra-condensed, extra-condensed, condensed, semi-condensed, semi-expanded, expanded, extra-expanded, ultra-expanded. La propriété détaillée font-width prend également en charge les valeurs <percentage>, mais elles ne sont pas valides dans la déclaration raccourcie.
Définition formelle
| Valeur initiale | pour chaque propriété individuelle de la propriété raccourcie :
|
|---|---|
| Applicabilité | tous les éléments et le texte. S'applique aussi à ::first-letter et ::first-line. |
| Héritée | oui |
| Pourcentages | pour chaque propriété individuelle de la propriété raccourcie :
|
| Valeur calculée | pour chaque propriété individuelle de la propriété raccourcie :
|
| Type d'animation | pour chaque propriété individuelle de la propriété raccourcie :
|
Syntaxe formelle
font =
[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] |
<system-font-family-name>
<font-style> =
normal |
italic |
left |
right |
oblique <angle [-90deg,90deg]>?
<font-variant-css2> =
normal |
small-caps
<font-weight> =
<font-weight-absolute> |
bolder |
lighter
<font-width-css3> =
normal |
ultra-condensed |
extra-condensed |
condensed |
semi-condensed |
semi-expanded |
expanded |
extra-expanded |
ultra-expanded
<font-size> =
<absolute-size> |
<relative-size> |
<length-percentage [0,∞]> |
math
<line-height> =
normal |
<number [0,∞]> |
<length-percentage [0,∞]>
<font-family> =
[ <font-family-name> | <generic-font-family> ]#
<system-font-family-name> =
caption |
icon |
menu |
message-box |
small-caption |
status-bar
<font-weight-absolute> =
normal |
bold |
<number [1,1000]>
<absolute-size> =
xx-small |
x-small |
small |
medium |
large |
x-large |
xx-large |
xxx-large
<relative-size> =
larger |
smaller
<length-percentage> =
<length> |
<percentage>
<font-family-name> =
<string> |
<custom-ident>+
<generic-font-family> =
<generic-font-script-specific> |
<generic-font-complete> |
<generic-font-incomplete>
<generic-font-script-specific> =
generic( fangsong ) |
generic( kai ) |
generic( khmer-mul ) |
generic( nastaliq )
<generic-font-complete> =
serif |
sans-serif |
system-ui |
cursive |
fantasy |
math |
monospace
<generic-font-incomplete> =
ui-serif |
ui-sans-serif |
ui-monospace |
ui-rounded
Exemples
>Utilisation simple
Cet exemple définit la police (font) pour tous les éléments HTML <p>. Nous définissons la taille de police (font-size) à 12px et la hauteur de ligne (line-height) à 14px, en les séparant par une barre oblique (/). La déclaration définit également la famille de police (font-family) à sans-serif.
p {
font: 12px / 14px sans-serif;
}
Propriétés multiples
Dans cet exemple, nous définissons le font-weight à bold, le font-style à italic, le font-size à large, le line-height à 1.6 et le font-family à serif.
p {
font: bold italic large / 1.6 serif;
}
Police système
Cet exemple montre comment utiliser la propriété font pour définir une police système.
CSS
Nous définissons la police du paragraphe pour qu'elle ait la même font-family, line-height, font-size, etc., que la barre d'état de la fenêtre, puis nous définissons le line-height à 1.6.
p {
font: status-bar;
line-height: 1.6;
}
HTML
Notre HTML inclut un paragraphe (<p>) contenant un lien (<a>) avec une valeur d'attribut href compliquée. Lorsque vous survolez ou sélectionnez le lien rendu, la barre d'état de votre navigateur doit afficher la valeur de l'attribut href.
<p>
<a
href="/%20The%20font%20should%20be%20the%20same%20
family%20and%20size%20and%20the%20text%20in%20the%20example."
>Survolez ou sélectionnez ce texte. La police doit être de la même famille
et de la même taille que le texte dans votre barre d'état.</a
>
</p>
JavaScript
Comme l'URL dans notre lien HTML n'est pas une bonne pratique, nous incluons un script qui empêche le document de rediriger vers une page inexistante lorsque le lien est cliqué.
const aElem = document.querySelector("a");
aElem.addEventListener("click", (e) => {
e.preventDefault();
return false;
});
Résultat
Survolez ou sélectionnez le lien. La police doit être de la même famille et de la même taille que le texte dans votre barre d'état en bas de la fenêtre de votre navigateur.
Générateur de déclaration abrégée
Dans cette démonstration en direct, vous pouvez sélectionner différents boutons radio pour générer différentes valeurs abrégées, tout en visualisant les effets des déclarations abrégées que vous créez.
Spécifications
| Spécification |
|---|
| CSS Fonts Module Level 4> # font-prop> |
Compatibilité des navigateurs
Voir aussi
- La propriété
font-style - La propriété
font-weight - Pile de polices système (angl.) sur CSS-Tricks (2017)