• 微信小程序之自定义底部弹出框动画


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

    wxml

    <view class="modals modals-bottom-dialog" hidden="{{hideModal}}">
        <view class="modals-cancel" bindtap="hideModal"></view>
        <view class="bottom-dialog-body bottom-pos" animation="{{animationData}}"></view>
    </view>
    
    <button bindtap="showModal">点我</button>

    wxss

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

    关键的部分来啦~~

    js

    Page({
        data:{
          hideModal:true, //模态框的状态  true-隐藏  false-显示
          animationData:{},//
        },
    
      // 显示遮罩层
        showModal: function () {
        var that=this;
        that.setData({
          hideModal:false
        })
        var animation = wx.createAnimation({
          duration: 600,//动画的持续时间 默认400ms   数值越大,动画越慢   数值越小,动画越快
          timingFunction: 'ease',//动画的效果 默认值是linear
        })
        this.animation = animation 
        setTimeout(function(){
          that.fadeIn();//调用显示动画
        },200)   
      },
    
      // 隐藏遮罩层
      hideModal: function () {
        var that=this; 
        var animation = wx.createAnimation({
          duration: 800,//动画的持续时间 默认400ms   数值越大,动画越慢   数值越小,动画越快
          timingFunction: 'ease',//动画的效果 默认值是linear
        })
        this.animation = animation
        that.fadeDown();//调用隐藏动画   
        setTimeout(function(){
          that.setData({
            hideModal:true
          })      
        },720)//先执行下滑动画,再隐藏模块
        
      },
    
      //动画集
      fadeIn:function(){
        this.animation.translateY(0).step()
        this.setData({
          animationData: this.animation.export()//动画实例的export方法导出动画数据传递给组件的animation属性
        })    
      },
      fadeDown:function(){
        this.animation.translateY(300).step()
        this.setData({
          animationData: this.animation.export(),  
        })
      }, 
    })

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

  • 相关阅读:
    hdu 1215 数论 +打表
    hdu 1452 因子和 + 逆元素+ 快速幂
    hdu 1299 整数分解 + map 质因子以及个数
    九度oj 1551 二分 + 精度
    八数码难题 hdu1043/ poj1077
    hdu 1073 字符串函数的应用
    hdu 1048 字符串
    hdu 1039 连续字符串处理
    hdu 1020 简单的字符串处理
    hdu 1027 排列生成器
  • 原文地址:https://www.cnblogs.com/fps2tao/p/11364740.html
Copyright © 2020-2023  润新知