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,直接编写全局样式即可覆盖。

相关推荐
踩着两条虫12 小时前
VTJ 平台六大设计模式落地实战指南
开发语言·前端·人工智能·低代码·设计模式·重构·架构
Yeats_Liao12 小时前
后台 Sidebar 伸缩交互(PC + 移动端)实现
前端·javascript·css·html5
MXN_小南学前端12 小时前
computed 计算属性详解:触发时机、实战场景、Vue2 与 Vue3 对比
前端·javascript·vue.js
isNotNullX12 小时前
数据大屏怎么做?数据大屏有哪四个核心环节
开发语言·前端·javascript
漫游的渔夫13 小时前
RAG 落地 3 个月,我才发现排序(Rerank)比检索更重要
前端·人工智能
衣乌安、13 小时前
Agent之ReAct
前端·ai
六月的可乐13 小时前
知识库检索入门:从普通 RAG、知识图谱 RAG 到 LLM Wiki,一篇讲清原理、区别与选型
vue.js·人工智能·openai
CodeAI13 小时前
不会 Next.js 你好意思说自己是 React 开发者?从零到上线一条龙
前端
霁月的小屋13 小时前
不只是压缩:当模型蒸馏开始复制人格
前端·ai
inksci13 小时前
使用飞帆的上传组件
前端·javascript