是否可以在同一个 page/component 上选择两个不同设计的 类?
Is it possible to have two selected classes with different designs on the same page/component?
Svelte 有很好的 tool 用于定义 类 的设计,但是是否可以在一个组件中定义两个不同的 类?
我正在处理菜单,它位于一个组件中。重新加载页面时,我需要 'selected' 两个按钮,一个来自主菜单,第二个来自子菜单,但似乎即使 类 具有不同的名称和变量,它也只会激活一个其中 - 第一个。是否可以在一个组件中同时 select 更多 classes/active-buttons?
您可以在同一组件中、不同元素上使用多个 class:
指令,也可以在单个元素上多次使用。
在单个元素上,您可以使用 class=
属性混合和匹配多个 class:
指令。 Svelte 将合并结果。
如以下代码(和REPL)所示,所有这些都受支持:
<script>
let name = 'world';
let red = false
let underline = false
let align = "left"
</script>
<p>
<label class:selected={red}>
<input type="checkbox" bind:checked={red} />
Red
</label>
</p>
<p>
<label class:selected={underline}>
<input type="checkbox" bind:checked={underline} />
Underline
</label>
</p>
<p>
Align
<label class:selected={align === "left"}>
<input type="radio" value="left" bind:group={align} />
left
</label>
<label class:selected={align === "center"}>
<input type="radio" value="center" bind:group={align} />
center
</label>
<label class:selected={align === "right"}>
<input type="radio" value="right" bind:group={align} />
right
</label>
</p>
<h1
class="align-{align}"
class:red
class:underline
>
Hello {name}!
</h1>
<style>
.red {
color: red;
}
.underline {
text-decoration: underline;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
label {
padding: .5em .5em .25em;
}
label.selected {
background: lavender;
}
</style>
具有多个 class
指令并与 class
属性混合的单个元素:
<h1
class="align-{align}"
class:red
class:underline
>
Hello {name}!
</h1>
在多个元素上使用相同的 class (selected
):
<p>
<label class:selected={red}>
<input type="checkbox" bind:checked={red} />
Red
</label>
</p>
<p>
<label class:selected={underline}>
<input type="checkbox" bind:checked={underline} />
Underline
</label>
</p>
你的情况肯定有其他问题(或者我没听懂你的问题)。
Svelte 有很好的 tool 用于定义 类 的设计,但是是否可以在一个组件中定义两个不同的 类?
我正在处理菜单,它位于一个组件中。重新加载页面时,我需要 'selected' 两个按钮,一个来自主菜单,第二个来自子菜单,但似乎即使 类 具有不同的名称和变量,它也只会激活一个其中 - 第一个。是否可以在一个组件中同时 select 更多 classes/active-buttons?
您可以在同一组件中、不同元素上使用多个 class:
指令,也可以在单个元素上多次使用。
在单个元素上,您可以使用 class=
属性混合和匹配多个 class:
指令。 Svelte 将合并结果。
如以下代码(和REPL)所示,所有这些都受支持:
<script>
let name = 'world';
let red = false
let underline = false
let align = "left"
</script>
<p>
<label class:selected={red}>
<input type="checkbox" bind:checked={red} />
Red
</label>
</p>
<p>
<label class:selected={underline}>
<input type="checkbox" bind:checked={underline} />
Underline
</label>
</p>
<p>
Align
<label class:selected={align === "left"}>
<input type="radio" value="left" bind:group={align} />
left
</label>
<label class:selected={align === "center"}>
<input type="radio" value="center" bind:group={align} />
center
</label>
<label class:selected={align === "right"}>
<input type="radio" value="right" bind:group={align} />
right
</label>
</p>
<h1
class="align-{align}"
class:red
class:underline
>
Hello {name}!
</h1>
<style>
.red {
color: red;
}
.underline {
text-decoration: underline;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
.align-right {
text-align: right;
}
label {
padding: .5em .5em .25em;
}
label.selected {
background: lavender;
}
</style>
具有多个 class
指令并与 class
属性混合的单个元素:
<h1
class="align-{align}"
class:red
class:underline
>
Hello {name}!
</h1>
在多个元素上使用相同的 class (selected
):
<p>
<label class:selected={red}>
<input type="checkbox" bind:checked={red} />
Red
</label>
</p>
<p>
<label class:selected={underline}>
<input type="checkbox" bind:checked={underline} />
Underline
</label>
</p>
你的情况肯定有其他问题(或者我没听懂你的问题)。