CSS中 ::deep 作用,使用场景,使用方法介绍

::deep 是 Vue 中 scoped 样式的一个穿透语法,它的核心作用是:强制让父组件的样式穿透子组件的根节点或内部元素,从而覆盖子组件或第三方 UI 库的样式。

作用

当给

使用场景

  1. 修改第三方 UI 库:直接修改 Element Plus、Vant 等库的内部样式,这些样式通常不受 scoped 影响。
  2. 修改子组件根节点:父组件需要调整子组件最外层容器的布局(如边距、宽度)。
  3. 修改子组件内部深层元素:子组件内部结构复杂,需要穿透多层选择器进行样式覆写。

使用方法

  1. 修改子组件根节点
css 复制代码
/* 父组件 */
<style scoped>
/* 作用于子组件 MyComponent 的根元素 */
::deep(.child-component) {
  border: 1px solid red;
}
</style>
  1. 修改子组件内部深层元素
css 复制代码
<style scoped>
/* 作用于子组件内部的 .header 元素 */
::deep(.child-component .header) {
  background-color: blue;
}
</style>
  1. 针对 UI 库动态类名
css 复制代码
<style scoped>
/* 覆盖 Element Plus 的输入框样式 */
::deep(.el-input__wrapper) {
  box-shadow: 0 0 0 1px #ff0000 inset;
}
</style>

注意:早期 Vue 2 中使用的 /deep/ 或 >>> 已被废弃,统一使用 ::deep。如果你在使用 scss 等预处理器,写法不变。

如果项目未使用 scoped,则不需要 ::deep,直接编写全局样式即可覆盖。

相关推荐
爱看老照片2 小时前
uniapp传递数值(数字)时需要使用v-bind的形式(加上冒号)
javascript·vue.js·uni-app
#做一个清醒的人2 小时前
Electron 保活方案:用子进程彻底解决原生插件崩溃问题
前端·electron·node.js
四千岁2 小时前
Obsidian + jsDelivr + PicGo = 免费无限图床:一键上传,全平台粘贴即发
前端·程序员·github
周聪灬2 小时前
iOS runtime(2)-class结构和消息转发机制
前端
周聪灬2 小时前
浅谈对Objective-C的对象本质的理解
前端
掘金安东尼2 小时前
⏰前端周刊第 459 期v2026.4.3
前端·javascript·面试
clove2 小时前
深刻理解--递归这个新概念
前端
pan3035074792 小时前
在 Vue 3 + Vite 项目中覆盖 Element Plus 的默认样式
前端·vue.js·rust
Qlittleboy2 小时前
将公共数据挂在 Vue 原型上(简单、适合 CDN)
前端·javascript·vue.js