Skip to content

Commit 025b453

Browse files
authored
Merge pull request #497 from benjGam/feature/tra-shadow-dom-styling
Translate shadow dom styling (EN -> FR)
2 parents adb37e8 + 0d45e42 commit 025b453

File tree

1 file changed

+60
-59
lines changed

1 file changed

+60
-59
lines changed

8-web-components/6-shadow-dom-style/article.md

Lines changed: 60 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
# Shadow DOM styling
1+
# Application de style depuis le Shadow DOM
22

3-
Shadow DOM may include both `<style>` and `<link rel="stylesheet" href="…">` tags. In the latter case, stylesheets are HTTP-cached, so they are not redownloaded for multiple components that use same template.
3+
Le Shadow DOM peut inclure des balises `<style>` and `<link rel="stylesheet" href="…">`. Dans le dernier cas, les feuilles de style sont mises en cache (HTTP-Cached), donc elles ne sont pas retéléchargées pour plusieurs composants qui utilisent le même template.
44

5-
As a general rule, local styles work only inside the shadow tree, and document styles work outside of it. But there are few exceptions.
5+
En règle générale, les styles locaux fonctionnent au sein de l'arborescence Shadow, et les styles du document fonctionnent en dehors. Mais il y a quelques exceptions.
66

77
## :host
88

9-
The `:host` selector allows to select the shadow host (the element containing the shadow tree).
9+
Le sélecteur `:host` permet de sélectionner l'hôte shadow (l'élément contenant l'arborescence shadow).
1010

11-
For instance, we're making `<custom-dialog>` element that should be centered. For that we need to style the `<custom-dialog>` element itself.
11+
Par exemple, nous créeons un élément `<custom-dialog>` qui doit être centré. Pour cela nous avons besoin d'appliquer un style depuis l'élément `<custom-dialog>` lui-même.
1212

13-
That's exactly what `:host` does:
13+
C'est exactement ce que fait `:host` :
1414

