Ste*_*ell 1 svelte css-in-js sapper
使用 Svelte,我想要完成的是能够html
使用我拥有css
的post
对象的属性来设计我的样式。
我想,没问题,只需在我的svelte:head
with 中添加一个样式标签{post.css}
。它会将我的post.css
数据直接放入样式标签中,viola',问题解决了。但是,不,问题没有解决。当我在浏览器中查看元素时,我看到
<style>{post.css}</style>
代替
<style>
p{
color: purple;
font-weight: 900;
}
</style>
Run Code Online (Sandbox Code Playgroud)
我创建了一个解决办法,我在那里设置innerText
了的<style>
后标签onMount
,但我不喜欢它,宁愿做它一个更清洁的方式。
我想要的是…
<script>
export let post = {
html: `<p>This is purple</p>`,
css : `
p{
color: purple;
font-weight: 900;
}
`
}
</script>
<svelte:head>
<style>{post.css}</style>
</svelte:head>
{@html post.html}
Run Code Online (Sandbox Code Playgroud)
我必须做些什么才能让它发挥作用……
<script>
import { onMount } from "svelte";
export let post = {
html: `<p>This is purple</p>`,
css : `
p{
color: purple;
font-weight: 900;
}
`
}
onMount(() => {
let styler = document.getElementById("styler");
styler.innerText = post.css
});
</script>
<svelte:head>
<style id="styler"></style>
</svelte:head>
{@html post.html}
Run Code Online (Sandbox Code Playgroud)
如果您有任何其他替代方法可以使用该css
属性来html
设置post
对象属性的样式,或者知道如何让 Svelte{post.css}
在<style>
标签中进行识别,请告诉我。
你可以这样做:
{@html `<style>${post.css}</style>`}
Run Code Online (Sandbox Code Playgroud)
请记住,中的样式post.css
将应用于整个页面,而不仅仅是帖子的 HTML。