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


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新窗口与子窗口传值详解
Feb 11 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
jQuery实现简易的天天爱消除小游戏
Oct 16 Javascript
sencha ext js 6 快速入门(必看)
Jun 01 Javascript
前端面试题及答案整理(二)
Aug 26 Javascript
jQuery下拉菜单的实现代码
Nov 03 Javascript
vue构建单页面应用实战
Apr 10 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 Javascript
浅析JS中常用类型转换及运算符表达式
Jul 23 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
vue缓存之keep-alive的理解和应用详解
Nov 02 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 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中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
jQuery读取本地的json文件(实例讲解)
2017/10/31 jQuery
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
vue3.0 上手体验
2020/09/21 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中__call__用法实例
2014/08/29 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
python opencv实现证件照换底功能
2019/08/19 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
使用python计算三角形的斜边例子
2020/04/15 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
什么是方法的重载
2013/06/24 面试题
商务英语专业自荐信
2013/10/14 职场文书
班长岗位职责
2013/11/10 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
感恩老师演讲稿400字
2014/08/28 职场文书
社区服务理念口号
2015/12/25 职场文书
七年级作文之冬景
2019/11/07 职场文书