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


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 相关文章推荐
原生js实现fadein 和 fadeout淡入淡出效果
Jun 05 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
使用正则表达式的格式化与高亮显示json字符串
Dec 03 Javascript
浅谈$(document)和$(window)的区别
Jul 15 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
Jul 27 Javascript
JavaScript requestAnimationFrame动画详解
Sep 14 Javascript
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
JavaScript生成指定范围随机数和随机序列的方法
May 05 Javascript
Vue $mount实战之实现消息弹窗组件
Apr 22 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
Aug 20 Javascript
vue监听用户输入和点击功能
Sep 27 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
写出高质量的PHP程序
2012/02/04 PHP
详解PHP归并排序的实现
2016/10/18 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
python 性能提升的几种方法
2016/07/15 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python requests爬取高德地图数据的实例
2018/11/10 Python
浅谈Python基础—判断和循环
2019/03/22 Python
Python异常处理例题整理
2019/07/07 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
如何利用python 读取配置文件
2021/01/06 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
JNI的定义
2012/11/25 面试题
益模软件Java笔试题
2012/03/27 面试题
C#面试常见问题
2013/02/25 面试题
投标单位介绍信
2014/01/09 职场文书
金融事务专业求职信
2014/04/25 职场文书
仓库管理计划书
2014/05/04 职场文书
行政管理专业求职信
2014/07/06 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书