实现一个抽屉菜单的案例

wxml

  1. <!--button-->
  2. <view class="btn" bindtap="powerDrawer" data-statu="open">button</view>
  3. <!--mask-->
  4. <view class="drawer_screen" bindtap="powerDrawer" data-statu="close" wx:if="{{showModalStatus}}"></view>
  5. <!--content-->
  6. <!--使用animation属性指定需要执行的动画-->
  7. <view animation="{{animationData}}" class="drawer_attr_box" wx:if="{{showModalStatus}}">
  8. <!--drawer content-->
  9. <view class="drawer_content">
  10. <view class="drawer_title line">菜单1</view>
  11. <view class="drawer_title line">菜单2</view>
  12. <view class="drawer_title line">菜单3</view>
  13. <view class="drawer_title line">菜单4</view>
  14. <view class="drawer_title">菜单5</view>
  15. </view>
  16. </view>

css

  1. /*button*/
  2. .btn {
  3. width: 80%;
  4. padding: 20rpx 0;
  5. border-radius: 10rpx;
  6. text-align: center;
  7. margin: 40rpx 10%;
  8. background: #0C1939;
  9. color: #fff;
  10. }
  11. /*mask*/
  12. .drawer_screen {
  13. width: 100%;
  14. height: 100%;
  15. position: fixed;
  16. top: 0;
  17. left: 0;
  18. z-index: 1000;
  19. background: #000;
  20. opacity: 0.2;
  21. overflow: hidden;
  22. }
  23. /*content*/
  24. .drawer_attr_box {
  25. width: 100%;
  26. overflow: hidden;
  27. position: fixed;
  28. bottom: 0;
  29. left: 0;
  30. z-index: 1001;
  31. background: #fff;
  32. }
  33. .drawer_content {
  34. padding: 20rpx 40rpx;
  35. height: 470rpx;
  36. overflow-y: scroll;
  37. }
  38. .drawer_title{
  39. padding:20rpx;
  40. font:42rpx "microsoft yahei";
  41. text-align: center;
  42. }
  43. .line{
  44. border-bottom: 1px solid #f8f8f8;
  45. }

  

js

  1. Page({
  2. data: {
  3. showModalStatus: false
  4. },
  5. powerDrawer: function (e) {
  6. var currentStatu = e.currentTarget.dataset.statu;
  7. this.util(currentStatu)
  8. },
  9. util: function (currentStatu) {
  10. /* 动画部分 */
  11. // 第1步:创建动画实例
  12. var animation = wx.createAnimation({
  13. duration: 200, //动画时长
  14. timingFunction: "linear", //线性
  15. delay: 0 //0则不延迟
  16. });
  17.  
  18. // 第2步:这个动画实例赋给当前的动画实例
  19. this.animation = animation;
  20.  
  21. // 第3步:执行第一组动画:Y轴偏移240px后(盒子高度是240px),停
  22. animation.translateY(240).step();
  23.  
  24. // 第4步:导出动画对象赋给数据对象储存
  25. this.setData({
  26. animationData: animation.export()
  27. })
  28.  
  29. // 第5步:设置定时器到指定时候后,执行第二组动画
  30. setTimeout(function () {
  31. // 执行第二组动画:Y轴不偏移,停
  32. animation.translateY(0).step()
  33. // 给数据对象储存的第一组动画,更替为执行完第二组动画的动画对象
  34. this.setData({
  35. animationData: animation
  36. })
  37.  
  38. //关闭抽屉
  39. if (currentStatu == "close") {
  40. this.setData(
  41. {
  42. showModalStatus: false
  43. }
  44. );
  45. }
  46. }.bind(this), 200)
  47.  
  48. // 显示抽屉
  49. if (currentStatu == "open") {
  50. this.setData(
  51. {
  52. showModalStatus: true
  53. }
  54. );
  55. }
  56. }
  57. })

参考链接:https://blog.csdn.net/u012509485/article/details/80488519

微信小程序 -- 自定义抽屉式菜单(底部,从下向上拉出)的更多相关文章

  1. 微信小程序自定义底部导航栏组件+跳转

    微信小程序本来封装有底部导航栏,但对于想自定义样式和方法的开发者来说,这并不是很好. 参考链接:https://github.com/ljybill/miniprogram-utils/tree/ma ...

  2. 微信小程序-自定义底部导航

    代码地址如下:http://www.demodashi.com/demo/14258.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  3. 微信小程序自定义tabbar的实现

    微信小程序自定义tabbar的实现 目的:当采用微信的自定义tabbar组件的时候,切换的时候会出现闪屏的效果:当使用微信默认的tabbar的时候,限制了tabbar的数量以及灵活配置. 方案:自己动 ...

  4. 微信小程序自定义Tabber,附详细源码

    目录 1,前言 2,说明 3,核心代码 1,前言 分享一个完整的微信小程序自定义Tabber,tabber按钮可以设置为跳转页面,也可以设置为功能按钮.懒得看文字的可以直接去底部,博主分享了小程序代码 ...

  5. 微信小程序——自定义导航栏

    微信头部导航栏可能通过json配置: 但是有时候我们项目需求可能需要自定义头部导航栏,如下图所示: 现在具体说一下实现步骤及方法: 步骤: 1.在 app.json 里面把 "navigat ...

  6. 微信小程序自定义弹窗wcPop插件|仿微信弹窗样式

    微信小程序自定义组件弹窗wcPop|小程序消息提示框|toast自定义模板弹窗 平时在开发小程序的时候,弹窗应用场景还是蛮广泛的,但是微信官方提供的弹窗比较有局限性,不能自定义修改.这个时候首先想到的 ...

  7. 微信小程序自定义 tabbar

    一定的需求情况下,无法使用小程序原生的 tabbar 的时候,需要自行实现一个和 tabbar 功能一模一样的自制组件. 查阅了海量的博客和文档之后,亲自踩坑.总结了三种在不使用微信小程序原生 tab ...

  8. 微信小程序把玩(三)tabBar底部导航

    原文:微信小程序把玩(三)tabBar底部导航 tabBar相对而言用的还是比较多的,但是用起来并没有难,在app.json中配置下tabBar即可,注意tabBar至少需要两个最多五个Item选项 ...

  9. 微信小程序 自定义导航组件 nav头部 全面屏设计

    nav-dynamic 微信小程序自定义nav头部组件:适配全面屏设计: 实现功能 初始进入页面时,展示初始状态下的nav样式: 页面滚动时,监听页面滚动事件,展示滚动状态下的nav样式: 根据配置字 ...

随机推荐

  1. mysql 单表索引优化

    建表语句 CREATE TABLE IF NOT EXISTS `article` ( `id` INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMEN ...

  2. python进阶强化学习

    最近学习了慕课的python进阶强化训练,将学习的内容记录到这里,同时也增加了很多相关知识. 主要分为以下九个模块: 基本使用 迭代器和生成器 字符串 文件IO操作 自定义类和类的继承 函数装饰器和类 ...

  3. 初级入门 --- 认识 WebGL

    WebGL 是什么? WebGL 是一组基于 JavaScript 语言的图形规范,浏览器厂商按照这组规范进行实现,为 Web 开发者提供一套3D图形相关的 API. 这些 API 能够让 Web 开 ...

  4. vCenter 导入Windows Server 2003/XP自定义规范失败

    1.vcsa 切换到/etc/vmware-vpx/sysprep目录下,会有很多个目录,根据Windows Server 2003的版本,64位找到 svr2003-64 这个目录,32位找到svr ...

  5. 【pwnable.tw】 starbound

    此题的代码量很大,看了一整天的逻辑代码,没发现什么问题... 整个函数的逻辑主要是红框中两个指针的循环赋值和调用,其中第一个指针是主功能函数,第二个数组是子功能函数. 函数的漏洞主要在main函数中, ...

  6. 云时代架构阅读笔记十一——数据库SQL优化

    网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 ...

  7. Linux安装C++环境

    centos 安装gcc-c++ yum install gcc-c++ 安装CMake yum install cmake 切换gcc版本 安装devtoolset-x 安装devtoolset-3 ...

  8. python集成开发环境Anaconda的安装

    参考博文: anaconda在Linux下的安装 Linux下anaconda3的安装 Anaconda的安装.启用及停用的步骤 Python学习之Anaconda的使用及配置方法 Anaconda ...

  9. Jetbrains推出了一款新的编程字体Mono

    今天看到新闻说Jetbrains推出了一款新的编程字体Mono,便到官网上下载试了一下, 在VS和VS Code中显示效果都非常不错,是并且支持连体,感兴趣的朋友可以到其官网下载试用一下.

  10. 学生选课数据库MySQL语句练习题45道

    1. 查询Student表中的所有记录的Sname.Ssex和Class列. select Sname,Ssex,Class from Student;2. 查询教师所有的单位即不重复的Depart列 ...