CSS中的深度选择器 deep 详解

什么是深度选择器?

在Vue等框架中,当我们使用组件作用域样式(Scoped CSS)时,有时需要修改子组件内部的样式。这时就需要用到深度选择器。

深度选择器的几种写法

1. >>> 语法

css 复制代码
.parent >>> .child {
  color: red;
}

2. /deep/ 语法

css 复制代码
.parent /deep/ .child {
  background: blue;
}

3. ::v-deep 语法(推荐)

css 复制代码
.parent ::v-deep .child {
  font-size: 16px;
}

使用场景

1. 修改第三方组件样式

vue 复制代码
<style scoped>
.my-component ::v-deep .el-input__inner {
  height: 40px;
}
</style>

2. 修改多层级子组件样式

vue 复制代码
<style scoped>
.parent ::v-deep .child .grandchild {
  border: 1px solid #ccc;
}
</style>

注意事项

  1. 深度选择器只在使用 scoped 属性的样式块中才有效
  2. 在 Sass/SCSS 中使用 /deep/ 可能会出现编译问题,推荐使用 ::v-deep
  3. Vue 3.x 中推荐使用 :deep() 新语法:
css 复制代码
.parent :deep(.child) {
  color: red;
}

最佳实践

  1. 优先使用组件提供的 API 来修改样式
  2. 如果必须使用深度选择器,推荐使用 ::v-deep 或 Vue 3 的 :deep()
  3. 合理使用命名空间,避免样式污染

总结

深度选择器是在使用组件作用域样式时的重要工具,它让我们能够在不破坏组件封装的前提下修改子组件样式。但应该谨慎使用,优先考虑其他更好的样式解决方案。

相关推荐
Spider_Man2 分钟前
🎭 React受控与非受控组件:一场"控制权"的争夺战
前端·react.js
Mintopia7 分钟前
LOD:图形世界里的 “看人下菜碟” 艺术
前端·javascript·计算机图形学
黑客老李9 分钟前
EDUSRC:智慧校园通用漏洞挖掘(涉校园解决方案商)
服务器·前端·网络·安全·web安全
拾光拾趣录10 分钟前
Vue依赖收集机制:响应式原理的核心实现
前端·vue.js
Mintopia11 分钟前
Three.js ArrowHelper:三维世界里的 “方向向导”
前端·javascript·three.js
归于尽13 分钟前
浏览器和 Node.js 的 EventLoop,原来差别这么大
前端·node.js·浏览器
雲墨款哥14 分钟前
Vue 3 路由管理实战:从基础配置到性能优化
前端·vue.js
Jacob023417 分钟前
JavaScript 模块系统二十年:混乱、分裂与出路
前端·javascript
独立开阀者_FwtCoder23 分钟前
Vite Devtools 要发布了!期待
前端·面试·github
独立开阀者_FwtCoder23 分钟前
国外最流行的 UI 组件库!适配 Vue、React、Angular!
前端·vue.js·后端