zoukankan      html  css  js  c++  java
  • 微信小程序(19)-- 从底部向上滑出的动画效果

    从底部向上滑出的动画效果:

    用到了小程序的触摸事件bindtouchmove,以及创建一个annimation对象,完成动画操作之后使用animation这个对象的export()方法导出动画数据。

    为了阻止多次向上向下滑动,出现多次动画效果,需要增加 ifStop 来判断。

    根据 e.touches[0].clientY 的对比,显示相应的动画效果。

      

    <!--logs.wxml-->
    <view class="box-out" bindtouchstart='startFun' bindtouchmove='showFun' bindtouchend='hideFun'>
      <view class="content">
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view>日志内容</view>
        <view bindtap='clickFun'>点击日志内容1</view>
        <view>点击日志内容2</view>
        <view>点击日志内容3</view>
        <view>点击日志内容4</view>
      </view>
      <view class="modalDetail" hidden="{{isShow}}"></view>
        <scroll-view class="modalDetail__box" scroll-y="{{true}}" style='height: 600rpx;background:#fff;transform: translateY(600px);' animation="{{animationData}}">
          你的展示内容写这里你的展示内容写这里 你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里你的展示内容写这里
        </scroll-view>
    </view>
    .modalDetail{
        position: fixed;
        left: 0;
        top: 0;
         100%;
        height: 100%;
        z-index: 9999;
        background: rgba(0, 0, 0, 0.5);
    }
    .modalDetail__box{
        position: fixed;
        left: 0;
        bottom: 0;
         100%;
        height: auto;
        z-index: 10000;
    }
    //logs.js
    Page({ data: { animationData:'', startclientY:'', isShow: true,//底部遮罩 ifStop: true //阻止多次同方向滑动,多次动画效果 }, onLoad: function () { }, clickFun: function () { console.log('内容1') }, // bindtouchstart startFun: function(e){ console.log(e,'start') this.setData({ startclientY:e.touches[0].clientY //起始点的clientY }) }, // bindtouchmove showFun: function (e) { if (e.touches[0].clientY > this.data.startclientY){ console.log(this.data.ifStop,'隐藏') if(this.data.ifStop){ return; } console.log('move') // 隐藏遮罩层 var animation = wx.createAnimation({ duration: 500, timingFunction: "linear", delay: 0 }) animation.translateY(0).step() this.setData({ animationData: animation.export(), ifStop: true }) setTimeout(function () { animation.translateY(600).step() this.setData({ animationData: animation.export(), isShow: true }) }.bind(this), 500) }else{ console.log(this.data.ifStop,'显示') if(!this.data.ifStop){ return; } console.log('move') // 显示遮罩层 var animation = wx.createAnimation({ duration: 500, timingFunction: "linear", delay: 0 }) animation.translateY(600).step() this.setData({ animationData: animation.export(), ifStop: false }) setTimeout(function () { animation.translateY(0).step() this.setData({ animationData: animation.export(), isShow: false }) }.bind(this), 500) } }, // bindtouchend hideFun: function (e) { console.log(e,'end') }, })
  • 相关阅读:
    AVR汇编初探之二《AVR的指令与汇编系统》
    Fedora 18 装完后干的事
    重建tempdb
    sqlserver 2008 r2 SqlClrProvider报错解析
    Analysis Memory In Sqlserver
    《设计模式之禅》学习笔记(七)
    容易弄错的繁体字
    《C Primer Plus》学习笔记
    什么是 Windows 能干而 Linux 干不了的事情
    MySQL中BLOB字段类型介绍
  • 原文地址:https://www.cnblogs.com/juewuzhe/p/12082772.html
Copyright © 2011-2022 走看看