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

概述

目录

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

概要

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

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

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

实现示例

变身前:

image

变身后:

image

实现示例:

<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

最后

以上就是细心曲奇为你收集整理的微信小程序:关注公众号组件自定义样式的全部内容,希望文章能够帮你解决微信小程序:关注公众号组件自定义样式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部