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


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下arguments,caller,callee,call,apply示例及理解
Dec 24 Javascript
JQuery将文本转化成JSON对象需要注意的问题
May 09 Javascript
基于jQuery.Validate验证库知识点的详解
Apr 26 Javascript
js通过元素class名字获取元素集合的具体实现
Jan 06 Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
jQuery增加自定义函数的方法
Jul 18 Javascript
鼠标悬停小图标显示大图标
Jan 22 Javascript
浅谈Vue.js
Mar 02 Javascript
基于JavaScript实现无缝滚动效果
Jul 21 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
Nov 01 Javascript
vue 组件简介
Jul 31 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中常用编辑器推荐
2007/01/02 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python实现多线程抓取网页功能实例详解
2017/06/08 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
求网格中的黑点分布
2013/11/06 面试题
写求职信有什么意义
2014/02/17 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
小学生环保标语
2014/06/13 职场文书
财务整改报告范文
2014/11/05 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
如何用JS实现网页瀑布流布局
2021/04/24 Javascript