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


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面向对象之体会[总结]
Nov 13 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
JS实现静止元素自动移动示例
Apr 14 Javascript
javascript模拟订火车票和退票示例
Apr 24 Javascript
node.js中的fs.unlink方法使用说明
Dec 15 Javascript
7个让JavaScript变得更好的注意事项
Jan 28 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
Nov 01 Javascript
Ajax基础知识详解
Feb 17 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
Aug 06 Javascript
JavaScript实现音乐导航效果
Nov 19 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模拟post行为代码总结(POST方式不是绝对安全)
2012/02/22 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
JS下高效拼装字符串的几种方法比较与测试代码
2010/04/15 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
跟老齐学Python之用while来循环
2014/10/02 Python
Python中的匿名函数使用简介
2015/04/27 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
Python反射的用法实例分析
2018/02/11 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
python如何输出反斜杠
2020/06/18 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
个人收入证明范本
2014/01/12 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
市场督导岗位职责
2015/04/10 职场文书
春节晚会开场白
2015/05/29 职场文书
二胎满月酒致辞
2015/07/29 职场文书
如何用python反转图片,视频
2021/04/24 Python
使用python绘制横竖条形图
2022/04/21 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers