小程序3D标签云

article/2025/11/11 16:06:59

微信小程序实现3D标签云
在网上查找了许多3d标签云的案列,一般都是用原生和jquery写的,然后参考
https://www.cnblogs.com/axes/p/3501424.html这篇文章
在小程序里面实现标签云,具体代码如下

wxml

// An highlighted block
<view class="tagBall"><a class="tag" wx:for="{{tagEle}}" wx:key="{{index}}" style="opacity:{{item.o}};z-index:{{item.z}};left: {{item.x}}rpx;top: {{item.y}}rpx;transform: scale({{item.s}})">{{item.title}}</a></view>

wxss

.tagBall{width: 420rpx;height: 300rpx;margin:300rpx auto;position: relative;left: 120rpx;}.tag{display: block;position: absolute;left: 0rpx;top: 0rpx;color: #000;text-decoration: none;font-size: 32rpx;font-family: "微软雅黑";font-weight: bold;}.tag:hover{border:1px solid #666;}

js

innit() {var tagEle = [{title: '被子',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '咖啡機',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '飛機',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '电脑',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '手机',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '键盘',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '奶飞机',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '桌子',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '板凳',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '杯子',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX:0,angleY:0},{title: '被子',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '咖啡機',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '飛機',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '电脑',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '手机',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '键盘',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '奶飞机',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '桌子',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '板凳',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0},{title: '杯子',x: 0,y: 0,z: 0,s: 0,o: 1,f: 15,angleX: 0,angleY: 0}]for (var i = 0; i < tagEle.length; i++) {var fallLength = 100 //圆的焦点var angleX = Math.PI / 100var angleY = Math.PI / 100var k = (2 * (i + 1) - 1) / tagEle.length - 1;//计算按圆形旋转var a = Math.acos(k);var b = a * Math.sqrt(tagEle.length * Math.PI);//计算元素x,y坐标var numx = 120 * Math.sin(a) * Math.cos(b)var numy = 120 * Math.sin(a) * Math.sin(b);var numz = 220 * Math.cos(a);// console.log(numo)//计算元素缩放大小tagEle[i].x = numx * 2tagEle[i].y = numy * 2tagEle[i].z = numztagEle[i].s = 250 / (400 - tagEle[i].z)}//动画setInterval( () =>{for (var i = 0; i < tagEle.length; i++) {var a = Math.acos(k);var numz = 240 * Math.cos(a);tagEle[i].s = 250 / (400 - tagEle[i].z)var cos = Math.cos(angleX);var sin = Math.sin(angleX);var y1 = tagEle[i].y * cos - tagEle[i].z * sin;var z1 = tagEle[i].z * cos + tagEle[i].y * sin;tagEle[i].y = y1;tagEle[i].z = z1;var cos = Math.cos(angleY);var sin = Math.sin(angleY);var x1 = tagEle[i].x * cos - tagEle[i].z * sin;var z1 = tagEle[i].z * cos + tagEle[i].x * sin;tagEle[i].x = x1;tagEle[i].z = z1;this.setData({tagEle: tagEle})}}, 100)},

最后把innit()在onShow()方法里面调用就ok了,效果图如下(静态图),动态你可以参照上面代码运行可以看到效果,本人是新手,希望大神多多指教

效果图


http://chatgpt.dhexx.cn/article/FLAWXk1D.shtml

相关文章

小程序基础使用

目录 一、简介 1.微信小程序与APP的区别 2.微信小程序的开发 二、小程序开发介绍 1.pages js文件 json文件 wxml文件 wxss文件 2.app.js 3.app.json 4.app.wxss 5.json文件 三、微信小程序的配置 1.全局配置 2.局部配置 四、新建页面路由 1.新建文件夹 2.新建…

微信小程序实现tab标签页的切换及动态的选中下划线移动

微信小程序实现tab标签页的切换及动态的选中下划线移动 注意&#xff1a;当前是横向切换&#xff0c;纵向切换请点击&#xff1a;纵向切换tab 效果演示 代码片段 代码片段链接如下&#xff1a; 微信小程序代码片段 可直接点击代码片段路径观看完整演示。 完整代码 wxml如下 …

微信小程序中使用富文本标签解析

通常情况下后台管理系统都配备了富文本编辑器&#xff0c;所以当数据传入前端的时候需要解析才能够正常使用。 在实际的开发中我们会遇到以下的情况&#xff0c;甚至是更复杂的含有图片和样式等的文本内容。 此时我们就需要借助富文本标签来解析渲染了。如下&#xff1a; 这里…

微信小程序多选标签的实现(单选或者多选)

暑假留在社团跟别人一起开发一个校园小程序&#xff0c;如今也基本快开发完成了&#xff0c;整理一下日后可能用到的小组件。 类似于上图&#xff0c;下方的待选项为一个组件&#xff0c;根据父组件传入传入的参数决定是否为多选。 父组件的HTML代码如下 <view class"…

微信小程序image图片标签(超详细)

微信小程序image图片标签&#xff08;超详细&#xff09; 前言&#xff1a; 因为微信小程序静态打包的图片大小不可超过2m&#xff0c;故应该采取将需要用到的图片上传到网络&#xff0c;通过其链接来操作图片 推荐图床&#xff1a; 路过图床 image{ width: 300px; height…

微信小程序 多标签选择和添加标签

与我之前相关的一个标签的博客&#xff08;时间选择标签&#xff09;&#xff1a; https://blog.csdn.net/weixin_42418774/article/details/98747230 今天我来说说进阶标签的选择和添加标签&#xff1a; 首先我们看到wxml页面布局&#xff1a; wxml:<view classbtn_view…

微信小程序——常用属性及标签

微信小程序 最近在学习小程序开发&#xff0c;在学习的过程中感受到了内容之多&#xff0c;这里总结了一些小程序开发的一些常用属性与方法&#xff0c;更加具体的还得通过打开微信开放文档进行学习&#xff0c;在学习的过程中多打demo才是最好的学习方式啊&#xff0c;再好的文…

微信小程序的标签及常见样式

view 类似div 块状元素 可设置 宽高! fix-direction:row 横向布局 fix-direction:column 纵向布局 横向滑动 标签组件: swiper和swiper-item(单个页面) 一般都是照片! 视屏和音频都可不行,上传代码包大小有限制! swiper组件常用属性: indicator-dots boolean fals…

登录测试用例设计

功能性用例设计点&#xff1a; 1. 输入已注册的用户名和正确的密码&#xff0c;验证是否成功登录 2. 输入已注册的用户名和不正确的密码&#xff0c;验证是否成功失败&#xff0c;且提示信息正确 3. 输入未注册的用户名和任意密码&#xff0c;验证是否登录失败&#xff0…

通用的测试用例编写大全(登录测试/web测试等)

目录 登录 网上资料&#xff1a; 一、基本功能测试&#xff1a; 二、页面测试&#xff1a; 三 、安全测试&#xff1a; 四、性能测试&#xff1a; 五、其它测试&#xff1a; WEB网站测试 一、输入框&#xff1a; 二、提交/确定按钮&#xff1a; 三、后退按钮&#xff…

软件测试实例:登录功能怎么设计测试用例

软件测试到底怎么设计测试用例&#xff1f;测试用例需要设计那些方面的环节&#xff1f;带着问题小编为你分享软件测试实例&#xff0c;登录功能怎么设计测试用例。 明确具体需求&#xff1a; 有一个登录页面&#xff0c;有一个账号和一个密码输入框, 一个提交按钮。 此题的考…

【转载】登录页面测试用例

登录模块测试用例整理&#xff1a; 登录模块 界面UI测试 1.布局是否合理&#xff0c;输入框&#xff0c;按钮对齐方式 2.输入框和按钮的高度&#xff0c;长度是否符合要求 3.界面的设计风格是否与UI的设计风格统一 4.界面的文字简洁易懂&#xff0c;没有错别字 功能测试 1.用户…

登录的测试用例设计点

在看了一个有关登录的一个课程之后&#xff0c;发现自己以前对登录测试的用例设计简直是井底之蛙&#xff0c;在跟领导聊天之后一致认为可以就这一课文章进行一个整理概括&#xff0c;加以完善&#xff0c;还望大家多多提意见&#xff0c;有借鉴到的内容还望见谅&#xff0c;本…

kubeadm 更改NodePort端口范围

kubeadm 更改NodePort端口范围 kubernetes默认端口号范围是 30000-32767 &#xff0c;如果期望值不是这个区间则需要更改。 一、找到配置文件里&#xff0c;一般的在这个文件夹下&#xff1a; /etc/kubernetes/manifests/ 二、找到文件名为kube-apiserver.yaml 的文件&#xff…

Spark2自定义Driver和Executor端口范围

文章目录 1.配置端口范围2.配置文件修改3.集群验证 组件版本Ambari2.7.3HDP3.1.0.0-78Spark22.3.2 Spark 的 Driver 和 Executor 之间通讯端口是随机的&#xff0c;Spark 会随选择 1024~65535&#xff08;含&#xff09; 之间的端口&#xff0c;因此在集群节点之间需要关闭防火…

FTP防火墙数据通道端口范围无法设置

云服务器通过IIS搭建FTP如何设置防火墙端口&#xff0c;而FTP被动模式默认会有一个随机端口范围。 通常这个服务如果是在本地没有什么影响。但如果在云服务器上搭建。如果不放通这些全部的随机端口范围。就会导致间歇性无法访问FTP目录。 1.数据端口显示灰色&#xff0c;网上看…

【Linux系统vsftp被动模式数据下载端口范围】

一、 vsftp被动模式设置端口范围 参考资料&#xff1a;https://blog.51cto.com/u_12476193/2308486 前提成功安装vsftp软件能运行vsftp服务并能下载上传文件。 二、vsftp修改被动模式&#xff1a; 1、 修改vsftpd配置文件 2、 输入vim /etc/vsftpd/vsftpd.conf打开配置文件…

ingress-nginx更改默认端口/修改apiserver端口范围

问题&#xff1a; 直接更改ingress svc yml文件更改端口报错。 环境说明 1、 k8s部署在纯内网环境&#xff0c;想要外网可以访问&#xff0c;需要外层的服务器做nginx转发。由于公司网络限制&#xff0c;内网服务器和外层服务器互相通信需要使用固范围内的端口。 2、ingres…

kubesphere设置nodePort端口范围

kubesphere默认的NodePort端口范围为30000-32768&#xff0c;但是咱们可以修改这个范围&#xff0c;本文针对的kubesphere版本为3.1.1&#xff0c;修改/etc/kubernetes/manifests目录下的kube-apiserver.yaml文件&#xff0c;添加下面的配置 --service-node-port-range1-65535…

FreeSWITCH的MRCP端口范围

对FreeSWITCH在unimrcp模块进行压力测试时&#xff0c;发现经过两万路呼叫之后&#xff0c;会有一些呼损。查看日志&#xff0c;全部是这个错误导致&#xff1a; AUDIO RTP REPORTS ERROR: [Bind Error! *******] 显然&#xff0c;RTP端口出现冲突了&#xff0c;导致RTP端口绑…