使用微信小程序做一个简易的下拉框,无动画效果,纯原生写法(下拉列表框)

最近在开发的时候,需要使用下拉的效果,但是之前并没有进行书写过,今天做一个简单的demo,来记录一下微信小程序开发的下拉框效果。
微信小程序和jquery最大的区别就是是否操作dom,
微信小程序无需操作dom,可以直接利用数据驱动的方式来实现我们想要的效果。
下面展示一下我的demo,本人只是初学者,欢迎大家交流。所有的代码注释都添加在代码内了。

wxml

<view class="select">
	<view class="tab">
	<!--bindtap="selectEle" 指的是绑定小程序的点击事件  
	
	data-index="{{selectArray[0].index}}"  绑定索引值,方便循环遍历
	-->
		<view class="title" bindtap="selectEle" data-index="{{selectArray[0].index}}">
			1.第一列
		</view>
		<!-- {{selectArray[0].value ? 'show' : 'hide'}}  
		通过selectArray这个数组来
		动态的绑定class 来实现显示和隐藏-->
		<view class="tab_label  {{selectArray[0].value ? 'show' : 'hide'}}" >
			我是第一列的描述
		</view>
	</view>
	<view class="tab">
		<view class="title"  bindtap="selectEle"  data-index="{{selectArray[1].index}}">
			2.第二列
		</view>
		<view class="tab_label {{selectArray[1].value ? 'show' : 'hide'}}">
			我是第二列的描述
		</view>
	</view>
	<view class="tab">
		<view class="title"  bindtap="selectEle"  data-index="{{selectArray[2].index}}">
			3.第三列
		</view>
		<view class="tab_label {{selectArray[2].value ? 'show' : 'hide'}}">
			我是第三列的描述
		</view>
	</view>

</view>

下面是js的代码

import {contacts} from '../data/contact'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    selectArray:[   //设置下拉列表的数据  及其默认值
      {
        index:0,
        value:false
      },{
        index:1,
        value:false
      },{
        index:2,
        value:false
      }
  ]
  },

  selectEle: function (e) {
    var that = this    //改变this指向
    let indexVal = e.currentTarget.dataset.index   //获取目标view上的data-index内的值
    that.data.selectArray.forEach(function(item, index){   //使用循环的方法遍历data内的数组
      if (indexVal == index) {   //根据索引判断是否和数组中的索引对应
        if(that.data.selectArray[index].value){
          let selectArray = that.data.selectArray   // 进行赋值,如果展开就赋值false,
          selectArray[index].value = false        //如果关闭就赋值true
            that.setData({
              selectArray    //这里使用了es6的语法,即 selectArray:selectArray
            })
        }else {
          let selectArray = that.data.selectArray
          selectArray[index].value = true
            that.setData({
              selectArray
            })
        }
      }
    })
  }
})

最后是WXSS的代码,就是一个显示隐藏的样式

.tab_label.hide {
  display: none;
}

复制到小程序内就可以看到想要的效果了。

效果图
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值