背景

无论是在小程序还是 h5 网页,折叠菜单,手风琴是一个非常常见的效果,如今也有很多现成的 UI 组件库已经实现了这一效果的,但有时候在写原生小程序时,单单就是一个折叠菜单效果,却要引入整个 UI 库,有点得不偿失

以下就自己手动实现一个的

实例效果

具体实现

如下是wxml示例代码

<view class="content"><block wx:for="{{ listDatas }}" wx:key="index"><view class="list-content" bindtap="onListClick" data-index="{{ index }}"><view><text>{{ item.list_name }}</text></view><view><iconfontclass="iconfont {{selected[index] ? 'icon-arrow-down' : 'icon-right'}}"></iconfont></view></view><view class="list-text {{selected[index] ? '' : 'hidden-content'}}"><view><text selectable="true">{{ item.list_content }}</text></view></view></block>
</view>

如下是wxss示例代码

.content {padding: 15rpx 15rpx 0 15rpx;font-size: 30rpx;color: #808080;
}.list-content {display: flex;justify-content: space-between;text-align: center;line-height: 60rpx;border-bottom: 1rpx solid #ddd;
}.list-text {padding-top: 15rpx;transition: all 0.5s ease;text-indent: 40rpx;display: block;
}.hidden-content {// 主要利用的是display:none实现隐藏display: none;
}

如下是折叠菜单逻辑代码

