--- title: Éléments spéciaux --- ## `` ```svelte ``` ```svelte ``` ```svelte ``` Les composants peuvent avoir du contenu enfant, de la même façon que les éléments. Le contenu est exposé dans le composant enfant avec l'élément ``, qui peut avoir un contenu par défaut qui sera utilisé si aucun enfant n'est fourni. ```svelte
ce contenu slot par défaut sera rendu si aucun contenu n'est fourni, comme dans le premier exemple

ceci est du contenu qui remplacera le contenu slot par défaut

``` Note: Si vous souhaitez afficher [un élément HTML de type ``](https://developer.mozilla.org/fr/docs/Web/HTML/Element/slot), vous pouvez utiliser ``. ### `` Les [slots](/docs/sveltejs#slot) nommés permettent aux parents de cibler des zones spécifiques. Ils peuvent aussi avoir du contenu par défaut. ```svelte
Aucun en-tête fourni

Du contenu entre l'en-tête et le bas de page

Bonjour

Copyright (c) 2019 Svelte Industries

``` Les composants peuvent être placés dans un [slot](/docs/sveltejs#slot) nommé en utilisant le syntaxe `[slot](/docs/sveltejs#slot) sans l'entourer d'un élément, vous pouvez utiliser l'élément spécial ``. ```svelte
Aucun en-tête fourni

Du contenu entre l'en-tête et le bas de page

Tous droits réservés.

Copyright (c) 2019 Svelte Industries

``` ### `$$slots` L'objet `$$slots` a comme clés les noms des [slots](/docs/sveltejs#slot) passés au composant par le parent. Si le parent ne fournit pas un [slot](/docs/sveltejs#slot) avec un nom particulier, ce nom ne sera pas présent dans `$$slots`. Cela permet aux composants d'afficher un [slot](/docs/sveltejs#slot) (et d'autres éléments, comment des *wrappers* de style) uniquement si le parent le fournit. Notez que passer explicitement un [slot](/docs/sveltejs#slot) nommé vide ajoutera le nom de ce slot à `$$slots`. Par exemple, si un parent fournit `
` à un composant enfant, `$$slots.title` sera *truthy* dans l'enfant. ```svelte
{#if $$slots.description}
{/if}

Titre d'article de blog

``` ### `` Les [slots](/docs/sveltejs#slot) peuvent être rendus zéro ou plusieurs fois, et peuvent passer des valeurs *en retour* au parent en utilisant des [props](/docs/sveltejs#props). Le parent expose ces valeurs au [template](/docs/development#template) de [slot](/docs/sveltejs#slot) avec la directive `let:`. Il est possible d'utiliser la syntaxe raccourcie usuelle — `let:item` est équivalent à `let:item={item}`, et `` est équivalent à ``. ```svelte
    {#each items as item}
  • {/each}
{thing.text}
``` Les [slots](/docs/sveltejs#slot) nommés peuvent aussi exposer des valeurs. La directive `let:` ira sur l'élément avec l'attribut `slot` correspondant. ```svelte
    {#each items as item}
  • {/each}
{item.text}

Copyright (c) 2019 Svelte Industries

``` ## `` L'élément `` permet à un composant de s'inclure lui-même, récursivement. Cet élément ne peut pas être utilisé à la racine du [markup](/docs/web#markup) ; il doit être placé à l'intérieur d'un bloc `{#if}` ou `{#each}` ou passé à un `` pour éviter une boucle infinie. ```svelte {#if count > 0}

compte à rebours ... {count}

{:else}

décollage !

{/if} ``` ## `` ```svelte ``` L'élément `` rend un composant dynamiquement, en utilisant le constructeur du composant spécifié avec la propriété `this`. Quand cette propriété change, l'instance du composant est détruite et recréée. Si la valeur de `this` est [falsy](/docs/javascript#falsy-truthy-falsy), aucun composant n'est rendu. ```svelte ``` ## `` ```svelte ``` L'élément `` permet de rendre un élément d'un type spécifié dynamiquement. Cela peut servir par exemple pour afficher du contenu texte enrichi provenant d'un CMS. Toutes les propriétés et fonctions d'écoute d'évènements seront appliquées à l'élément. Le seul type de liaison ([binding](/docs/sveltejs#binding)) possible dans ce cas est `bind:this`, puisque les liaisons spécifiques créées par Svelte au moment de la compilation pour le type de l'élément (par ex. `bind:value` pour les éléments ``) ne sont pas compatibles avec un type de balise dynamique. Si `this` a une valeur [nullish](/docs/javascript#nullish), l'élément et ses enfants ne seront pas rendus. Si `this` a pour valeur le nom d'une [balise vide](https://developer.mozilla.org/fr/docs/Glossary/Void_element) (comme `br`), et des enfants ont été fournis à ``, une erreur d'exécution sera levée en mode développement. ```svelte Foo ``` ## `` ```svelte ``` ```svelte ``` L'élément `` permet d'ajouter des fonctions d'écoute d'évènements à l'objet `window` sans avoir à penser à les supprimer quand le composant est détruit, ou sans avoir à vérifier l'existence de `window` lorsque l'on fait des rendus côté serveur. À l'inverse de ``, cet élément peut uniquement être placé à la racine du [markup](/docs/web#markup) d'un composant, et ne doit jamais être à l'intérieur d'un bloc de compilation ou d'un élément. ```svelte ``` Vous pouvez aussi lier (avec `bind:`) les propriétés suivantes : * `innerWidth` * `innerHeight` * `outerWidth` * `outerHeight` * `scrollX` * `scrollY` * `online` — alias de `window.navigator.onLine` * `devicePixelRatio` Toutes ces propriétés sont en lecture seule, à l'exception de `scrollX` and `scrollY`. ```svelte ``` > Notez que la page ne défilera pas à la valeur fournie initialement pour des raisons d'accessibilité. Seuls les changements ultérieurs liés aux variables `scrollX` et `scrollY` déclencheront le défilement. Cependant, si un défilement initial est tout de même nécessaire, vous pouvez utiliser `scrollTo()` dans `onMount()`. ## `` ```svelte ``` ```svelte ``` À l'instar de ``, cet élément vous permet d'ajouter des gestionnaires d'évènement sur `document`, comme `visibilitychange`, qui n'est pas déclenché sur `window`. Cet élément vous permet aussi d'utiliser des [actions](/docs/element-directives#use-action) sur `document`. Comme pour ``, cet élément peut uniquement être utilisé à la racine du [markup](/docs/web#markup) de votre composant, et ne doit jamais être à l'intérieur d'un bloc de compilation ou d'un élément. ```svelte ``` Vous pouvez aussi lier (avec `:bind`) les propriétés suivantes: * `fullscreenElement` * `visibilityState` Elles sont toutes en lecture seule. ## `` ```svelte ``` À l'instar de ``, cet élément vous permet d'ajouter des fonctions d'écoute pour les évènements se produisant sur le `document.body`, comme `mouseenter` et `mouseleave`, qui ne se déclenchent pas sur `window`. Cela permet également d'utiliser des [actions](/docs/element-directives#use-action) sur l'élément ``. Comme pour `` et ``, cet élément peut uniquement être placé à la racine du [markup](/docs/web#markup) d'un composant, et ne doit jamais être à l'intérieur d'un bloc de compilation ou d'un élément. ```svelte ``` ## `` ```svelte ... ``` Cet élément rend possible l'insertion d'éléments dans `document.head`. Lors d'un rendu côté serveur, le contenu de `head` est exposé séparément du contenu `html`. Comme pour ``, `` et ``, cet élément peut uniquement être placé à la racine du [markup](/docs/web#markup) d'un composant, et ne doit jamais être à l'intérieur d'un bloc de compilation ou d'un élément. ```svelte ``` ## `` ```svelte ``` L'élément `` permet de fournir à un composant des options de compilation spécifiques, dont le détail est fourni dans [la section Compilation](/docs/svelte-compiler#compile). Les options disponibles sont: * `immutable={true}` — vous n'utilisez aucune donnée mutable, le compilateur peut donc se contenter d'effectuer des vérifications d'égalité par référence pour déterminer si des valeurs ont changé * `immutable={false}` — utilisé par défaut. Svelte sera plus conservatif pour vérifier si des objets mutables ont changé * `accessors={true}` — ajoute des [getters](/docs/development#getter-setter) et [setters](/docs/development#getter-setter) aux [props](/docs/sveltejs#props) d'un composant * `accessors={false}` — utilisé par défaut * `namespace="..."` — le [namespace](/docs/development#namespace) où ce composant sera utilisé, le plus souvent "svg" ; utilisez le [namespace](/docs/development#namespace) "foreign" pour désactiver l'insensibilité à la casse des noms d'attributs ainsi que les avertissements spécifiques au HTML * `tag="..."` — le nom à utiliser à la compilation de ce composant en [web component](/docs/web#web-component) ```svelte ``` ## `` L'élément `` permet de placer du contenu dans un [slot nommé](/docs/special-elements#slot-slot-name-name) sans l'encadrer par un élément [DOM](/docs/web#dom) supplémentaire. Cela permet de garder la structure de votre document intacte. ```svelte
Aucun en-tête fourni

Du contenu entre l'en-tête et le bas de page

Tous droits réservés.

Copyright (c) 2019 Svelte Industries

```