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

uniapp(微信小程序)>关于父子组件的样式传递问题(自定义组件样式穿透)

由于"微信小程序"存在【样式隔离机制】,且默认设置为isolated(启用样式隔离),因此这里给出以下两种解决方案:

注意: 这2种方案父子组件<style>标签不能添加"scoped"

1.CSS变量穿透(推荐: 此方案不受样式隔离限制,适配所有端)

缺点:所需的CSS属性要逐个设置变量,自定义组件逐个接收
 <!-- 父组件 Parent.vue -->
<template><Child class="parent-style"></Child>
</template><style>
.parent-style {/* 定义 CSS 变量 */--img-width: 262rpx;--img-height: 120rpx;--img-border-radius: 16rpx 16rpx 0 0;
}
</style>  
<!-- 子组件 Child.vue -->
<template><view class="child-box"><image class="child-img" /></view>
</template> <style>
.child-img {width: var(--img-width);height: var(--img-height);border-radius: var(--img-border-radius);
}
</style>

2.配置隔离模式(不太推荐)

styleIsolation是‌"微信小程序‌"特有的样式隔离配置项,具体有哪些属性值在最下方图中。
在测试中,可能是–组件层级–的缘故,只有配置了"shared"、"page-shared"样式才生效。

缺点:

1.易造成样式污染,即父子组件若存在同类名会相互干扰样式,其他设置了"shared"的组件可能也会受到污染
2.子组件元素层级要定位明确(要更改样式的元素),否则整个自定义组件样式都要受到父组件的影响

2.1 选项式api:
 <!-- 父组件 Parent.vue -->
export default {options:{styleIsolation: 'shared',},data() {return {}}
}
2.2 组合式api:
 <!-- 父组件 Parent.vue -->
<script setup>
import { defineOptions } from 'vue';
defineOptions({options: {styleIsolation: 'shared' }
});
</script>
<!-- 父组件 Parent.vue(.child-img对应的是子组件中要修改的元素类名) -->
.child-img {width: 298rpx;height: 186rpx;border-radius: 16rpx;}

在这里插入图片描述
文档地址

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

相关文章:

  • matlab 读取数字高程模型DEM并可视化
  • 进程和线程
  • Node和npm初学
  • HTTPS全解析:从证书签发到TLS握手优化
  • 算法-单调栈
  • 【Linux笔记】——进程信号的产生
  • arduinoIDE核心库更新导致的ESP32开发板神秘接口更换和三方库冲突
  • 解锁性能密码:Linux 环境下 Oracle 大页配置全攻略​
  • uniapp引入七鱼客服微信小程序SDK
  • 【氮化镓】横向GaN 器件注入隔离区的电场相关载流子传输特性
  • 让 - 艾里克・德布尔与斯普林格出版公司:科技变革下的出版业探索
  • qt QMessageBox 的详细解析
  • 点下4个Winform UI开源控件库
  • OpenMCU(六):STM32F103开发板功能介绍
  • 【触想智能】医疗一体机在医疗领域上的应用优势分析
  • LLaMA Factory 深度调参
  • cursor对话关键词技巧
  • 《微机原理与接口技术》第 5 章 汇编语言程序设计
  • laravel 中使用的pdf 扩展包 laravel-snappy(已解决中文乱码)
  • 【HarmonyOS 5】鸿蒙碰一碰分享功能开发指南
  • dfs 第一次加训 详解 下
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取当前用户主目录(即:~波浪符号目录)?
  • 3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】
  • [ARM][汇编] 01.基础概念
  • 单片机-STM32部分:13-1、编码器
  • Kubernetes vs. OpenShift:深入比较与架构解析
  • 在Taro中开发一个跨端Svg组件,同时支持小程序、H5、React Native
  • PyTorch Lightning实战 - 训练 MNIST 数据集
  • 华为ensp实现跨vlan通信
  • uniapp|商品列表加入购物车实现抛物线动画效果、上下左右抛入、多端兼容(H5、APP、微信小程序)