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


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 面向对象编程  function是方法(函数)
Sep 17 Javascript
JS实现div内部的文字或图片自动循环滚动代码
Apr 19 Javascript
运用jQuery定时器的原理实现banner图片切换
Oct 22 Javascript
JavaScript获取表单内所有元素值的方法
Apr 02 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
jquery+json实现分页效果
Mar 07 Javascript
jQuery组件easyui基本布局实现代码
Aug 25 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
详解小程序input框失焦事件在提交事件前的处理
May 05 Javascript
js实现炫酷光感效果
Sep 05 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
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
2015/11/23 PHP
php时间函数用法分析
2016/05/28 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
Python易忽视知识点小结
2015/05/25 Python
Python求出0~100以内的所有素数
2018/01/23 Python
Python3实现的字典遍历操作详解
2018/04/18 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
20行python代码实现人脸识别
2019/05/05 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
SQL中where和having的区别
2012/06/17 面试题
Linux面试题LINUX系统类
2015/11/25 面试题
体育教育专业毕业生自荐信
2013/11/15 职场文书
2014年工程部工作总结
2014/11/25 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python