Page({/*** 页面的初始数据*/data: {selected: [false, false, false, false, false], // // 这里表示列表项是否展开,默认初始时此数组的元素全为fasle,表示都没展开active: null, // 当前展开的项的index值listDatas: [{list_name: '简介',list_content:'一个靠前排的90后帅小伙,具有情怀的技匠,路上正追逐斜杠青年的践行者',},{list_name: '开发者',list_content: '随笔川迹',},{list_name: '微信ID',list_content: 'suibichuanji',},{list_name: '微信公众号',list_content: 'itclanCoder',},{list_name: '其他业务',list_content:'广告文案策划编写/短视频制作(特效,后期视频处理)/配音/公众号代运营',},],},/*** 生命周期函数--监听页面加载*/onLoad: function(options) {},// 点击列表,收缩与展示onListClick(event) {let index = event.currentTarget.dataset.index;let active = this.data.active;this.setData({[`selected[${index}]`]: !this.data.selected[`${index}`],active: index,});// 如果点击的不是当前展开的项,则关闭当前展开的项// 这里就实现了点击一项,隐藏另一项if (active !== null && active !== index) {this.setData({[`selected[${active}]`]: false,});}},
});

如上代码就可以实现手风琴的效果,主要利用的是css中的display:none,默认的一些子选项是隐藏的,然后列表的数据的名称以及要展示的内容放在一个数组listDatas中,随后,循环列表渲染

在列表中绑定点击事件,在元素上设置data属性,在事件对象中就可以获取到,最终通过setData修改数据,以达到实现手风琴的效果

结语

实现这个手风琴,主要还是在怎么控制子选项的一个状态selected,通过列表的索引,然后进行控制selected的状态,实现子项列表内容的显示和隐藏

h5 手风琴效果_小程序-实现折叠面板-手风琴效果相关推荐

  1. html5折叠面板的代码,微信小程序实现折叠面板

    本文实例为大家分享了微信小程序MUI折叠面板的具体代码,供大家参考,具体内容如下 实现原理 通过控制详情部分的显示隐藏,来实现折叠效果,同时切换右侧向下箭头. WXML dion-content&qu ...

  2. 小程序怎么打出横线效果_小程序,实现字体横线滚动

    js Page({ data: { text: '这是一条会滚动的文字滚来滚去的文字跑马灯,哈哈哈哈哈哈哈哈', marqueePace: 1,//滚动速度 marqueeDistance: 0,// ...

  3. alert点击确定后跳转_公众号/h5 跳转到小程序填坑指南

    公众号/h5 跳转到小程序填坑指南 本文介绍的是使用微信开放标签 wx-open-launch-weapp 实现微信浏览器内网页跳转到任意合法合规的小程序里,官方要求微信版本为:7.0.12 及以上, ...

  4. android studio运行手机时出错怎么解决_小程序 android ios h5解决方案

    你现在开发android,ios,小程序用什么工具,怎么开发的?还在单个端的开发吗?今天我们主要讨论的是一次开发多端使用的技术,也是这两年比较流行的开发方向.现在的终端太多了,app两个端androi ...

  5. 小程序接入h5页面_小程序与H5如何互相跳转

    由于小程序官方没有提供外部H5网页直接跳转到小程序的api,所以目前只支持小程序内嵌H5,并且只有内嵌的H5才能跳回小程序 小程序跳转H5 需要用到小程序的web-view,官方文档链接 web-vi ...

  6. ar 微信小程序_微信小程序可支持实现AR效果

    原标题:微信小程序可支持实现AR效果 微信官方公众号"微信公开课"发文称,今天起,小程序可实现AR效果了,包括了:AR试穿.AR逛展等等.其中,首个支持AR动态试妆的美妆品牌小程序 ...

  7. 小程序scroll-view,滚动到最低_小程序滚动到底部

    小程序scroll-view,滚动到最低_小程序滚动到底部 小程序滚动条,滚到最底部解决方案1 小程序滚动到底部使用Scorll-view实现方案: scrill-view:组件要固定高度. scro ...

  8. canvas为你的天气预报添加雨雪效果 | 微信小程序

    关注 前端瓶子君,回复"交流" 加入我们一起学习,天天进步 来源:行舟客 https://yunxiaomeng.blog.csdn.net/article/details/110 ...

  9. 微信小程序实现滑动翻页效果源码附效果图

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 微信小程序实现滑动翻页效果 效果图: 源码: <view class="mainFra ...

最新文章

  1. 计算机不能启动 如何排除故障,开工发现电脑无法开机 如何排查故障?
  2. suse LINUX系统中的,用户权限的问题。
  3. 为了写论文给 Linux “投毒”,导致整个大学都被 Linux 拉黑!
  4. 干掉RESTful:GraphQL真香!
  5. php 设置统一处理错误,统一的PHP错误处理理论
  6. POJ3485 区间问题
  7. 谁说IT男没有审美?怀揣5000元巨款,我们这样改变生活
  8. yii2搭建完美后台并实现rbac权限控制实例教程
  9. jenkins+saltstack+pipeline 部署springcloud 多模块jar包
  10. Flutter基础(十三)Flutter与Android的相互通信
  11. html5浏览器最小化,javascript – 在浏览器最小化时引起用户的注意(跨浏览器桌面通知?)...
  12. 微信在服务器上发不了图片大小,为什么微信发不了图片?这四招教你解决难题...
  13. 蔡琴 经典收藏APE
  14. html账号输入框整体透明,HTML在透明输入框里添加图标的实现代码
  15. 个人日记:XML追加和覆盖内容,将XML某位置的子标签或者属性,文本删除
  16. 游戏辅助原理与制作02-植物大战僵尸01-阳光基址
  17. php portal 接口,WIFI Portal登录(示例代码)
  18. 朴素贝叶斯分类算法--终极奥义
  19. 正点原子Stm32学习资料
  20. amd c6 support_下载:AMD显卡催化剂8.6 Linux驱动正式版

热门文章

  1. GNU gcc的编译工具用法(转)
  2. numpy——ravel()和flatten()
  3. php中等3秒再跳转,跳转和重定向
  4. 傅里叶变换应用——信号调制与解调
  5. 为什么torch.nn.Linear的表达形式为y=xA^T+b而不是常见的y=Ax+b?
  6. subject.login(token)是如何确认账号密码的_教你如何删除、关闭、注销微信小程序...
  7. 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等
  8. 练习2-1 Programming in C is fun!
  9. Uva 1625 - Color Length(DP)
  10. c#程序中使用like“查询access数据库查询为空的问题