Il y a deux manières de définir des classes sur les éléments : l'attribut `class`, et la directive
`class:`.
## Attributs [!VO]Attributes
Les valeurs primitives sont traitées comme n'importe quel autre attribut :
```svelte
...
```
> [!NOTE]
> For des raisons historiques, les valeurs falsy (comme `false` ou `NaN`) sont stringifiées
> (`class="false"`), alors que `class={undefined}` (ou `null`) provoquent l'omission de l'attribut.
> Dans une version future de Svelte, toutes les valeurs falsy vont provoquer l'omission de `class`.
### Objets et tableaux [!VO]Objects and arrays
Depuis Svelte 5.16, `class` peut être un objet ou un tableau, et sera convertie en chaîne de
caractères en utilisant [clsx](https://github.com/lukeed/clsx).
Si la valeur est un objet, les clés truthy sont ajoutées :
```svelte
...
```
Si la valeur est un tableau, les valeurs truthy sont combinées :
```svelte
...
```
Notez que peu importe si vous utilisez la forme tableau ou la forme objet, vous pouvez définir
plusieurs classes en même temps avec une seule condition, ce qui est particulièrement utile si vous
utilisez des outils comme Tailwind.
Les tableaux peuvent contenir des tableaux et des objets, et clsx se chargera de les "aplatir". Ceci
est utile pour combiner les classes locales avec des props, par exemple :
```svelte
```
Le consommateur du composant ci-dessus peut utiliser tout aussi bien un mélange d'objets, de
tableaux et de chaînes de caractères :
```svelte
```
Svelte expose également le type `ClassValue`, qui est le type de valeur que l'attribut `class` des
éléments attend. Ceci est utile si vous renforcer le typage des noms de classe dans vos props de
composant :
```svelte
...
```
## La directive `class:` [!VO]The `class:` directive
Avant Svelte 5.16, la directive `class:` était la manière la plus efficace de définir des classes de
manière conditionnelle sur des éléments.
```svelte
...
...
```
Comme pour les autres directives, il est possible d'utiliser une syntaxe raccourcie lorsque le nom
de la classe coïncide avec la valeur :
```svelte
...
```
> [!NOTE] À moins que vous n'utilisiez une version ancienne de Svelte, il est recommandé d'éviter
> `class:`, puisque la syntaxe d'attribut est plus puissante et plus flexible.