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


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 相关文章推荐
通过jquery实现tab标签浏览效果
Feb 20 Javascript
扩展JavaScript功能的正确方法(译文)
Apr 12 Javascript
浅谈$(document)和$(window)的区别
Jul 15 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
Bootstrap在线电子商务网站实战项目5
Oct 14 Javascript
canvas实现粒子时钟效果
Feb 06 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
echarts设置图例颜色和地图底色的方法实例
Aug 01 Javascript
基于layui数据表格以及传数据的方式
Aug 19 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
Jul 09 Javascript
原生js实现照片墙效果
Oct 13 Javascript
Vue Element UI自定义描述列表组件
May 18 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+oracle 分页类
2006/10/09 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
jquery随意添加移除html的实现代码
2011/06/21 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
python元组操作实例解析
2014/09/23 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Win10下python 2.7与python 3.7双环境安装教程图解
2019/10/12 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
个人廉洁自律承诺书
2014/03/27 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
投资合作协议书
2014/04/17 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
2015年库房工作总结
2015/04/30 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
Spring实现内置监听器
2021/07/09 Java/Android