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


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 相关文章推荐
js chrome浏览器判断代码
Mar 28 Javascript
JQuery插入DOM节点的方法
Jun 11 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
vuex 动态注册方法 registerModule的实现
Jul 03 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 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中创建并处理图象
2006/10/09 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
flash用php连接数据库的代码
2011/04/21 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
event.srcElement 用法笔记e.target
2009/12/18 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
Javascript的console['']常用输入方法汇总
2018/04/26 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
编写Python CGI脚本的教程
2015/06/29 Python
深入理解Python中的super()方法
2017/11/20 Python
Python机器学习logistic回归代码解析
2018/01/17 Python
详解Numpy中的广播原则/机制
2018/09/20 Python
解读python如何实现决策树算法
2018/10/11 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
Viking比利时:购买办公用品
2019/10/30 全球购物
Shopee菲律宾:在线购买和出售
2019/11/25 全球购物
电信专业毕业生推荐信
2013/11/18 职场文书
上班早退检讨书
2014/01/09 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
家庭教育的心得体会
2014/09/01 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL