vue3样式穿透用法

在Vue3中,样式穿透可通过以下方式实现:

1. 基础用法

使用::v-deep伪类实现样式穿透(兼容Vue2语法):

css 复制代码
.parent ::v-deep .child-component {
  color: red;
}

2. 推荐方式

使用:deep()伪函数(Vue3推荐写法):

css 复制代码
.parent :deep(.child-component-inner) {
  padding: 10px;
}

3. 插槽内容样式

使用:slotted()处理插槽内容:

css 复制代码
:slotted(.slot-content) {
  background: #f0f0f0;
}

4. 全局样式

在scoped样式中定义全局规则:

css 复制代码
:global(.global-class) {
  font-size: 16px;
}

5. 动态选择器

结合属性选择器使用:

css 复制代码
:deep([data-test="item"]) {
  border: 1px solid blue;
}

使用场景示例

vue 复制代码
<template>
  <el-dialog>
    <div class="custom-content">需要定制的弹窗内容</div>
  </el-dialog>
</template>

<style scoped>
/* 修改Element Plus弹窗标题 */
:deep(.el-dialog__header) {
  background: #409eff;
}

/* 定制插槽内容样式 */
:slotted(.custom-content) {
  font-weight: bold;
}
</style>

注意事项

  1. 优先考虑组件props/custom class设计
  2. 避免过度使用样式穿透
  3. 注意样式优先级问题
  4. 使用scoped限定作用域
  5. 在Vue3中已废弃/deep/>>>语法

推荐结合CSS变量使用更灵活的样式定制方案:

css 复制代码
:deep(.child-component) {
  --theme-color: #42b983;
  color: var(--theme-color);
}
相关推荐
老华带你飞17 分钟前
小区服务|基于Java+vue的小区服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·小区服务管理系统
Nan_Shu_61425 分钟前
学习:uniapp全栈微信小程序vue3后台(28)
前端·学习·微信小程序·小程序·uni-app
珍宝商店35 分钟前
原生 JavaScript 方法实战指南
开发语言·前端·javascript
计算机学姐43 分钟前
基于微信小程序的扶贫助农系统【2026最新】
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis
蓝莓味的口香糖1 小时前
【企业微信】VUE项目在企微中自定义转发内容
前端·vue.js·企业微信
IT_陈寒1 小时前
告别低效!用这5个Python技巧让你的数据处理速度提升300% 🚀
前端·人工智能·后端
—Qeyser1 小时前
Laravel + UniApp AES加密/解密
前端·uni-app·laravel
C++chaofan1 小时前
游标查询在对话历史场景下的独特优势
java·前端·javascript·数据库·spring boot
cg.family1 小时前
Vue3 v-slot 详解与示例
前端·javascript·vue.js
FreeBuf_1 小时前
新型域名前置攻击利用Google Meet、YouTube、Chrome及GCP构建流量隧道
前端·chrome