首页 > 解决方案 > Vue 范围样式不适用于已添加到插槽中的元素

问题描述

将我的样式移动到语言环境设置,但看到当我将元素插入插槽容器时,它们将不起作用。我想这是正常的,如果有办法解决这个问题,请记住不,我不会将父(.child)样式放在父组件中,不,我想将我的 CSS 保存在单独的 scss 文件中。

组件(父)

<template>
   <wrapper>
       <div class="child">Hello</div>
   </wrapper>
</template>

组件(称为包装器)

<template>
   <div class="wrapper">
       <slot></slot>
   </div>
</template>

<style lang="scss" scoped>
@import "../../../sass/components/_container.scss";
</style>

容器.scss

.wrapper{
    background-color:#333;

    .child{
         background-color:#fff;// not doing anything
    }
}

标签: vue.jssass

解决方案


您可以使用v-deep组合器来定位子元素/组件,例如:

.wrapper::v-deep .child { background-color:#fff; }

有关更多详细信息,请参阅深度选择器文档

更新

它似乎::v-deep .child已被弃用。使用::v-deep(.child) {}:deep(.child) {}代替。有关更多详细信息,请参阅RFC


推荐阅读