为什么 /deep/ 现在不推荐使用?

  1. 兼容性和标准化问题
    /deep/ 是早期 Vue 项目中配合 scoped 样式使用的深度选择器,用于穿透组件的样式隔离(修改子组件或第三方组件的样式)。但它并非官方标准语法,而是某些预处理器(如 Less、Sass)和构建工具(如旧版 Webpack)的 "非标准实现",在不同环境中可能存在解析问题。

  2. Vue 3 的语法调整

    在 Vue 3 中,官方明确推荐使用 ::v-deep 替代 /deep/,因为 ::v-deep 是 Vue 框架定义的标准化深度选择器语法,兼容性更好,且在单文件组件(SFC)中更符合规范。

  3. CSS 原生穿透方案的兴起

    随着 CSS 原生 :deep() 伪类的普及(属于 CSS 嵌套规范的一部分),现代项目更倾向于使用标准的 :deep() 替代非标准的 /deep/ 或 ::v-deep,因为它不依赖框架或预处理器,兼容性更广泛(现代浏览器和构建工具已普遍支持)。

替代方案推荐

如果要实现 "穿透 scoped 样式修改子组件样式",现在更推荐的写法是:

  1. Vue 3 及现代项目:使用 :deep()

    这是 CSS 原生语法(需配合支持 CSS 嵌套的环境,如 PostCSS 或现代浏览器),也是 Vue 3 官方推荐的写法:

复制代码
   /* 无需 /deep/,直接使用 :deep() */
   :deep(.ant-modal-content) {
     height: 100%;
     .ant-modal-body {
       height: calc(100% - 55px);
     }
     .ant-modal-footer {
       display: none;
     }
   }

Vue 2 项目:使用 ::v-deep

若仍在维护 Vue 2 项目,::v-deep 是比 /deep/ 更规范的替代方案,兼容性更稳定:

less

复制代码
   ::v-deep .ant-modal-content {
     /* 样式内容 */
   }
相关推荐
程序员Sunday8 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
Setsuna_F_Seiei9 小时前
前端转型 Agent 开发 06 之 Agent Memory 记忆系统(让 Agent 更智能,更懂你)
前端·agent·ai编程
zhangzeyuaaa9 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
默_笙10 小时前
🌊 向量库和 ES 都查不出"关系",我只好给奶茶建了一张人脉网
前端·javascript
优选资讯10 小时前
标签打印软件怎么对接 Excel 数据
前端·excel
思无邪6610 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
一个风轻云淡11 小时前
GCC 和 GDB命令简单解读
java·linux·前端
u01110267512 小时前
图片处理接口如何统一错误信息 前端提示与后端错误码设计
前端·状态模式
福兮说12 小时前
浏览器里把 iPhone 的 HEIC 转成 JPG:Chrome 解不开、转完大了七成、拍摄时间全丢,六个坑实测
前端·javascript·图像处理·chrome·ios·iphone·heic
libokaifa12 小时前
把语音模型塞进手机:sherpa-onnx 在 Android 上的 ASR / TTS
前端