You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
La [fonction de type `<color>`](/fr/docs/Web/CSS/CSS_Values_and_Units/CSS_Value_Functions#les_fonctions_de_couleur)[CSS](/fr/docs/Web/CSS)**`color()`** permet de définir une couleur dans un {{Glossary("color space", "espace colorimétrique")}} particulier, au lieu de l'espace colorimétrique sRGB implicite utilisé par la plupart des autres fonctions de couleur.
9
9
10
-
La notation fonctionnelle **`color()`** permet d'exprimer une couleur dans un espace de couleur donné, plutôt que dans l'espace de couleur implicite sRGB, utilisé par la plupart des fonctions manipulant des couleurs.
11
-
12
-
La prise en charge d'un espace de couleur donné peut être détectée grâce à la caractéristique média [`color-gamut`](/fr/docs/Web/CSS/@media/color-gamut).
13
-
14
-
La [règle @](/fr/docs/Web/CSS/CSS_syntax/At-rule)[`@color-profile`](/fr/docs/Web/CSS/@color-profile) peut être utilisée afin de définir et de nommer un profil de couleur à utiliser dans la fonction `color()`.
10
+
Vous pouvez détecter la prise en charge d'un espace colorimétrique particulier avec la fonctionnalité média CSS [`color-gamut`](/fr/docs/Web/CSS/@media/color-gamut).
15
11
16
12
## Syntaxe
17
13
18
14
```css
19
-
color(display-p3 1 0.5 0)
20
-
color(display-p3 1 0.5 0 / .5)
15
+
/* Valeurs absolues */
16
+
color(display-p3 1 0.5 0);
17
+
color(display-p3 1 0.5 0 / .5);
18
+
19
+
/* Valeurs relatives */
20
+
color(from green srgb r gb / 0.5)
21
+
color(from #123456 xyz calc(x + 0.75) y calc(z - 0.35))
- : `[<ident> | <dashed-ident>]` est un identifiant (type [`<ident>`](/fr/docs/Web/CSS/ident) ou [`<dashed-ident>`](/fr/docs/Web/CSS/dashed-ident)) indiquant l'espace de couleur. S'il s'agit d'une valeur de type `<ident>`, elle indique un des espaces de couleur prédéfini (par exemple `display-p3`). S'il s'agit d'une valeur de type `<dashed-ident>`, elle indique un espace de couleur personnalisé, défini via une règle [`@color-profile`](/fr/docs/Web/CSS/@color-profile).
26
+
Vous trouverez ci-dessous la description des valeurs autorisées pour les couleurs absolues et [relatives](/fr/docs/Web/CSS/CSS_colors/Relative_colors).
27
+
28
+
#### Syntaxe de valeur absolue
29
+
30
+
```plain
31
+
color(colorspace c1 c2 c3[ / A])
32
+
```
33
+
34
+
Les paramètres sont les suivants :
35
+
36
+
-`colorspace`
37
+
- : Un {{CSSXref("<ident>")}} indiquant un des espaces colorimétriques prédéfinis : `srgb`, `srgb-linear`, `display-p3`, `a98-rgb`, `prophoto-rgb`, `rec2020`, `xyz`, `xyz-d50` ou `xyz-d65`.
38
+
39
+
-`c1`, `c2`, `c3`
40
+
- : Chaque valeur peut être écrite comme un nombre ({{CSSXref("number")}}), un pourcentage ({{CSSXref("percentage")}}), ou le mot-clé `none` (équivalent à `0` dans ce cas). Ces valeurs représentent les composantes pour l'espace colorimétrique. Avec une valeur `<number>`, généralement, `0` à `1` représente les bornes de l'espace colorimétrique. Les valeurs hors de cette plage sont autorisées mais seront hors du {{Glossary("gamut")}} de l'espace colorimétrique donné. Avec une valeur en pourcentage, `100%` représente `1` et `0%` représente `0`.
41
+
42
+
-`A` {{optional_inline}}
43
+
- : Une valeur {{CSSXref("<alpha-value>")}} représentant la valeur du canal alpha de la couleur, où le nombre `0` correspond à `0%` (totalement transparent) et `1` à `100%` (totalement opaque). Le mot-clé `none` peut aussi être utilisé pour indiquer explicitement l'absence de canal alpha. Si la valeur du canal `A` n'est pas précisée, elle vaut par défaut 100%. Si elle est présente, elle est précédée d'un slash (`/`).
44
+
45
+
> [!NOTE]
46
+
> Voir les [Composantes de couleur manquantes](#composantes_de_couleur_manquantes) pour plus d'informations sur l'effet de `none`.
47
+
48
+
#### Syntaxe de valeur relative
49
+
50
+
```plain
51
+
color(from <color> colorspace c1 c2 c3[ / A])
52
+
```
53
+
54
+
Les paramètres sont les suivants :
55
+
56
+
-`from <color>`
57
+
- : Le mot-clé `from` est toujours présent lors de la définition d'une couleur relative, suivi d'une valeur {{cssxref("<color>")}} représentant la **couleur d'origine**. Il s'agit de la couleur de base sur laquelle la couleur relative est fondée. La couleur d'origine peut être n'importe quelle syntaxe {{cssxref("<color>")}} valide, y compris une autre couleur relative.
58
+
-`colorspace`
59
+
- : Un {{CSSXref("<ident>")}} indiquant l'{{Glossary("color space", "espace colorimétrique")}} de la couleur de sortie, généralement un des espaces prédéfinis : `srgb`, `srgb-linear`, `display-p3`, `a98-rgb`, `prophoto-rgb`, `rec2020`, `xyz`, `xyz-d50` ou `xyz-d65`.
60
+
-`c1`, `c2`, `c3`
61
+
- : Chaque valeur peut être écrite comme un nombre ({{CSSXref("number")}}), un pourcentage ({{CSSXref("percentage")}}), ou le mot-clé `none` (équivalent à `0` dans ce cas). Ces valeurs représentent les composantes de la couleur de sortie. Avec une valeur `<number>`, généralement `0` à `1` représente les bornes de l'espace colorimétrique. Les valeurs hors de cette plage sont autorisées mais seront hors du {{Glossary("gamut")}} de l'espace colorimétrique donné. Avec une valeur en pourcentage, `100%` représente `1` et `0%` représente `0`.
62
+
-`A` {{optional_inline}}
63
+
- : Un {{CSSXref("<alpha-value>")}} représentant la valeur du canal alpha de la couleur de sortie, où `0` correspond à `0%` (totalement transparent) et `1` à `100%` (totalement opaque). Le mot-clé `none` peut aussi être utilisé pour indiquer explicitement l'absence de canal alpha. Si la valeur du canal `A` n'est pas précisée, elle prend la valeur du canal alpha de la couleur d'origine. Si elle est présente, elle est précédée d'un slash (`/`).
64
+
65
+
#### Définir les composantes de sortie d'une couleur relative
66
+
67
+
Quand vous utilisez la syntaxe relative dans `color()`, le navigateur convertit la couleur d'origine dans l'espace colorimétrique définit (si ce n'est pas déjà le cas). La couleur est définie par trois valeurs de canaux de couleur distincts plus une valeur de canal alpha (`alpha`). Ces valeurs sont disponibles dans la fonction pour définir les composantes de la couleur de sortie :
68
+
69
+
- Les trois valeurs de canaux de la couleur d'origine sont résolues en `<number>`. Selon l'espace colorimétrique, elles seront :
70
+
-`r`, `g`, `b` : pour les espaces colorimétriques RGB (`srgb`, `srgb-linear`, `display-p3`, `a98-rgb`, `prophoto-rgb`, `rec2020`)
71
+
-`x`, `y`, `z` : pour les espaces XYZ (`xyz`, `xyz-d50`, `xyz-d65`)
72
+
73
+
> [!NOTE]
74
+
> Ces valeurs sont généralement comprises entre `0` et `1` mais peuvent être hors de cette plage.
75
+
76
+
> [!NOTE]
77
+
> Référencer `r`, `g`, `b` dans un espace XYZ, ou `x`, `y`, `z` dans un espace RGB, ou tout autre caractère, est invalide. Les canaux disponibles doivent correspondre au type d'espace colorimétrique définit.
78
+
79
+
-`alpha` : la valeur de transparence, résolue en `<number>` entre `0` et `1` inclus.
80
+
81
+
Pour définir une couleur relative, les différents canaux de la couleur de sortie peuvent être exprimés de plusieurs façons. Voici quelques exemples :
82
+
83
+
Dans les deux premiers exemples ci-dessous, nous utilisons la syntaxe de couleur relative. Cependant, le premier retourne la même couleur que la couleur d'origine et le second retourne une couleur qui n'est pas basée sur la couleur d'origine. Ils ne créent pas vraiment de couleurs relatives ! Il est peu probable que vous utilisiez ces exemples dans une base de code réelle, et vous utiliseriez probablement simplement une valeur de couleur absolue à la place. Nous avons inclus ces exemples comme point de départ pour apprendre la syntaxe relative de `color()`.
84
+
85
+
Commençons avec une couleur d'origine `hsl(0 100% 50%)` (équivalent à `red`). Bien qu'il soit peu probable que vous écriviez les fonctions suivantes car elles retournent la même couleur que la couleur d'origine, cela montre comment utiliser les valeurs de canal de la couleur d'origine comme valeurs de canal de sortie :
86
+
87
+
```css
88
+
color(from hsl(0 100% 50%) srgb r gb)
89
+
color(from hsl(0 100% 50%) xyz x y z)
90
+
```
91
+
92
+
Les couleurs de sortie de ces fonctions sont respectivement `color(srgb 1 0 0)` et `color(xyz-d65 0.412426 0.212648 0.0193173)`.
93
+
94
+
Les fonctions suivantes utilisent des valeurs absolues pour les canaux de sortie, produisant des couleurs différentes de la couleur d'origine :
Les fonctions suivantes utilisent deux des valeurs de canal de couleur d'origine pour les valeurs de canal de couleur de sortie (`r` et `b`, et `x` et `y`, respectivement), mais utilisent une nouvelle valeur pour l'autre valeur de canal de sortie (`g` et `z`, respectivement), créant une couleur relative basée sur la couleur d'origine dans chaque cas :
> Si le modèle de couleur de sortie diffère de celui de la couleur d'origine, la couleur d'origine est convertie en interne pour correspondre au modèle de sortie (mêmes canaux). Par exemple, la couleur {{cssxref("color_value/hsl", "hsl()")}} `hsl(0 100% 50%)` est convertie en `color(srgb 1 0 0)` dans le premier cas et `color(xyz 0.412426 0.212648 0.5)` dans le second.
116
+
117
+
Dans les exemples que nous avons vus jusqu'à présent dans cette section, les canaux alpha n'ont pas été explicitement spécifiés pour les couleurs d'origine ou de sortie. Lorsque le canal alpha de la couleur de sortie n'est pas spécifié, il prend la même valeur que le canal alpha de la couleur d'origine. Lorsque le canal alpha de la couleur d'origine n'est pas spécifié (et qu'il ne s'agit pas d'une couleur relative), il prend la valeur `1`. Par conséquent, les valeurs du canal alpha d'origine et de sortie sont `1` pour les exemples ci-dessus.
118
+
119
+
Voyons quelques exemples qui spécifient les valeurs du canal alpha d'origine et de sortie. Le premier spécifie que la valeur du canal alpha de sortie est la même que la valeur du canal alpha d'origine, tandis que le second spécifie une valeur différente du canal alpha de sortie, sans rapport avec la valeur du canal alpha d'origine.
Les exemples suivants utilisent les fonctions {{cssxref("calc")}} pour calculer de nouvelles valeurs de canal pour les couleurs de sortie qui sont relatives aux valeurs de canal de couleur d'origine.
> Parce que les valeurs de canal de couleur d'origine sont résolues en valeurs `<number>`, vous devez leur ajouter des nombres lorsque vous les utilisez dans des calculs, même dans les cas où un canal accepterait normalement `<percentage>`, `<angle>`, ou d'autres types de valeurs. Ajouter un `<percentage>` à un `<number>`, par exemple, ne fonctionne pas.
141
+
142
+
## Syntaxe formelle
143
+
144
+
{{CSSSyntax}}
145
+
146
+
## Exemples
147
+
148
+
### Utiliser les espaces colorimétriques prédéfinis avec `color()`
149
+
150
+
L'exemple suivant montre l'effet de la variation des valeurs de luminosité, d'axe a et d'axe b de la fonction `color()`.
### Utiliser les media queries `color-gamut` avec `color()`
245
+
246
+
Cet exemple montre comment utiliser la media query [`color-gamut`](/fr/docs/Web/CSS/@media/color-gamut) pour détecter la prise en charge d'un espace colorimétrique et l'utiliser pour définir une couleur.
### Utiliser les couleurs relatives avec `color()`
294
+
295
+
Cet exemple applique trois couleurs de fond différentes à des éléments {{htmlelement("div")}}. Celui du milieu utilise la couleur `--base-color` telle quelle, tandis que les deux autres utilisent des variantes éclaircies et assombries de cette couleur, définies avec des couleurs relatives.
296
+
297
+
Les variantes sont définies en passant la propriété personnalisée [--base-color](/fr/docs/Web/CSS/--*) à la fonction `color()`, puis en modifiant les canaux `g` et `b` via `calc()`. La couleur éclaircie ajoute 15% à ces canaux, la couleur assombrie en retire 15%.
298
+
299
+
```html hidden
300
+
<divid="container">
301
+
<divclass="item"id="one"></div>
302
+
<divclass="item"id="two"></div>
303
+
<divclass="item"id="three"></div>
304
+
</div>
305
+
```
306
+
307
+
#### CSS
308
+
309
+
```css hidden
310
+
#container {
311
+
display: flex;
312
+
width: 100vw;
313
+
height: 100vh;
314
+
box-sizing: border-box;
315
+
}
316
+
317
+
.item {
318
+
flex: 1;
319
+
margin: 20px;
320
+
}
321
+
```
322
+
323
+
```css
324
+
:root {
325
+
--base-color: orange;
326
+
}
327
+
328
+
#one {
329
+
background-color: color(
330
+
from var(--base-color) display-p3 r calc(g +0.15) calc(b +0.15)
331
+
);
332
+
}
333
+
334
+
#two {
335
+
background-color: var(--base-color);
336
+
}
337
+
338
+
#three {
339
+
background-color: color(
340
+
from var(--base-color) display-p3 r calc(g -0.15) calc(b -0.15)
341
+
);
342
+
}
343
+
344
+
/* Utiliser @supports pour l'ancienne syntaxe qui exige les valeurs r g b en pourcentage (avec unités) dans les calculs.
345
+
Requis pour Safari 16.4+ */
346
+
@supports (color: color(from red display-p3 r g calc(b +30%))) {
347
+
#one {
348
+
background-color: color(
349
+
from var(--base-color) display-p3 r calc(g +15%) calc(b +15%)
350
+
);
351
+
}
352
+
353
+
#three {
354
+
background-color: color(
355
+
from var(--base-color) display-p3 r calc(g -15%) calc(b -15%)
356
+
);
357
+
}
358
+
}
359
+
```
360
+
361
+
#### Résultat
27
362
28
-
`[ <number-percentage>+ | <string> ]` indique un ou plusieurs nombres (type [`<number>`](/fr/docs/Web/CSS/number)) ou pourcentages (type [`<percentage>`](/fr/docs/Web/CSS/percentage)) fournissant les valeurs que prend l'espace de couleur en entrée, ou une chaîne de caractères (type [`<string>`](/fr/docs/Web/CSS/string)) indiquant le nom d'une couleur définie dans l'espace de couleur.
363
+
Le résultat est le suivant :
29
364
30
-
`/ <alpha>` peut être un nombre (type [`<number>`](/fr/docs/Web/CSS/number)) compris entre `0` et `1`, ou un pourcentage (type [`<percentage>`](/fr/docs/Web/CSS/percentage)), où `1` correspond à `100%` (opacité complète).
0 commit comments