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


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 类与静态类的实现
Apr 01 Javascript
Jquery上传插件 uploadify v3.1使用说明
Jun 18 Javascript
javascript常用的正则表达式实例
May 15 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
如何利用Promises编写更优雅的JavaScript代码
May 17 Javascript
ionic中列表项增加和删除的实现方法
Jan 22 Javascript
canvas滤镜效果实现代码
Feb 06 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
vue cli安装使用less的教程详解
Jul 12 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
iSlider手机端图片滑动切换插件使用详解
Dec 24 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
Python箱型图处理离群点的例子
2019/12/09 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
政法大学毕业生自荐信范文
2014/01/01 职场文书
法律专业应届生自荐信范文
2014/01/06 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
大学活动总结格式
2014/04/29 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
建议书范文
2015/02/05 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
催款函怎么写
2015/06/24 职场文书
宣传稿格式范文
2015/07/23 职场文书
MySQL数据库 安全管理
2022/05/06 MySQL