【问题标题】:How to apply styles to slot element in Svelte?如何将样式应用于 Svelte 中的插槽元素?
【发布时间】:2018-02-15 14:37:51
【问题描述】:

我希望将一个模块中声明的样式应用于该模块的插槽元素(在另一个文件中填充)。

这是以下示例的Svelte REPL

App.html

<List>
    {{#each items as item}}
        <li><a>{{item}}</a></li>
    {{/each}}
</List>

<script>
    import List from './List.html'

    export default {
        components: {
            List
        }
    }
</script>

List.html

<h1>A Special List</h1>
<ul>
    <li><a>Let's all be red!</a></li>
    <slot></slot>
</ul>

<style>
    ul a {
        color: red;
    }
</style>

数据

{
    "items": ["Nope", "I'm good"]
}

红色不适用于通过槽添加的a 标记元素。

我对 Svelte 很陌生,但我在网上找到了尽可能多的内容,但似乎找不到解决方案。任何帮助将不胜感激,谢谢。

【问题讨论】:

    标签: svelte


    【解决方案1】:

    这里的技巧是选择加入级联,使用:global(...) 修饰符。在您的 List 组件中:

    <style>
      ul :global(a) {
        color: red;
      }
    </style>
    

    这意味着'作为该组件的ul 元素的子元素的任何a 元素,无论它们是否属于该组件,都应该是红色的。

    【讨论】:

    • 非常感谢。这在任何地方都有记录吗?我似乎找不到任何东西。编辑:我看到它在 cascade 选项下的 svelte README 中提到。
    • 是的,我们需要更好地在文档中涵盖这一点。我会为它提出一个问题
    • 如何在:global()中使用子选择器&gt;
    • 很好的答案。这个功能对我来说并不明显(因此我在这里),虽然它记录在 svelte.dev/docs#style 中,但我错过了它,因为我依赖的是 svelte/tutorial。
    猜你喜欢
    • 1970-01-01
    • 2023-02-15
    • 2010-12-22
    • 2014-12-08
    • 1970-01-01
    • 2017-08-09
    • 2016-05-03
    • 1970-01-01
    • 2012-09-23
    相关资源
    最近更新 更多