uni-app支付宝小程序样式穿透失效

前情

uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app,对于一些组件我觉得可以复用的我都会抽成组件,如果觉得组件有分享价值的我都会分享到插件市场一来后续我别的项目用到可以直接下载使用,二来可以供大家使用,提高开发效率,我的插件库地址:DCloud 插件市场

插件不管你怎么封装,你暴露多少可配置API都难以适应形形色色的各种需求场景,就像这次我在开发一个售后模块需求,我想复用的我已经抽取的选择器组件来实现它的退款原因的选择,下图左边是我已经抽取的组件,右图是新的设计稿要实现的组件

坑位

组件功能是一样的,是可以复用的,但是它的UI相差的有点多,特别是勾选框的位置,这个比较能搞的,我是主动找UI沟通,能不能尽量复用我以前抽取的组件,这样可以减少一些开发工作量,UI最终同意了,但是颜色和字体大小还是要按新的UI来,整体结构可以复用,沟通到了这里应该是很愉快的了,改颜色和字体这不就是样式穿透的小事么

如果是web项目确实是小事,直接:deep(样式名穿透即可),我一开始也是这样整,自测也是OK的,还原出来的样式如下

随着我开发的进行,我一开始是把这个组件直接放到页面中的,后面发现这个组件在另一个地方也要用到,我于是理所当然的把它抽成了一个组件,此时事情发生了,我写的样式穿透全部不生效了

遇到的问题?

支付宝小程序端在页面中做组件的样式穿透是可以生效的,但是在组件里再对子组件做样式穿透是不会生效,这个问题其实我在快手和抖音端也遇到过,当时没有想到记录下来,这次整支付宝又遇到了......

解决方案

方案1:最暴力的方式

反正组件已经下载到uni_modules里,我直接修改里面源码颜色即可,这样改也是可以的,就怕某一天哪个新人不小心来个右击更新插件那就尴尬了,所以不是太推荐

方案2:既然样式穿透不生效,那我直接写全局样式

这里又有一个注意点,你直接在组件里移除scoped写全局样式是没有用的,你必须把你的样式移动到App.vue里的全局样式去,这里有一个技巧,防止影响到别的地方的样式,我把组件包一层,再取一个唯一的样式名,把重置样式写到这个样式名下即可,最终得以解决

思考

对于开发抽取并收集组件是非常值得做的,一来可以提高自己封装组件的技巧,二来可以减少重复的工作量,但对于形形色色的需求,组件很难适应所有,这时我们首先和需求保持沟通,能不能直接用组件样式,如果不行,能不能尽量往已抽取的组件靠,再通过样式穿透来适配,就算需求还是不同意,那最坏的就是直接拷贝一份组件再改那也比你从0写一个要快,你说是不是了?如果你有更好的看法,欢迎留言分享,一起学习进步

相关推荐
chéng ௹14 小时前
uniapp vue3 unipush2.0 调用系统通知功能流程
前端·vue.js·uni-app
2501_9160088914 小时前
uni-app 上架到 App Store 的项目流程,构建、打包与使用开心上架(Appuploader)上传
android·ios·小程序·https·uni-app·iphone·webview
桐溪漂流15 小时前
微信小程序路由及 `EventChannel` 通信
微信小程序·小程序
00后程序员张15 小时前
怎么在 iOS 上架 App,从构建端到审核端的全流程协作解析
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_9159184115 小时前
iOS 开发者工具全景指南,构建高效开发、调试与性能优化的多工具工作体系
android·ios·性能优化·小程序·uni-app·iphone·webview
多看书少吃饭1 天前
小程序支持HTTP POST 流式接口吗?
网络协议·http·小程序
询问QQ:4877392781 天前
CDB文件第0x2C位置存放温度阈值
小程序
vx_vxbs661 天前
【SSM高校普法系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
android·java·python·mysql·小程序·php·idea
duansamve1 天前
支付宝小程序开发工具中如何模拟给页面传参?
小程序·支付宝小程序
低代码布道师1 天前
医疗预约小程序原型设计
低代码·小程序