如何制作微信小程序下拉框组件
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要为大家展示了"如何制作微信小程序下拉框组件",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何制作微信小程序下拉框组件"这篇文章吧。1 2 3
千家信息网最后更新 2025年01月17日如何制作微信小程序下拉框组件
这篇文章主要为大家展示了"如何制作微信小程序下拉框组件",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何制作微信小程序下拉框组件"这篇文章吧。
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 | /**DropDownMenu**/ /*总菜单容器*/ .menu { display: block; height: 28px; position: relative; } /*一级菜单*/ .menu dt { font-size: 15px; float: left; /*hack*/ width: 33%; height: 38px; border-right: 1px solid #d2d2d2; border-bottom: 1px solid #d2d2d2; text-align: center; background-color: #f4f4f4; color: #5a5a5a; line-height: 38px; z-index: 2; } /*二级菜单外部容器样式*/ .menu dd { position: absolute; width: 100%; margin-top: 40px; left: 0; z-index: -99; } /*二级菜单普通样式*/ .menu li { font-size: 14px; line-height: 34px; color: #575757; height: 34px; display: block; padding-left: 8px; background-color: #fff; border-bottom: 1px solid #dbdbdb; } /*二级菜单高亮样式*/ .menu li.highlight { background-color: #f4f4f4; color: #48c23d; } /* 显示与隐藏 */ .show { /*display: block;*/ visibility: visible; } .hidden { /*display: none;*/ visibility: hidden; } |
wxml
?
1 2 3 4 5 6 7 8 9 10 11 | < dl class = "menu" > < block wx:for = "{{reportData}}" wx:key = "idMenu" wx:for-item = "menuItem" wx:for-index = "idMenu" > < dt data-index = "{{idMenu}}" bindtap = "tapMainMenu" >{{menuItem.reportType}} dt > < dd class = "{{subMenuDisplay[idMenu]}}" animation = "{{animationData[idMenu]}}" > < ul wx:for = "{{menuItem.chilItem}}" wx:key = "chilItem.ID" wx:for-item = "chilItem" wx:for-index = "idChil" > < li class = "{{subMenuHighLight[idMenu][idChil]}}" bindtap = "tapSubMenu" data-index = "{{idMenu}}-{{idChil}}" >{{chilItem.Name}} li >
ul > < picker class = "timePicker" mode = "date" value = "{{dateValue}}" bindchange = "datePickerBindchange" start = "1999-01-01" end = "2999-12-12" > 时间:{{dateValue}} picker >
dd >
block >
dl > |
js
?
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 | //数据源 var ReportDataSync = [ { reportType: "日报1" , chilItem: [ { ID: 1, Name: "日报1" , ReportUrl: "DailyReport.aspx" , Type: 1 }, { ID: 2, Name: "日报2" , ReportUrl: "DailyReport.aspx" , Type: 1 }, { ID: 3, Name: "日报3" , ReportUrl: "DailyReport.aspx" , Type: 1 }] }, { reportType: "目录2" , chilItem: [ { ID: 1, Name: "目录1" , ReportUrl: "DailyReport.aspx" , Type: 2 }, { ID: 2, Name: "目录2" , ReportUrl: "DailyReport.aspx" , Type: 2 }, { ID: 3, Name: "目录3" , ReportUrl: "DailyReport.aspx" , Type: 2 }, { ID: 4, Name: "目录4" , ReportUrl: "DailyReport.aspx" , Type: 2 }] }, { reportType: "月报3" , chilItem: [ { ID: 1, Name: "月报1" , ReportUrl: "DailyReport.aspx" , Type: 1 }, { ID: 2, Name: "月报2" , ReportUrl: "DailyReport.aspx" , Type: 2 }] } ] //定义字段 var initSubMenuDisplay = [] var initSubMenuHighLight = [] var initAnimationData = [] /// 初始化DropDownMenu loadDropDownMenu() that.setData({ reportData: ReportDataSync, //菜单数据 subMenuDisplay: initSubMenuDisplay, //一级 subMenuHighLight: initSubMenuHighLight, //二级 animationData: initAnimationData //动画 }) //一级菜单点击 tapMainMenu: function (e) { //获取当前一级菜单标识 var index = parseInt(e.currentTarget.dataset.index); //改变显示状态 for ( var i = 0; i < initSubMenuDisplay.length; i++) { if (i == index) { if ( this .data.subMenuDisplay[index] == "show" ) { initSubMenuDisplay[index] = 'hidden' } else { initSubMenuDisplay[index] = 'show' } } else { initSubMenuDisplay[i] = 'hidden' } } this .setData({ subMenuDisplay: initSubMenuDisplay }) this .animation(index) }, //二级菜单点击 tapSubMenu: function (e) { //隐藏所有一级菜单 //this.setData({ //subMenuDisplay: initSubMenuDisplay() //}); // 当前二级菜单的标识 var indexArray = e.currentTarget.dataset.index.split( '-' ); // 删除所在二级菜单样式 for ( var i = 0; i < initSubMenuHighLight.length; i++) { if (indexArray[0] == i) { for ( var j = 0; j < initSubMenuHighLight[i].length; j++) { initSubMenuHighLight[i][j] = '' ; } } } //给当前二级菜单添加样式 initSubMenuHighLight[indexArray[0]][indexArray[1]] = 'highlight' ; //刷新样式 this .setData({ subMenuHighLight: initSubMenuHighLight }); // 设置动画 this .animation(indexArray[0]); }, //菜单动画 animation: function (index) { // 定义一个动画 var animation = wx.createAnimation({ duration: 400, timingFunction: 'linear' , }) // 是显示还是隐藏 var flag = this .data.subMenuDisplay[index] == 'show' ? 1 : -1; // 使之Y轴平移 animation.translateY(flag * ((initSubMenuHighLight[index].length + 1) * 38)).step(); // 导出到数据,绑定给view属性 var animationStr = animation.export(); // 原来的数据 var animationData = this .data.animationData; animationData[index] = animationStr; this .setData({ animationData: animationData }); } /// /// 初始化DropDownMenu /// 1.一级目录 initSubMenuDisplay :['hidden'] /// 2.二级目录 initSubMenuHighLight :[['',''],['','','','']]] /// function loadDropDownMenu() { for ( var i = 0; i < ReportDataSync.length; i++) { //一级目录 initSubMenuDisplay.push( 'hidden' ) //二级目录 var report = [] for ( var j = 0; j < ReportDataSync[i].chilItem.length; j++) { report.push([ '' ]) } initSubMenuHighLight.push(report) //动画 initAnimationData.push( "" ) } |
以上是"如何制作微信小程序下拉框组件"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
菜单
目录
样式
动画
数据
日报
程序
组件
下拉
制作
内容
月报
篇文章
容器
标识
j++
学习
帮助
普通
字段
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全和保密工作三重三轻
服务器宰客
维普数据库的检索范围
潍坊学院期末考试数据库原理
数据库索引的原理是什么
电脑正在连接服务器什么意思
社交网络安全调查报告总结
软件开发基线的概念
饥荒服务器遇到一些错误
阿里云服务器搭建个人网页
限制网络安全是什么意思
okhttp设置域名解析服务器
软件开发技术施工方案提交时间
网络安全体系为新基建
生活中哪些需要用到数据库
普通人在家如何学习网络技术
解码科技史第一代互联网
打印机文件服务器发生错误
数据库正序展示代码
mac打开服务器文件管理
服务器宰客
软件开发加计扣除政策
软件开发出口税收优惠政策
手机芯片和服务器级别
服务器 硬件 配置
服务器系统硬盘如何修复
软考 数据库 答案
游戏软件开发技术介绍
服务器防cc
敏捷编程的软件开发流程