当前位置: 首页 > news >正文

Vue3.x的深度选择器详细解读

在 Vue 3 中,深度选择器(Deep Selector)用于在 <style scoped> 中穿透作用域样式,影响子组件的样式。Vue 3 中深度选择器的语法与 Vue 2 有所不同,以下是详细说明:

1. 深度选择器的作用

在 Vue 的单文件组件中,<style scoped> 会将样式限制在当前组件内,避免样式污染。但有时需要修改子组件的样式,这时就需要使用深度选择器。

2. Vue 3 中的深度选择器语法

Vue 3 中,深度选择器的语法有以下几种:

(1) ::v-deep
  • 这是 Vue 3 推荐的标准语法。

  • 示例:

<style scoped>
.parent ::v-deep .child {
  color: red;
}
</style>
(2) >>>(已弃用)
  • 在 Vue 2 中常用,但在 Vue 3 中已弃用。

  • 示例:

<style scoped>
.parent >>> .child {
  color: red;
}
</style>
(3) /deep/(已弃用)
  • 在 Vue 2 中也可以使用,但在 Vue 3 中已弃用。

  • 示例:

<style scoped>
.parent /deep/ .child {
  color: red;
}
</style>
(4) :deep()
  • 这是 Vue 3 中新增的语法,功能与 ::v-deep 相同。

  • 示例:

<style scoped>
.parent :deep(.child) {
  color: red;
}
</style>

3. 使用场景

深度选择器通常用于以下场景:

  • 修改第三方组件的样式。

  • 在父组件中修改子组件的样式。

4. 示例

父组件(Parent.vue)
<template>
  <div class="parent">
    <Child />
  </div>
</template>

<script>
import Child from './Child.vue';

export default {
  components: {
    Child,
  },
};
</script>

<style scoped>
.parent ::v-deep .child {
  color: red;
}
</style>
子组件(Child.vue)
<template>
  <div class="child">
    这是子组件
  </div>
</template>

<style scoped>
.child {
  font-size: 16px;
}
</style>
结果
  • 子组件中的 .child 文字会变为红色,因为父组件通过深度选择器修改了子组件的样式。

5. 注意事项

  • 慎用深度选择器:过度使用深度选择器可能导致样式难以维护,建议优先通过子组件暴露的 props 或插槽实现样式定制。

  • 兼容性>>> 和 /deep/ 在 Vue 3 中已弃用,建议使用 ::v-deep  :deep()

总结

  • Vue 3 中推荐使用 ::v-deep 或 :deep() 作为深度选择器。

  • 深度选择器用于穿透作用域样式,影响子组件的样式。

  • 尽量避免过度使用深度选择器,以保持代码的可维护性。

相关文章:

  • 网络工程师 (48)传输层概述
  • 【嵌入式Linux应用开发基础】特殊进程
  • 硬编码(一)经典定长指令
  • 用Deepseek查询快证API-物流查询-实名认证-企业实名认证
  • layui 远程搜索下拉选择组件(多选)
  • PCL AlphaShape算法曲面重建
  • 如何查询网站是否被百度蜘蛛收录?
  • 路由基础 | 路由引入实验 | 不同路由引入方式存在的问题
  • CF1801D
  • DateFormat与日期处理
  • CRTP在项目优化中的使用
  • Compose常用UI组件
  • WIN系统服务器如何修改远程端口?
  • Spring Bean 生命周期
  • 14 命令(Command)模式
  • 【STM32H743IIT6】正点原子阿波罗TFTLCD移植
  • C# ConcurrentQueue 使用详解
  • 14-二叉树最小深度-广度优先(BFS)
  • 帆软报表FineReport入门:简单报表制作[扩展|左父格|上父格]
  • Coze插件之基于IDE创建插件
  • 射箭世界杯上海站摘得两银,中国队新周期冲击韩国缩小差距
  • 1156万+1170万,静安、宝山购彩者击中大乐透头奖
  • 《三餐四季》广东篇今晚开播:食在岭南,遇见百味
  • 印巴战火LIVE丨“快速接近战争状态”?印度袭击巴军事基地,巴启动反制军事行动
  • 巴基斯坦称对印度发起军事行动
  • 明查|哈佛大学批改美教育部长来信,红笔标出语法错误?