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


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代码
Aug 05 Javascript
Jquery插件 easyUI属性汇总
Jan 19 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
jQuery实现的漂亮表单效果代码
Aug 18 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
Dec 11 Javascript
jQuery实现Select左右复制移动内容
Aug 05 Javascript
AngularJS  $on、$emit和$broadcast的使用
Sep 05 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
微信小程序中setInterval的使用方法
Sep 29 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
一篇文章了解正则表达式的替换技巧
Feb 24 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的分页功能
2007/03/21 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
用jscript启动sqlserver
2007/06/21 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
2019/08/09 Javascript
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python实现简单ftp客户端的方法
2015/06/28 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
Python自定义线程类简单示例
2018/03/23 Python
python3实现微型的web服务器
2019/09/03 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
CSS3教程(8):CSS3透明度指南
2009/04/02 HTML / CSS
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
小学班主任评语大全
2014/04/23 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS