如何在vue中的scss中使用深度选择器

lei*_* li 8 vue.js

如何在 vue 的 scss 中使用深度选择器?

下面的代码不起作用。

<style lang="scss" scoped>
.a{
 &>>>.b{
  ...
 }
}
</style>
Run Code Online (Sandbox Code Playgroud)

一个类似于>>>incss但在scssvue 单文件组件中的深度选择器。

Nic*_*sen 8

从 vue 文档:

“某些预处理器,例如 Sass,可能无法正确解析 >>>。在这些情况下,您可以使用 /deep/ 组合器代替 - 它是 >>> 的别名,并且工作方式完全相同。”

所以试试这个:

<style lang="scss" scoped>
.a {
 /deep/ .b {
  ...
 }
}
</style>
Run Code Online (Sandbox Code Playgroud)

  • 这将更改/已经更改,具体取决于您对 SCSS 的实施。如果您使用的是 `dart-sass` 那么这将 ** 不** 工作。您需要使用 `::v-deep` 代替 [GH 评论](https://github.com/vuejs/vue-cli/issues/3399#issuecomment-466319019)。如果你正在使用`node-sass`,那么你可以继续使用`/deep/`,直到他们赶上并取消对它的支持。 (10认同)

小智 6

我遇到了同样的问题,我最终::v-deep按照此处的说明解决了这个问题:

https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors

<style lang="scss" scoped>
.v-input {
  ::v-deep .v-text-field__details {
    min-height: 0;
    margin: 0;
    .v-messages {
      min-height: 0;
    }
  }
}
</style>
Run Code Online (Sandbox Code Playgroud)