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.