1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 微信小程序:关注公众号组件自定义样式

微信小程序:关注公众号组件自定义样式

时间:2024-01-29 15:59:12

相关推荐

微信小程序:关注公众号组件自定义样式

目录

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

概要

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

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

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

实现示例

变身前:

变身后:

实现示例:

<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: 1208;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: 1209;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,加群备注‘地区-名字-技术类型’。

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。