【发布时间】:2021-06-06 09:26:09
【问题描述】:
总结:我需要从子组件设置<slot> 的内容样式。我正在使用作用域 css 并且样式不适用:
我有以下两个组件:
<!-- Parent.vue -->
<template>
<h1>{{ msg }} from Parent</h1>
<Child>
<h1>{{ msg }} from Child</h1>
</Child>
</template>
...
<style scoped>
h1 {
color: green;
}
</style>
<!-- Child.vue -->
<template>
<slot></slot>
</template>
...
<style scoped>
h1 {
color: red;
}
</style>
我希望第二个<h1> 是红色的,但它是绿色的,因为该组件是用类似的东西呈现的:
<h1 data-v-452d6c4c data-v-2dcc19c8-s>Hello from Child</h1>
<style>
h1[data-v-452d6c4c] {
color: green;
}
h1[data-v-2dcc19c8] {
color: red;
}
</style>
data-v-452d6c4c 来自 Parent,data-v-2dcc19c8-s 来自 Child
如果<h1> 标记中的第二个属性只是data-v-2dcc19c8,我想要的样式将被应用,但由于它有-s 后缀(插槽?),它没有。
我可能会找到一些其他的解决方案,比如类或其他东西,但我很少使用<slot>,我想了解内部工作原理。 -s 告诉我,我正在尝试做的事情可以在框架的帮助下处理,我错过了什么?
一个工作样本:
【问题讨论】:
标签: css vue.js vue-component vuejs3 vue-slot