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

Vue 样式穿透(深度选择器)::v-deep

在 Vue 中,当使用 scoped 样式时,组件的样式默认不会影响到子组件。样式穿透(也称为深度选择器)是一种让父组件样式能够影响子组件样式的方法。

1. 为什么需要样式穿透?

在 Vue 单文件组件中,使用 scoped 属性可以限制样式只作用于当前组件:

<style scoped>
.button {color: red;
}
</style>

这种样式不会影响到子组件中的元素。但有时我们需要修改子组件(如第三方组件)的样式,这时就需要样式穿透。

2. Vue 2 中的样式穿透方法

2.1 使用 >>> 操作符(Sass 不支持)

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

2.2 使用 /deep/ 或 ::v-deep(推荐)

<style scoped>
.parent /deep/ .child {color: red;
}/* 或者 */
.parent ::v-deep .child {color: red;
}
</style>

3. Vue 3 中的样式穿透

Vue 3 中废弃了 >>> 和 /deep/,统一使用 ::v-deep

<style scoped>
.parent ::v-deep .child {color: red;
}
</style>

也可以简写为:

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

5. 最佳实践

  1. 尽量少用样式穿透 - 优先考虑通过 props 或插槽来自定义子组件样式

  2. 使用更具体的选择器 - 避免样式污染

  3. 谨慎使用 !important - 可能导致样式难以维护

6. 不同预处理器中的写法

预处理器写法
纯 CSS::v-deep
Sass/SCSS::v-deep 或 :deep()
Less/deep/ 或 ::v-deep

总结

Vue 的样式穿透主要用于修改子组件样式,在 Vue 2 中可以使用 /deep/ 或 ::v-deep,在 Vue 3 中推荐使用 ::v-deep 或 :deep()。使用时应当谨慎,避免过度使用导致样式难以维护。

http://www.xdnf.cn/news/9158.html

相关文章:

  • 多空间投影:提示微调的革命性突破
  • 车载通信网络 --- OSI模型中物理层和数据链路层
  • 【Netty】- 聊天室1
  • sse和streamablehttp
  • 基于Windows原生工具搭建本地文件服务器 IIS(Internet Information Services)​
  • STM32G0xx基于串口(UART)Ymodem协议实现OTA升级包括Bootloader、上位机、应用程序
  • 两个Ubuntu机器(内网)免密登录设置
  • MFC: 文件加解密(单元测试模块)
  • 如何做好一份“系统设计“文档
  • 2025河北秦皇岛CCPC补题
  • I/O外设管理(第七章)
  • 本周 edu教育邮箱注册可行方案
  • Python函数异常处理底层实现原理
  • 机器学习-朴素贝叶斯分类
  • Partial Overwrite绕过PIE保护-[HNCTF 2022 WEEK2]ret2text
  • 将docker数据目录迁移到 home目录下
  • 军事大模型及其应用分析
  • 电脑清理重复文件秒扫 + 相似媒体去重 找出空文件夹 / 损坏文件 批量清理
  • 从比分滚动到数据革命:体育数据如何重构我们的观赛体验?
  • 【运维】Zerotier删除节点后的恢复操作指南
  • ASP.NET Core OData 实践——Lesson2增删改查Entity和EntitySet(C#)
  • 三大数据库【字符串连接】与【数据类型转换】对比:Oracle vs MySQL vs SQL Server
  • H310昂达等主板无法开机自启的原因
  • AI时代新词-数字孪生(Digital Twin)
  • 【C++ STL string :深入浅出 从入门到实战】
  • Android设计模式学习总结目录
  • PyTorch入门教程:下载、安装、配置、参数简介、DataLoader(数据迭代器)参数解析与用法合集
  • 能说一下JVM的内存区域吗
  • [De1CTF 2019]SSRF Me
  • OpenSSL 签名格式全攻略:深入解析与应用要点