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


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 继承的实现
Jul 09 Javascript
jquery图片放大功能简单实现
Aug 01 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
Jun 26 Javascript
Jquery 实现弹出层插件
Jan 28 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 Javascript
JS原型继承四步曲及原型继承图一览
Nov 28 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
Apr 26 Javascript
json字符串传到前台input的方法
Aug 06 Javascript
vue实现点击按钮下载文件功能
Oct 11 Javascript
vue2.x 对象劫持的原理实现
Apr 19 Javascript
解决vue-router 切换tab标签关闭时缓存问题
Jul 22 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
PHP常用的小程序代码段
2015/11/14 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
tp5.1 实现setInc字段自动加1
2019/10/18 PHP
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
jquery禁用右键示例
2014/04/28 Javascript
javascript记录文本框内文字个数检测文字个数变化
2014/10/14 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
详解javascript中的变量提升和函数提升
2018/05/24 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
Python创建模块及模块导入的方法
2015/05/27 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
Python基于yield遍历多个可迭代对象
2020/03/12 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
Python decimal模块使用方法详解
2020/06/08 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
客房主管岗位职责
2013/12/09 职场文书
大学生自荐书范文
2013/12/10 职场文书
《静夜思》教学反思
2016/02/17 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby