微信小程序之下拉列表实现方法解析(附完整源码)


Posted in Javascript onAugust 23, 2019

一、效果图

微信小程序之下拉列表实现方法解析(附完整源码)

二、实现原理

跟网页的下拉列表实现是一样的,刚刚开始默认下拉的内容的是不显示的(display:none),然后通过点击的时候,去更改 display 的属性值,来实现下拉的效果。然后下拉的动画的通过 css3 的 animation 来实现的。

CSS3中添加的新属性 animation 是用来为元素实现动画效果的,但是animation无法单独担当起实现动画的效果。承载动画的另一个属性 —— @keyframes。使用的时候为了兼容可加上-webkit-、-o-、-ms-、-moz-、-khtml-等前缀以适应不同的浏览器。

三、源码

实现比较简单,代码带有必要的解释,所有就不赘述了。如果有什么看不懂的,可以在评论区提问,博主每天都会回复的。

index.wxml

<!--page/one/index.wxml-->
<view class="page">
 <view class="nav-son" bindtap="listpx">
  <view>我的下拉列表</view>
  <image src='{{imgUrl}}'></image>
 </view>
 
 <view class="temp {{pxopen ? 'slidown' : 'slidup'}} {{pxshow ? 'disappear':''}}">
  <view wx:for="{{content}}">
   {{item}}
  </view>
 </view>
</view>
<button>按钮</button>

index.wxss

/* 下拉列表的样式 */
.nav-son{
 position: relative;
 /* 让下拉提示信息永远放于下拉内容的上面 */
 z-index: 99;
 border-top: 1px solid #d1d3d4;
 border-bottom: 1px solid #d1d3d4;
 background: #fff;
 display: flex;
 height: 40px;
 align-items:center;
 font-size: 18px;
}
/* 下拉列表 下三角的样式 */
.nav-son image{
 position: absolute;
 right: 30rpx;
 width: 50rpx;
 height: 50rpx;
}
 
/* 下拉框的样式 */
.temp{
 /* 默认为不显示 */
 display:none;
 /* 下拉框的宽度, */
 width: 100%;
 /* 下拉框的最大高度 */
 max-height: 750rpx;
 overflow-y: scroll;
 padding: 0 0 0 20rpx;
 line-height:100rpx;
 background: #fff;
}
 
/* 下拉框内容的样式 */
.temp view{
 border-bottom: 1px solid #d1d3d4;
 font-size: 14px;
 color: #666;
}
 
/* 下拉动画 */
/* @keyframes Css3 新标签,循环动画 */
@keyframes slidown{
 from{
  transform: translateY(-100%);
 }
 to{
  transform: translateY(0%);
 }
}
.slidown{
 display: block;
 animation: slidown .2s ease-in both;
}
 
/* 上拉动画 */
@keyframes slidup{
 from{
  transform: translateY(0%);
 }
 to{
  transform: translateY(-100%);
 }
}
.slidup{
 display: block;
 animation: slidup .2s ease-in both;
 height: 0px;
}

index.js

Page({
 data: {
  content: [],
  px: [],
  pxopen: false,
  pxshow: false,
  active:true,
  imgUrl: "../../images/down.png"
 },
 onLoad: function() {
  this.setData({
   px: ['>默认排序', '>离我最近']
  })
 },
 listpx: function(e) {
  console.log(e)
  if (this.data.pxopen) {
   this.setData({
    pxopen: false,
    pxshow: false,
    active: true,
    imgUrl: "../../images/down.png"
   })
  } else {
   this.setData({
    content: this.data.px,
    pxopen: true,
    pxshow: false,
    active:false,
    imgUrl: "../../images/up.png"
   })
  }
  console.log(e.target)
 }
})

四、项目下载

微信小程序之侧边栏滑动实现过程解析(附完整源码)

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

Javascript 相关文章推荐
用Javascript同时提交多个Web表单的方法
Dec 26 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
引用外部js乱码问题分析及解决方案
Apr 12 Javascript
jQuery 选择同时包含两个class的元素的实现方法
Jun 01 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
微信小程序之仿微信漂流瓶实例
Dec 09 Javascript
基于EasyUI的基础之上实现树形功能菜单
Jun 28 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
使用JS判断页面是首次被加载还是刷新
May 26 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
Jan 21 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 #Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 #Javascript
vue使用微信JS-SDK实现分享功能
Aug 23 #Javascript
VUE实现移动端列表筛选功能
Aug 23 #Javascript
简述ES6新增关键字let与var的区别
Aug 23 #Javascript
微信小程序后台持续定位功能使用详解
Aug 23 #Javascript
详解基于Vue/React项目的移动端适配方案
Aug 23 #Javascript
You might like
php连接mysql数据库代码
2009/03/10 PHP
关于IIS php调用com组件的权限问题
2012/01/11 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
2019/11/09 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Python异常的检测和处理方法
2018/10/26 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
解决方案设计综合面试题
2015/08/31 面试题
内部类的定义、种类以及优点
2013/10/16 面试题
教师群众路线剖析材料
2014/09/29 职场文书
库房管理员岗位职责
2015/02/12 职场文书
2015年妇女工作总结
2015/05/14 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
解析原生JS getComputedStyle
2021/05/25 Javascript