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


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 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
JQ获取动态加载的图片大小的正确方法分享
Nov 08 Javascript
JS中把字符转成ASCII值的函数示例代码
Nov 21 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
Mar 02 Javascript
详解JavaScript函数对象
Nov 15 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
Jan 20 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
May 03 Javascript
jQuery图片查看插件Magnify开发详解
Dec 25 jQuery
简单的React SSR服务器渲染实现
Dec 11 Javascript
Vue获取微博授权URL代码实例
Nov 04 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
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
2016/06/30 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
python中input()与raw_input()的区别分析
2016/02/27 Python
彻底理解Python list切片原理
2017/10/27 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
Python如何实现爬取B站视频
2020/05/20 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
安全生产实施方案
2014/02/23 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
小学毕业演讲稿
2014/04/25 职场文书
社团活动总结范文
2014/04/26 职场文书
企业晚会策划方案
2014/05/29 职场文书
规范化管理年活动总结
2014/08/29 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
长城导游词300字
2015/01/30 职场文书
销售员岗位职责
2015/02/10 职场文书
同事欢送会致辞
2015/07/31 职场文书
go 实现简易端口扫描的示例
2021/05/22 Golang
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