HTML 要素の class 属性の値を動的に変化させることで、スタイルの切り替えをしたいことはよくあります。 ナビゲーションメニューで、現在表示しているページをハイライトするのは典型的な例です。
ここでは、ボタンを押すことで Off/On できる簡単なランプ (Lamp
) コンポーネントを作ってみます。
ポイントは下記の部分で、active
変数の値が true
のときに、class
属性に active
を追加するようにしています。
<div class="lamp {active ? 'active' : ''}" />
ただし、これは Svelte では冗長な書き方です。
上記のように、boolean 変数名と CSS のクラス名が同じ場合(ここでは active
)、Svelte では class:クラス名
という省略記述が可能です。
<div class="lamp" class:active />
変数名が異なる場合(例えば active
ではなく isActive
である場合)は、class:クラス名={変数名}
のように指定することができます。
<div class="lamp" class:active={isActive} />
このような機能がライブラリではなく、言語的に組み込まれているのが Svelte の強みですね。