不推荐使用 Vue 3 ::v-deep 作为组合器。使用 ::v-deep(<inner-selector>) 代替

Man*_*tha 8 css vue.js vuejs3

我开始在 Vue 3 中::v-deep使用以下警告。

::v-deep usage as a combinator has been deprecated. Use ::v-deep(<inner-selector>) instead
Run Code Online (Sandbox Code Playgroud)

CSS 如下所示:

.parent ::v-deep .child {
   ...
}
Run Code Online (Sandbox Code Playgroud)

使用建议选项的正确方法是::v-deep(<inner-selector>)什么?

eig*_*all 75

小更新:现在,您需要将其更改为:

.parent :deep(.child) {
    (CSS rules)
}
Run Code Online (Sandbox Code Playgroud)


小智 13

Vue 2.7 中也出现此问题

[@vue/compiler-sfc] ::v-deep usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead.
Run Code Online (Sandbox Code Playgroud)

我认为上述解决方案都不能解决该警告。

编辑工作使用:

:deep() {
  .class {}
}
Run Code Online (Sandbox Code Playgroud)

但它也发现 npm 依赖项有错误

  • 几周前,我随机开始在 nuxt 2.15.7 应用程序中遇到此错误,我不知道该怎么办。我会尝试你的解决方案,但我有点不鼓励尝试使用我必须更新的 v-deeps 数量,并且它仍然会触发依赖项。 (2认同)

ski*_*tle 10

相关的 RFC 在这里:

https://github.com/vuejs/rfcs/blob/master/active-rfcs/0023-scoped-styles-changes.md

我相信您需要将其更改为:

.parent ::v-deep(.child) {
Run Code Online (Sandbox Code Playgroud)

  • 如果 ::v-deep 后面有一个物体怎么办?如何将其转换为 :deep() 格式?例如: ::v-deep { .sortable-ghost { 不透明度:.8; 颜色:#fff!重要;} .el-tag { 光标:指针;} } (6认同)