最近做小程序时,会经常用到各种弹框。直接做显示和隐藏虽然也能达到效果,但是体验性太差,也比较简单粗暴。想要美美地玩,添加点动画还是非常有必要的。下面做一个底部上滑的弹框。

wxml

  1. <view class="modals modals-bottom-dialog" hidden="{{hideModal}}">
  2. <view class="modals-cancel" bindtap="hideModal"></view>
  3. <view class="bottom-dialog-body bottom-pos" animation="{{animationData}}"></view>
  4. </view>
  5.  
  6. <button bindtap="showModal">点我</button>

wxss

  1. /*模态框*/
  2. .modals{position:fixed; z-index:; top:; left:; right:; bottom:;}
  3. .modals-cancel{position:absolute; z-index:; top:; left:; right:; bottom:; background-color: rgba(0,0,0,.5);}
  4. .bottom-dialog-body{position:absolute; z-index:; bottom:; left:; right:; padding:30rpx; height:300rpx; background-color: #fff;}
  5. /*动画前初始位置*/
  6. .bottom-pos{-webkit-transform:translateY(100%);transform:translateY(100%);}

关键的部分来啦~~

js

  1. Page({
  2. data:{
  3. hideModal:true, //模态框的状态 true-隐藏 false-显示
  4. animationData:{},//
  5. },
  6.  
  7. // 显示遮罩层
  8. showModal: function () {
  9. var that=this;
  10. that.setData({
  11. hideModal:false
  12. })
  13. var animation = wx.createAnimation({
  14. duration: 600,//动画的持续时间 默认400ms 数值越大,动画越慢 数值越小,动画越快
  15. timingFunction: 'ease',//动画的效果 默认值是linear
  16. })
  17. this.animation = animation
  18. setTimeout(function(){
  19. that.fadeIn();//调用显示动画
  20. },200)
  21. },
  22.  
  23. // 隐藏遮罩层
  24. hideModal: function () {
  25. var that=this;
  26. var animation = wx.createAnimation({
  27. duration: 800,//动画的持续时间 默认400ms 数值越大,动画越慢 数值越小,动画越快
  28. timingFunction: 'ease',//动画的效果 默认值是linear
  29. })
  30. this.animation = animation
  31. that.fadeDown();//调用隐藏动画
  32. setTimeout(function(){
  33. that.setData({
  34. hideModal:true
  35. })
  36. },720)//先执行下滑动画,再隐藏模块
  37.  
  38. },
  39.  
  40. //动画集
  41. fadeIn:function(){
  42. this.animation.translateY(0).step()
  43. this.setData({
  44. animationData: this.animation.export()//动画实例的export方法导出动画数据传递给组件的animation属性
  45. })
  46. },
  47. fadeDown:function(){
  48. this.animation.translateY(300).step()
  49. this.setData({
  50. animationData: this.animation.export(),
  51. })
  52. },
  53. })

转 : https://www.jianshu.com/p/cea2d4dc24d1

微信小程序之自定义底部弹出框动画的更多相关文章

  1. 微信小程序组件 加减号弹出框

    <!-- 点击立即抢拼弹出框 --> <view class='add-rob' bindtap="setModalStatus" data-status=&qu ...

  2. 微信小程序之自定义模态弹窗(带动画)实例

    1.基本需求. 实现用户自定义弹框 带动画(动画可做参靠,个人要是觉得不好看可以自定义动画) 获取弹出框的内容,自定义事件获取 2.案例目录结构 二.程序实现具体步骤 1.弹框index.wxml代码 ...

  3. 微信小程序 修改(自定义) 单选/复选按钮样式 checkbox/radio样式自定义

    参考文章: 微信小程序 修改(自定义) 单选/复选按钮样式 checkbox/radio样式自定义

  4. 微信小程序中自定义modal

    微信小程序中自定义modal .wxml <modal hidden="{{hidden}}" title="这里是title" confirm-text ...

  5. 图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作

    图解微信小程序---添加tabBar底部菜单,添加已做好轮播图操作 什么是tabBar? 顶部或者底部tab栏如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以 ...

  6. UIActionSheet底部弹出框

    <底部弹出框来提示用户信息>    1.遵循代理方法<UIActionSheetDelete>    2.调用放法 [UIActionSheet *sheet=[UIActio ...

  7. 通用的popupwindow底部弹出框

    前段时间做项目的时候,有几个底部弹出框,当时因为忙着赶进度所有就单独写了好几个popupwindow.后来就想着怎么实现一个通用的PopupWindow工具类 就是在要用到的时候创建该工具类的对象,并 ...

  8. 微信小程序组件 自定义弹出框

    <!-- 点击立即抢拼弹出框 --> <view class='add-rob' bindtap="setModalStatus" data-status=&qu ...

  9. 【微信小程序】自定义模态框实例

    原文链接:https://mp.weixin.qq.com/s/23wPVFUGY-lsTiQBtUdhXA 1 概述 由于官方API提供的显示模态弹窗,只能简单地显示文字内容,不能对对话框内容进行自 ...

随机推荐

  1. DRF 有无外键操作实例

    models.py from django.db import models # Create your models here. class Category(models.Model): &quo ...

  2. 【JUC】5.线程池—Executor

    创建线程池可以分为三种方式: 1. 通过ThreadPoolExecutor的构造方法,创建ThreadPoolExecutor的对象,即一个线程池对象: 此构造方法,一共7个参数,5个必须参数,2个 ...

  3. Mysql5.7降级到5.6遇到的坑

    任何版本的升级或降级都存在兼容的问题,DB更为明显,废话不多说,直接进入主题,问题描述如下: Specified key was too long; max key length is 767 byt ...

  4. CentOS 7.x 配置静态 IP 并启用

    centos 7.x 配置静态 IP 并启用 0 问题由来 通过查询本机的IP,发现本机并没有有效IP: [pan@localhost ~]$ ip addr 所以,我们需要设置本机的静态IP,并启用 ...

  5. JavaSE字符串日期与时间拼接小列子与JSON小列子

    1.在对象中有个字段为Timestamp类型,需要将数据库的开始日期字段和开始时间字段拼接成一个字段开始字段 private static Timestamp getDateTime(String d ...

  6. 用java刷剑指offer(数字在排序数组中出现的次数)

    题目描述 统计一个数字在排序数组中出现的次数. 牛客网链接 java代码 //看见有序就用二分法 public class Solution { public int GetNumberOfK(int ...

  7. java请求url可以带参数

    /** * * @param urlStr * url * @param content * 提交的参数 * @param encoding * 编码格式 * @return */ public st ...

  8. com.mysql.jdbc.Driver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library?

    把对应的jdbc jar包放到 /usr/share/logstash/logstash-core/lib/jars/路径 下即可.可以在配置文件不用配置驱动库.

  9. Spring WebSocket中403错误解决

    最近测试了一下spring的websocket,遇到了一个比较恶心的问题,在这记录一下. 问题源自之前开发的一个h5项目,这个项目在80端口下一直放着,就顺便在里面随便加了几行代码测试websocke ...

  10. Linux 服务器性能出问题,排查下这些参数指标

    taozj马哥Linux运维 一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤 ...