我是靠谱客的博主 细心曲奇,这篇文章主要介绍微信小程序:关注公众号组件自定义样式,现在分享给大家,希望可以做个参考。

目录

  • 概要
  • 实现示例
  • Tips
  • 关注我,不迷路

概要

关注微信公众号组件,官方提供了official-account,只有在固定的场景下才会显示,比如扫码进入的小程序才会显示。更多相关场景:开发能力/official-account。

公众号组件official-account,本身样式是固定的,也不支持修改样式。但是在做微信小程序的时候,有个需求就是把关注公众号的组件改成一个按钮,不要问为什么,因为有现成的别人家的小程序就可以点击一个按钮去关注公众号。于是在网上搜了一些案例,发现没一个靠谱的。不过后来,被我攻破了这个难关。那么我就把这个关注公众号组件自定义样式方法分享出来。

下面的实现案例,使用了uniapp打包,仅做参考。如需在原生微信小程序中使用,则需要读懂代码,在此基础上依葫芦画瓢。

实现示例

变身前:

image

变身后:

image

实现示例:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<template> <view class="weixin-official-account" v-if="show" :style="{'bottom':`${bottom}rpx`,'opacity':opacity}"> <text class="txt">关注微信公众号,海量资料任你查阅!</text> <button type="default" class="btn btn-official"> 立即关注<official-account class="official-account" id="official_account"></official-account> </button> <icon class="iconfont icon-close" @click="close"></icon> </view> </template> <script> export default { props: { bottom: { type: [Number, String], default: 100 }, isFollow: {// 是否已经关注过公众号 type: [Boolean], default: false } }, data() { return { show: true, opacity: 0, max: 3 } }, mounted() { setTimeout(() => { this.init(); }, 800) }, methods: { init() { let that = this; const query = uni.createSelectorQuery().in(this); query.select('#official_account').boundingClientRect(data => { if (data.width && data.height) { that.check(); } else { that.show = false; } }).exec(); }, async check() { try { const num = uni.getStorageSync('CLOSE_OFFICIAL_ACCOUNT'); if (+num >= this.max) { this.show = false; return false; } this.show = !this.isFollow; if (this.show) this.opacity = 1; } catch (e) { this.show = false; } }, close() { this.show = false; const num = uni.getStorageSync('CLOSE_OFFICIAL_ACCOUNT') ? +uni.getStorageSync('CLOSE_OFFICIAL_ACCOUNT') + 1 : 1; uni.setStorageSync('CLOSE_OFFICIAL_ACCOUNT', num); } } } </script> <style scoped lang="scss"> .weixin-official-account { position: fixed; z-index: 20211208; left: 50%; transform: translateX(-50%); display: flex; align-items: center; justify-content: space-between; width: 682rpx; height: 68rpx; padding: 0 10rpx 0 30rpx; background: rgba(0, 0, 0, .6); border-radius: 6rpx; .txt { font-size: 24rpx; color: #fff; } .btn { position: relative; width: 56px; height: 20px; line-height: 20px; padding: 0; background: #2878FF; border-radius: 10px; overflow: hidden; text-align: center; font-size: 20rpx; color: #fff; .official-account { position: absolute; z-index: 20211209; right: -14px; top: -40px; opacity: 0; } } .icon-close { display: flex; align-items: center; justify-content: center; width: 50rpx; height: 68rpx; font-size: 22rpx; color: #fff; } } @font-face { font-family: 'iconfont'; src: url(data:font/truetype;charset=utf-8;base64,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) format('truetype'); } .iconfont { font-family: "iconfont" !important; font-size: 32rpx; font-style: normal; font-weight: normal; vertical-align: middle; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-close:before { content: "e670"; } </style>

Tips

  • 此案例可以直接当成一个组件使用,需要改样式及文字,可以自行修改,这里展示的仅做参考,最重要的是思路。
  • isFollow表示是否关注过公众号,我处理的思路是通过后端接口判断是否关注过公众号,关注过就不显示该组件了,仅做参考。
  • max 表示最多点几次关闭按钮,就不再显示该组件了,仅做参考。
  • 主要思路:先让组件显示,但是透明度为0=》然后判断组件的宽高,有宽高说明该场景可以显示公众号组件=》通过是否关注过公众号,判断是否显示=》最终的目的就是显示自己定义的按钮,在按钮上面其实是覆盖了公众号组件,位置刚好调整在关注的按钮上面,透明度为0,所以看到的就是自己的按钮,点击的其实还是组件上的按钮。

关注我,不迷路

小伙伴,用你可爱的小手,点个赞,关注我了解更多知识!!!

如果任何疑问的可以在评论区留言或者私聊。

也可以扫下面二维码加我wx,备注‘地区-名字-技术类型’,我会拉进我的微信技术分享群。注意:必须备注清楚哈。

也可以加QQ群交流:568984539,加群备注‘地区-名字-技术类型’。

image

更多前端、uniapp、nodejs等相关知识可关注我个人博客:https://blog.csdn.net/qq_42961150?spm=1011.2124.3001.5343

最后

以上就是细心曲奇最近收集整理的关于微信小程序:关注公众号组件自定义样式的全部内容,更多相关微信小程序内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部