1515
```html run autorun="no-epub" untrusted height=80
1616
<template id="tmpl">
1717
<style>
18-
/* the style will be applied from inside to the custom-dialog element */
18+
/* La règle de style sera appliquée depuis
19+
l'intérieur de l'élément custom-dialog */
1920
:host {
2021
position: fixed;
2122
left: 50%;
@@ -44,30 +45,29 @@ customElements.define('custom-dialog', class extends HTMLElement {
4445

4546
## Cascading
4647

47-
The shadow host (`<custom-dialog>` itself) resides in the light DOM, so it's affected by document CSS rules.
48+
L'hôte shadow (`<custom-dialog>` lui-même) réside dans le light DOM, donc il est affecté par les règles CSS du document.
4849

49-
If there's a property styled both in `:host` locally, and in the document, then the document style takes precedence.
50+
S'il y a une propriété de style locale dans `:host`, et dans le document, alors le style du document prendra le pas.
5051

51-
For instance, if in the document we had:
52+
Par exemple, si nous avons dans le document :
5253
```html
5354
<style>
5455
custom-dialog {
5556
padding: 0;
5657
}
5758
</style>
5859
```
59-
...Then the `<custom-dialog>` would be without padding.
60+
...Alors le `<custom-dialog>` n'aura pas de marge interne.
6061

61-
It's very convenient, as we can setup "default" component styles in its `:host` rule, and then easily override them in the document.
62-
63-
The exception is when a local property is labelled `!important`, for such properties, local styles take precedence.
62+
C'est vraiment pratique, comme nous pouvons définir des styles par défaut dans les règles d'`:host`, et les outrepasser dans le document.
6463

64+
L'exception est quand une propriété locale est marquée `!important`, pour de telles propriétés, les styles locaux prennent le pas.
6565

6666
## :host(selector)
6767

68-
Same as `:host`, but applied only if the shadow host matches the `selector`.
68+
Tout comme `:host`, mais appliqué si l'hôte shadow correspond au `sélecteur`.
6969

70-
For example, we'd like to center the `<custom-dialog>` only if it has `centered` attribute:
70+
Par exemple, nous aimerions centrer le `<custom-dialog>` seulement s'il a l'attribut `centered` :
7171

7272
```html run autorun="no-epub" untrusted height=80
7373
<template id="tmpl">
@@ -109,17 +109,18 @@ customElements.define('custom-dialog', class extends HTMLElement {
109109
</custom-dialog>
110110
```
111111

112-
Now the additional centering styles are only applied to the first dialog: `<custom-dialog centered>`.
112+
Maintenant les styles additionnels concernant le centrage sont uniquement appliqués au premier dialogue : `<custom-dialog centered>`.
113+
114+
Pour résumé, nous pouvons utiliser une famille de sélecteur `:host` pour appliquer des styles à l'élément principal du composant. Ces styles (excepté `!important`) peuvent être outrepasser par le document.
113115

114-
To summarize, we can use `:host`-family of selectors to style the main element of the component. These styles (unless `!important`) can be overridden by the document.
116+
## Application de style au contenu "slotted"
115117

116-
## Styling slotted content
118+
Maintenant considèrons la situation avec des slots.
117119

118-
Now let's consider the situation with slots.
120+
Les éléments "slotted" proviennent du light DOM, donc ils utilisent les styles du document. Les styles locaux n'affectent pas les contenus "slotted".
119121

120-
Slotted elements come from light DOM, so they use document styles. Local styles do not affect slotted content.
122+
Dans l'exemple ci-dessous, la `<span>` "slotted" est en gras, de par le style du document, mais `background` du style local n'est pas pris en compte :
121123

122-
In the example below, slotted `<span>` is bold, as per document style, but does not take `background` from the local style:
123124
```html run autorun="no-epub" untrusted height=80
124125
<style>
125126
*!*
@@ -148,11 +149,11 @@ customElements.define('user-card', class extends HTMLElement {
148149
</script>
149150
```
150151
151-
The result is bold, but not red.
152+
Le résultat est gras, mais pas rouge.
152153
153-
If we'd like to style slotted elements in our component, there are two choices.
154+
Si nous voulions appliquer du style sur les éléments "slotted" dans notre composant, il y a deux possibilités.
154155
155-
First, we can style the `<slot>` itself and rely on CSS inheritance:
156+
La première, on pourrait appliquer du style à `<slot>` elle même et compter sur l'héritage du CSS :
156157
157158
```html run autorun="no-epub" untrusted height=80
158159
<user-card>
@@ -176,14 +177,14 @@ customElements.define('user-card', class extends HTMLElement {
176177
</script>
177178
```
178179
179-
Here `<p>John Smith</p>` becomes bold, because CSS inheritance is in effect between the `<slot>` and its contents. But in CSS itself not all properties are inherited.
180+
Ici `<p>John Smith</p>` devient gras, grâce à l'héritage du CSS entre `<slot>` et son contenu. Mais dans le CSS lui-même, toutes les propriétés ne sont pas héritée.
180181
181-
Another option is to use `::slotted(selector)` pseudo-class. It matches elements based on two conditions:
182+
Une autre option est d'utiliser la pseudo classe `::slotted(selector)`. Elle fait correspondre deux éléments selon deux conditions :
182183
183-
1. That's a slotted element, that comes from the light DOM. Slot name doesn't matter. Just any slotted element, but only the element itself, not its children.
184-
2. The element matches the `selector`.
184+
1. Il s'agit d'un élément "slotted", ça vient du light DOM. Le nom du slot n'a pas d'importance. Ça fonctionne pour tout élément "slotted", mais seulement pour l'élément lui-même, pas pour ses enfants.
185+
2. L'élément correspond au `sélecteur`.
185186
186-
In our example, `::slotted(div)` selects exactly `<div slot="username">`, but not its children:
187+
Dans notre exemple, `::slotted(div)` selectionne uniquement `<div slot="username">`, mais pas ses enfants :
187188
188189
```html run autorun="no-epub" untrusted height=80
189190
<user-card>
@@ -209,54 +210,54 @@ customElements.define('user-card', class extends HTMLElement {
209210
</script>
210211
```
211212
212-
Please note, `::slotted` selector can't descend any further into the slot. These selectors are invalid:
213+
Veuillez noter, le sélecteur `::slotted` ne peut pas descendre plus bas dans le slot. Ces sélecteurs sont invalides :
213214
214215
```css
215216
::slotted(div span) {
216-
/* our slotted <div> does not match this */
217+
/* Notre <div> "slotted" ne correspond pas */
217218
}
218219
219220
::slotted(div) p {
220-
/* can't go inside light DOM */
221+
/* Ne peut pas aller dans le light DOM */
221222
}
222223
```
223224
224-
Also, `::slotted` can only be used in CSS. We can't use it in `querySelector`.
225+
Aussi, `::slotted` peut être utilisé uniquement en CSS. On ne peut pas l'utiliser dans `querySelector`.
225226
226-
## CSS hooks with custom properties
227+
## Les Hooks en CSS avec des propriétés personnalisées
227228
228-
How do we style internal elements of a component from the main document?
229+
Comment appliquons-nous du style aux éléments internes à un composant depuis le document principal ?
229230
230-
Selectors like `:host` apply rules to `<custom-dialog>` element or `<user-card>`, but how to style shadow DOM elements inside them?
231+
Les sélecteurs comme `:host` appliquent des règles aux éléments `<custom-dialog>` ou `<user-card>`, mais comment appliquons-nous du style shadow DOM qui leurs sont internes ?
231232
232-
There's no selector that can directly affect shadow DOM styles from the document. But just as we expose methods to interact with our component, we can expose CSS variables (custom CSS properties) to style it.
233+
Il n'y a pas de sélecteurs qui puisse directement affecté les styles du shadow DOM depuis le document. Mais comme nous venons d'exposer des méthodes pour interagir avec notre composant, nous pouvons exposer des variables CSS (propriétés CSS personnalisées) pour lui appliquer du style.
233234
234-
**Custom CSS properties exist on all levels, both in light and shadow.**
235+
**Les propriétés CSS personnalisées existent à tous les niveaux, dans le light et le shadow.**
235236
236-
For example, in shadow DOM we can use `--user-card-field-color` CSS variable to style fields, and the outer document can set its value:
237+
Par exemple, dans le shadow DOM nous pouvons utiliser la variable CSS `--user-card-field-color` pour appliquer du style aux champs, et pouvoir définir la valeur dans le document extérieur :
237238
238239
```html
239240
<style>
240241
.field {
241242
color: var(--user-card-field-color, black);
242-
/* if --user-card-field-color is not defined, use black color */
243+
/* Si --user-card-field-color n'est pas définie, utiliser la couleur noir*/
243244
}
244245
</style>
245246
<div class="field">Name: <slot name="username"></slot></div>
246247
<div class="field">Birthday: <slot name="birthday"></slot></div>
247248
```
248249

249-
Then, we can declare this property in the outer document for `<user-card>`:
250+
Alors, on peut déclarer cette propriété dans le document extérieur pour `<user-card>` :
250251

251252
```css
252253
user-card {
253254
--user-card-field-color: green;
254255
}
255256
```
256257

257-
Custom CSS properties pierce through shadow DOM, they are visible everywhere, so the inner `.field` rule will make use of it.
258+
Les propriétés CSS personnalisées passent au travers du shadow DOM, elles sont visibles depuis n'importe où, donc la règle intérieure `.field` s'en servira.
258259

259-
Here's the full example:
260+
Voici l'exemple complet :
260261

261262
```html run autorun="no-epub" untrusted height=80
262263
<style>
@@ -294,26 +295,26 @@ customElements.define('user-card', class extends HTMLElement {
294295
</user-card>
295296
```
296297
298+
## Résumé
297299
300+
Le Shadow DOM peut inclure des styles, tels que `<style>` ou `<link rel="stylesheet">`.
298301
299-
## Summary
302+
Les styles locaux peuvent affectés :
300303
301-
Shadow DOM can include styles, such as `<style>` or `<link rel="stylesheet">`.
304+
- l'arborescence shadow,
305+
- l'hôte shadow avec `:host` et les pseudo classes `:host()`,
306+
- les éléments "slotted" (qui proviennet du light DOM), `::slotted(selector)` permet de selectionner les éléments "slotted" en eux-même, mais pas leurs enfants.
302307
303-
Local styles can affect:
304-
- shadow tree,
305-
- shadow host with `:host` and `:host()` pseudoclasses,
306-
- slotted elements (coming from light DOM), `::slotted(selector)` allows to select slotted elements themselves, but not their children.
308+
Les styles du document peuvent affectés :
307309
308-
Document styles can affect:
309-
- shadow host (as it lives in the outer document)
310-
- slotted elements and their contents (as that's also in the outer document)
310+
- l'hôte shadow (puisqu'il existe dans le document extérieur)
311+
- les éléments "slotted" et leurs contenus (puisqu'ils existent aussi dans le document extérieur)
311312
312-
When CSS properties conflict, normally document styles have precedence, unless the property is labelled as `!important`. Then local styles have precedence.
313+
Quand les propriétés CSS entrent en conflit, les styles du document prennent le pas, sauf lorsque la propriété est marquée `!important`. Dans ce cas les styles locaux prennent le pas.
313314
314-
CSS custom properties pierce through shadow DOM. They are used as "hooks" to style the component:
315+
Les propriétés CSS personnalisées passent au travers le shadow DOM. Elles sont utilisées comme des "hooks" pour appliquer du style au composant :
315316
316-
1. The component uses a custom CSS property to style key elements, such as `var(--component-name-title, <default value>)`.
317-
2. Component author publishes these properties for developers, they are same important as other public component methods.
318-
3. When a developer wants to style a title, they assign `--component-name-title` CSS property for the shadow host or above.
319-
4. Profit!
317+
1. Le composant utilise une propriété CSS personnalisée pour appliquer du style aux éléments clés, tels que `var(--component-name-title, <default value>)`.
318+
2. L'autheur d'un composant publie ces propriétés pour les développeurs, elles sont aussi importantes que les autres méthodes du composant.
319+
3. Quand un développeur veut appliquer du style à un titre, ils assignent une propriété CSS `--component-name-title` pour l'hôte shadow ou au dessus.
320+
4. Profitez !

0 commit comments

Comments
 (0)