使用组件内 <style> 标签(未使用 CSS 选择器)为 Svelte 组件的 {@html...} 标签设置样式
Styling a {@html...} tag of a Svelte component by ising the in-component <style> tag (Unused CSS selector)
我正在尝试向 Svelte 组件的 {@hml...} 标记内呈现的 HTML 标记添加一些样式,但它似乎只继承了父项的样式(容器{@html...} 标签)。此外,弹出未使用的 CSS 选择器错误,显示我在 Svelte {@html...} 标签内的特定 HTML 标签的样式选择器根本不起作用。 Svelte 是以这种方式构建的吗?是否有一种方法可以在 Svelte {@html...} 标签内设置标签样式?
我已经尝试了 Svelte 官方教程中提供的步骤,但它们并没有清楚地说明如何操作。
<style>
p{
color: red;
}
h1{
color: blue;
}
</style>
<script>
let string = "<h1>what</h1>";
</script>
<p>{@html string}</p>
<p>no</p>
我希望 h1 标签为蓝色,而不是继承 p 标签的红色
这可能是一个错误(但 Svelte 似乎很难知道该字符串中可能存在什么)。
作为(丑陋的)解决方法,您可以选择内联指定所需的样式。例如,
<script>
let string = `<h1 style="color:blue;">what</h1>`;
</script>
编辑:Svelte creator 已经回答了官方使用 :global
.
的方式
您需要使用 :global(...)
修饰符。如果你这样做...
:global(h1) { color: blue }
...它将应用于页面上的所有 <h1>
元素——包括 {@html ...}
标记内的元素和其他组件中存在的任何元素。
要将其限制为该组件内的元素,请将选择器放在本地选择器内:
p :global(h1) { color: blue }
该选择器将仅应用于属于该组件的 <p>
个元素内的 <h1>
个元素。 Here's a demo
我正在尝试向 Svelte 组件的 {@hml...} 标记内呈现的 HTML 标记添加一些样式,但它似乎只继承了父项的样式(容器{@html...} 标签)。此外,弹出未使用的 CSS 选择器错误,显示我在 Svelte {@html...} 标签内的特定 HTML 标签的样式选择器根本不起作用。 Svelte 是以这种方式构建的吗?是否有一种方法可以在 Svelte {@html...} 标签内设置标签样式?
我已经尝试了 Svelte 官方教程中提供的步骤,但它们并没有清楚地说明如何操作。
<style>
p{
color: red;
}
h1{
color: blue;
}
</style>
<script>
let string = "<h1>what</h1>";
</script>
<p>{@html string}</p>
<p>no</p>
我希望 h1 标签为蓝色,而不是继承 p 标签的红色
这可能是一个错误(但 Svelte 似乎很难知道该字符串中可能存在什么)。
作为(丑陋的)解决方法,您可以选择内联指定所需的样式。例如,
<script>
let string = `<h1 style="color:blue;">what</h1>`;
</script>
编辑:Svelte creator 已经回答了官方使用 :global
.
您需要使用 :global(...)
修饰符。如果你这样做...
:global(h1) { color: blue }
...它将应用于页面上的所有 <h1>
元素——包括 {@html ...}
标记内的元素和其他组件中存在的任何元素。
要将其限制为该组件内的元素,请将选择器放在本地选择器内:
p :global(h1) { color: blue }
该选择器将仅应用于属于该组件的 <p>
个元素内的 <h1>
个元素。 Here's a demo