微信小程序实现下拉框功能


Posted in Javascript onJuly 16, 2019

微信小程序里没有和HTML里的下拉框一样的组件,想要相同的效果只能自己写一个,先看效果

微信小程序实现下拉框功能

下面来看一下代码:

首先WXML

<view class='select_box'>
 <view class='select' catchtap='selectTap'>
  <text class='select_text'>{{selectData[index]}}</text>
  <image class='select_img {{show&&"select_img_rotate"}}' src='/image/gobottom.png'></image>   
 </view>
 <view class='option_box' style='height:{{show?(selectData.length>5?300:selectData.length*60):0}}rpx;'>
  <text class='option' style='{{index==selectData.length-1&&"border:0;"}}' wx:for='{{selectData}}' wx:key='this' data-index='{{index}}' catchtap='optionTap'>{{item}}</text>
 </view>
</view>
<!--
 show&&"select_img_rotate"-----给显示框右边的下拉箭头添加动画

 height:{{show?(selectData.length>5?300:selectData.length*60):0}}rpx;-----给改变下拉框高度,实现下拉框的显示隐藏,每个下拉选项的高度为60,下拉框的最大高度这里设置的是300,所以这里写成当数据长度大于5时,下拉框高度为300,反之下拉框高度为数据长度乘以60

 index==selectData.length-1&&"border:0;"-----取消下拉选项的最后一个的下边框
 -->

然后WXSS(如果不想要动画,删掉wxss里的transition:transform 0.3s;和transition: height 0.3s;即可)

page{
 background: #f3f7f7;
}
.select_box{
 background: #fff;
 width: 80%;
 margin: 30rpx auto;
 position: relative;
}
.select{
 box-sizing: border-box;
 width: 100%;
 height: 70rpx;
 border:1px solid #efefef;
 border-radius: 8rpx;
 display: flex;
 align-items: center;
 padding: 0 20rpx;
}
.select_text{
 font-size: 30rpx;
 flex: 1;
}
.select_img{
 width: 40rpx;
 height: 40rpx;
 display: block;
 transition:transform 0.3s;
}
.select_img_rotate{
 transform:rotate(180deg); 
}
.option_box{
 position: absolute;
 top: 70rpx;
 width: 100%;
 border:1px solid #efefef;
 box-sizing: border-box;
 height: 0;
 overflow-y: auto;
 border-top: 0;
 background: #fff;
 transition: height 0.3s;
}
.option{
 display: block;
 line-height: 40rpx;
 font-size: 30rpx;
 border-bottom: 1px solid #efefef;
 padding: 10rpx;
}

这里是JS

Page({

 data: {
 show:false,//控制下拉列表的显示隐藏,false隐藏、true显示
 selectData:['1','2','3','4','5','6'],//下拉列表的数据
 index:0//选择的下拉列表下标
 },
 // 点击下拉显示框
 selectTap(){
 this.setData({
  show: !this.data.show
 });
 },
 // 点击下拉列表
 optionTap(e){
 let Index=e.currentTarget.dataset.index;//获取点击的下拉列表的下标
 this.setData({
  index:Index,
  show:!this.data.show
 });
 },
 onLoad: function (options) {
 
 }

})

完结!

有什么错误或者其他好的方法,请告知,谢谢

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于JavaScript的gzip静态压缩方法
Jan 05 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
Sep 06 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 Javascript
jquery操作ID带有变量的节点实例
Dec 07 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
Apr 29 Javascript
Mongoose实现虚拟字段查询的方法详解
Aug 15 Javascript
无限循环轮播图之运动框架(原生JS实现)
Oct 01 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
详解easyui 切换主题皮肤
Apr 04 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
May 05 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 Javascript
javascript中的this作用域详解
Jul 15 #Javascript
微信小程序页面上下滚动效果
Nov 18 #Javascript
node.js实现上传文件功能
Jul 15 #Javascript
js canvas实现5张图片合成一张图片
Jul 15 #Javascript
js使用文件流下载csv文件的实现方法
Jul 15 #Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 #Javascript
微信小程序开发技巧汇总
Jul 15 #Javascript
You might like
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
AngularJS使用ngMessages进行表单验证
2015/12/27 Javascript
理解javascript对象继承
2016/04/17 Javascript
JavaScript 中对象的深拷贝
2016/12/04 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
Python Socket编程入门教程
2014/07/11 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
Python中join()函数多种操作代码实例
2020/01/13 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
物业管理专业个人的自我评价
2013/11/19 职场文书
应聘自荐信
2013/12/14 职场文书
暑期社会实践感言
2014/02/25 职场文书
一分钟演讲稿
2014/04/30 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
小学师德师风演讲稿
2014/09/02 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis