首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序|自定义折叠面板

微信小程序|自定义折叠面板

作者头像
算法与编程之美
发布2020-07-02 15:02:53
3.2K0
发布2020-07-02 15:02:53
举报

问题描述

如何实现一个可以自定义内容的折叠面板?

如何对点击、关闭的图标进行条件渲染?

在小程序页面中,一个可点开、关闭的折叠面板,并且能在点开面板中任意添加不同的内容,需要了解到不同组件的用法、事件绑定的方法以及条件渲染的方法。

解决方案

(1)wxml事件绑定

首先需要在view中加入data-index在事件中获取这些自定义的节点数据,用于事件的逻辑处理;然后需要添加catchtap事件绑定。

注意:关闭时是向下箭头,点击后是向上箭头。这个过程需要对图片进行条件渲染,添加一个shouIndex。代码如下:

表1 wxml代码示例

<view>

     <view data-index='1' catchtap='panel'>

       <view>创建的歌单</view>

       <view><image src="/images/{{showIndex ==  1 ? 'up':'down'}}.png"></image></view>

     </view>

     <view wx:if="{{showIndex == 1}}">

     <view>

       <view>

       <image src="/images/img4.jpg"></image>

       <text>歌单1</text>

       </view>

       <view>

       <image  src="/images/img5.jpg"></image>

       <text>歌单2</text>

       </view>

       <view>

       <image  src="/images/img6.jpg"></image>

       <text>歌单3</text>

       </view>

     </view>

     </view>

   </view>

(2)wxss配置

在wxss中需要配置将文字和箭头图片放在一行的左右两端。代码如下:

表2 wxss代码示例

help_item {

   margin: 10rpx auto;

}

.title {

   font-size: 40rpx;

   height: 100rpx;

   line-height: 100rpx;

   background: aliceblue;

   display: flex;

}

.title_1 {

   width: 630rpx;

   height: 100rpx;

   padding-left: 20rpx;

}

.title_2 {

   width: 50rpx;

   height: 100rpx;

   text-align: center;

}

.title_2 image {

   width: 40rpx;

   height: 40rpx;

   margin: 30rpx auto;

}

(3)js配置

在wxml中已经准备好的事件catchtap='panel'进行数据的绑定。代码如下:

表3 js代码示例

panel: function (e) {

     if (e.currentTarget.dataset.index != this.data.showIndex) {

       this.setData({

         showIndex: e.currentTarget.dataset.index

       })

     } else {

       this.setData({

        showIndex: 0

       })

     }

   },

(4)效果图

结语

折叠面板的实现主要放在事件绑定上,注意用到的是catch事件绑定,因为它可以阻止冒泡事件向上冒泡。折叠面板也可以根据需要在展开的面板中进行自定义的配置。

主 编 | 王楠岚

责 编 | 吴怡辰

where2go 团队

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档