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


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 写类方式之七
Jul 05 Javascript
JavaScript中伪协议 javascript:使用探讨
Jul 18 Javascript
node.js中的url.format方法使用说明
Dec 10 Javascript
js流动式效果显示当前系统时间
May 16 Javascript
js实现图片切换(动画版)
Dec 25 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
jQuery+ajax实现修改密码验证功能实例详解
Jul 06 jQuery
js移动端图片压缩上传功能
Aug 18 Javascript
Vue进度条progressbar组件功能
Apr 17 Javascript
js正则表达式校验指定字符串的方法
Jul 23 Javascript
element-ui 上传图片后清空图片显示的实例
Sep 04 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
Sep 17 Javascript
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中使用Oracle数据库(5)
2006/10/09 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
在修改准备发的批量美化select+可修改select时,在非IE下发现了几个问题
2007/01/09 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
uploader秒传图片到服务器完整代码
2017/04/22 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python将字符串转换成数组的方法
2015/04/29 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
Python错误的处理方法
2020/06/23 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
小学生母亲节演讲稿
2014/05/07 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
优秀党员推荐材料
2014/12/18 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
合作与交流自我评价
2015/03/09 职场文书
Html5同时支持多端sdk的小技巧
2021/11/17 HTML / CSS
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers