提问人:leactz 提问时间:11/17/2023 最后编辑:Mark Rotteveelleactz 更新时间:11/17/2023 访问量:24
我可以将样式范围限定为动态 Svelte 组件吗?
Can I scope style to a dynamic Svelte component?
问:
我在将作用域样式应用于动态纤细组件时遇到问题。我正在使用 mdsvex 在 +page.svelte 模板中呈现 markdown 内容。一些内容元(post.title、post.date)直接传送到 +page.svelte 模板,但内容是通过动态组件传送的:
// blog/[slug]/+page.svelte
<hgroup>
<h1>{data.meta.title}<h1>
</hgroup>
<svelte:component this={data.content} />
我发现了如何将 Tailwind 类的范围限定为模板的内容,如下所示:
// blog/[slug]/+page.svelte
<style lang=postcss>
h1 {
@apply text-3xl font-bold text-primary-500
}
</style>
如何让这些作用域内的类也应用于动态 Svelte 组件的内容?可能吗?
目前,作用域样式仅适用于 +page.svelte 中直接呈现的内容元。(这无关紧要,因为我可以简单地在这些元素上内联类,这是我无法在 markdown 内容上做的事情,这就是为什么包含 markdown 内容正文的动态组件的作用域样式很有用。
我希望这是有道理的,请为我指出正确的方向!
答:
0赞
brunnerh
11/17/2023
#1
您可以添加一个包装器,使用它来限定范围,然后 :global
将动态呈现内容中的元素作为目标:
<div class="wrapper">
<svelte:component ... />
</div>
<style lang=postcss>
.wrapper { display: contents; } /* if necessary for layout */
.wrapper :global(.some-selector) {
@apply font-bold
}
</style>
评论