18

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

这是以下示例的Svelte REPL :

应用程序.html

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

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

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

列表.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 很陌生,但我在网上找到了尽可能多的内容,但似乎找不到解决方案。任何帮助将不胜感激,谢谢。

4

1 回答 1

42

这里的诀窍是使用:global(...)修饰符选择加入级联。在您的列表组件中:

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

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

于 2017-09-07T10:52:50.930 回答