要素にクラスを設定する方法は2つあります: `class` 属性と `class:` ディレクティブです。
## Attributes
プリミティブな値は他の属性と同じように扱われます:
```svelte
...
```
> [!NOTE]
> 歴史的な理由により、falsy な値 (例えば `false` や `NaN`) は文字列化されます (`class="false"`) が、`class={undefined}` (または `null`) の場合、属性が完全に省略されます。将来の Svelte バージョンでは、すべての falsy の値で `class` が省略されるようになります。
### Objects and arrays
Svelte 5.16以降、`class` はオブジェクトや配列で指定でき、[clsx](https://github.com/lukeed/clsx) で文字列に変換されます。
値がオブジェクトの場合、truthy なキーが追加されます:
```svelte
...
```
値が配列の場合、truthy な値が結合されます:
```svelte
...
```
配列形式でもオブジェクト形式でも、1つの条件で複数のクラスを同時に設定できます。これは、Tailwind のようなものを使用している場合に特に便利です。
配列は配列やオブジェクトを含むことができ、clsx がそれらをフラットにします。例えば、ローカルクラスと props を組み合わせる際に便利です:
```svelte
```
このコンポーネントのユーザーは、オブジェクト、配列、文字列を混在させる柔軟性を得ることができます:
```svelte
```
Svelte はまた、要素の `class` 属性が受け入れる値の型である `ClassValue` 型を公開しています。これは、コンポーネントの props に型安全なクラス名を使用したい場合に便利です:
```svelte
...
```
## The `class:` directive
Svelte 5.16以前では、`class:` ディレクティブは条件付きで要素にクラスを設定する最も便利な方法でした。
```svelte
...
...
```
他のディレクティブと同様に、クラス名が値と一致する場合は短縮形を使用できます:
```svelte
...
```
> [!NOTE] 古いバージョンの Svelte を使用していない限り、`class:` を避けることを検討してください。属性の方がより強力でコンポーザブル (composable) だからです。