首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何用css在svelte中瞄准组件?

如何用css在svelte中瞄准组件?
EN

Stack Overflow用户
提问于 2019-07-11 12:01:16
回答 6查看 16.3K关注 0票数 31

我怎么做这样的事:

代码语言:javascript
运行
复制
<style>
Nested {
    color: blue;
}
</style>

<Nested />

例如,如何将样式应用于来自其父组件的组件?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2020-01-24 10:08:12

您需要通过export将道具传递给父组件,然后将这些道具绑定到子组件中的类或样式。

您可以在要动态样式的子元素中放置一个样式标记,并使用您为父元素导出的变量直接确定样式的值,然后将标记上的颜色分配如下:

代码语言:javascript
运行
复制
<!-- in parent component -->

<script>
import Nested from './Nested.svelte';
</script>

<Nested color="green"/>
代码语言:javascript
运行
复制
<!-- in Nested.svelte -->

<script>
export let color;
</script>

<p style="color: {color}">
    Yes this will work
</p>

如果您只有一两种样式可调整,则这里的优点是灵活性,缺点是您无法从单个支柱中调整多个CSS属性。

您仍然可以使用:全局选择器,但只需将特定的ref添加到子元素中的样式,如下所示:

代码语言:javascript
运行
复制
<!-- in parent component -->

<script>
import Nested from './Nested.svelte';
</script>

<Nested ref="green"/>

<style>
:global([ref=green]) {
    background: green;
    color: white;
    padding: 5px;
    border-radius: .5rem;
}
</style>
代码语言:javascript
运行
复制
<!-- in Nested.svelte -->

<script>
export let ref;
</script>

<p {ref}>
    Yes this will work also
</p>

这确保全局只会影响子元素中的确切的ref元素,而不会影响任何其他类或本机元素。你可以在行动在这个REPL链接上中看到它

票数 20
EN

Stack Overflow用户

发布于 2019-07-11 12:51:01

我唯一能想到的方法是使用一个额外的div元素。

App.svelte

代码语言:javascript
运行
复制
<script>
    import Nested from './Nested.svelte'    
</script>

<style>
    div :global(.style-in-parent) {
        color: green;
    }
</style>

<div>
    <Nested />  
</div>

Nested.svelte

代码语言:javascript
运行
复制
<div class="style-in-parent">
    Colored based on parent style
</div>

多嵌套元素

如果您使用多个Nested组件,甚至可以允许类名是动态的,并且允许不同的颜色。这是一个链接到工作示例

票数 12
EN

Stack Overflow用户

发布于 2020-07-14 04:21:20

您可以使用内联样式和$$props..。

代码语言:javascript
运行
复制
<!-- in parent component -->

<script>
import Nested from './Nested.svelte';
</script>

<Nested style="background: green; color: white; padding: 10px; text-align: center; font-weight: bold" />
代码语言:javascript
运行
复制
<!-- in Nested.svelte -->

<script>
    let stylish=$$props.style
</script>

<div style={stylish}>
    Hello World
</div>

REPL

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56988717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档