怎么在Vue单文件组件中使用Scoped CSS穿透修改样式

秋明君_4735

秋明君_4735

2026-10-23

779人浏览

原创

scoped样式穿透需匹配构建工具链、预处理器和vue版本;vue 2支持/deep/和::v-deep(须带括号),vue 3仅支持::v-deep()或官方推荐的:deep(),且选择器层级必须正确,穿透前提为目标元素真实存在dom中。

怎么在vue单文件组件中使用scoped css穿透修改样式

scoped样式穿透不是“加个符号就能生效”,而是要匹配当前构建工具链、预处理器和Vue版本的组合。用错语法,样式直接不编译或不生效,连浏览器开发者工具里都看不到对应规则。

Vue 2 和 Vue 3 的 ::v-deep 用法差异

Vue 2(vue-cli 4.5 及以下)支持 /deep/ 和 ::v-deep,但后者必须写成伪元素形式,且不能省略括号;Vue 3(Vite + @vue/compiler-sfc)只认 ::v-deep(),括号不可省略,/deep/ 和 >>> 已被废弃。

  • ::v-deep 在 Vue 2 中可写作 ::v-deep .child 或 ::v-deep(.child),两者都行
  • ::v-deep 在 Vue 3 中必须带括号:::v-deep(.child),写成 ::v-deep .child 会被忽略
  • 如果项目用了 Vite + Vue 3,但还在用 /deep/,CSS 会原样输出,浏览器不识别,样式无效
  • 在 SFC 的 <style lang="scss"></style> 里写 >>> 会导致 Sass 编译报错,因为 >> 是 Sass 的右移操作符

为什么 ::v-deep() 有时还是不生效

根本原因不是写法错了,而是选择器层级没对上——::v-deep() 只解除它**后面那个选择器**的 scoped 限制,前面的选择器仍受当前组件 scope 约束。

vue-composition-api-best-practices
vue-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 6万人学习

CSS教程
CSS教程

共754课时 | 98.3万人学习