svelte - 使用 Svelte,如何在 <svelte :head> with a Javascript string variable? 中填充 &lt;style&gt; 标记

标签 svelte sapper css-in-js

使用 Svelte,我想要完成的是能够为我的 html 设置样式使用 css post 的属性(property)我有的对象。

我想,没问题,只需在我的svelte:head 中添加一个样式标签即可与 {post.css} .它会丢弃我的post.css数据直接进入样式标签,中提琴,问题解决了。但是,不,问题没有解决。当我在浏览器中查看元素时,我看到了

<style>{post.css}</style>

而不是

<style>
  p{
    color: purple;
    font-weight: 900;
  }
 </style>

我创建了一个变通方法,我在其中设置了 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}

我必须做些什么才能让它发挥作用……

<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}

如果您有任何其他选择来使用 css属性来设置 html 的样式post 的属性(property)对象,或者知道如何让 Svelte 识别 {post.css}<style>标签,请告诉我。

最佳答案

你可以这样做:

{@html `<style>${post.css}</style>`}

请记住,post.css 中的样式将应用于整个页面,而不仅仅是帖子的 HTML。

Demo

关于svelte - 使用 Svelte,如何在 <svelte :head> with a Javascript string variable? 中填充 &lt;style&gt; 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160164/

相关文章:

javascript - 如何将 sapper 应用程序中的 stripe.js 导入到我的 preload() 或 onMount() 中

session - 重新加载当前页面以填充 session

css - withStyles 的 Material UI 潜在性能缓慢

javascript - 从 JavaScript 设置 CSS 伪类规则

svelte - 将 Autoprefixer 添加到 Svelte & Parcel 项目?

javascript - SvelteKit 维护模式

typescript - 根据另一个属性值键入 Svelte 组件属性

svelte - 这个 vite 错误是什么意思?语法错误 : Unexpected token (6:180) at Object. pp$4.raise

javascript - 处理样式组件中的 props 组合

webpack - 使用 Svelte 仅捆绑主要组件