zoukankan      html  css  js  c++  java
  • 微信小程序之实现页面缩放式侧滑效果

    效果图:

    实现原理:点击按钮,往需要动画的div中添加或移除拥有动画效果的class。

    由于微信小程序中不能操作page这个根节点,所以,只有用一个div(view)来模仿page根节点。

    1.结构

    <view class='page  {{isFix?"pageShow":"pageHide"}}' >
        <view class='header'>        
            <view class='h-toggle iconfont icon-list' bindtap='pageBtn'></view>
        </view>
    </view>
    <view class='r-box {{isFix?"fixShow":"fixHide"}}'  bindtap='fixHide'>
        <view class='r-list' catchtap='fixStopBu'>
            <view class='rl-close' catchtap='fixClose'>
                <text class='iconfont icon-close'></text>
            </view>        
        </view>
    </view>

     上面的是最主要的结构,其它的内容就不贴了。

      (1)  isFix是切换动画名的状态

      (2)  r-box设置了bindtap点击事件之后,r-list也设置了一个不冒泡的catchtap事件,是为了实现点击r-box的空白处时,不冒泡的效果。

    2.样式

    page {
      height: 100%;
      width: 100%;
    }
    .page {
      width: 100%;
      height: 100%;
      box-shadow: 0 0 10px rgba(26,26,26,.1);
    }
    .r-box {
      position: fixed;
      top: 0;
      right: 0;
      width: 100%;
      height: 100%;
    }
    .r-box .r-list {
      float: right;
      width: 66%;
      height: 100%;
      background: white;
    }
    .fixHide {
      transition: all .3s ease;
      transform: translateX(100%);
    }
    .fixShow {
      transition: all .3s ease;
      transform: translateX(0%);
    }
    .pageHide {
      transition: all .3s ease;
      transform: translateX(0) scaleY(1);
    }
    .pageShow {
      transition: all .3s ease;
      transform: translateX(-70%) scaleY(0.9);
    }

     这些是最主要的样式:

      (1)  class为page的div(view),就是模拟整个page页面,所以宽高需要设为100%。

      (2)  r-box是右边侧滑的div(view)

      (3)  fixHide,fixShow这是侧滑栏的动画效果。

      (4)  pageHide,pageShow这是整个页面的动画效果

      (5)  由于transform只能出现一次,所以当有两个即以上的动画效果时,只写在一个transform里,然后把不同的动画效果分开就行。

      (6)  过渡效果的速度曲线我使用的是ease,如果用linear,在手机上会感觉很卡顿。

    3.js

    Page({
       data:{
          isFix:false,//右侧列表是否显示        
       },
       // 右侧列表显示按钮
       pageBtn:function(){
         this.setData({
            isFix:true
         })
       },
       //右侧列表空白点击
       fixHide:function(){
         this.setData({
            isFix: false
         })
       },
       //右侧列表防冒泡,必须有,虽然没内容
       fixStopBu: function () {},
       //右侧列表关闭按钮
       fixClose:function(){
         this.setData({
            isFix:false
         })
       },
    })

     实现的过程大致就是这样。还是挺简单的。不知道用小程序的动画api做起来会不会简单一些或者更顺畅一点,这个就看自己勤不勤了。 

  • 相关阅读:
    缓存(二)
    缓存
    SQL Server 导入大数据脚本
    C#执行OracleHelper
    MERGE 用法
    c# 高效读写文件
    C#网络编程
    C#常用IO流与读写文件
    注册asp.net 4.0 到iis
    javascript原生图片懒加载
  • 原文地址:https://www.cnblogs.com/zjjDaily/p/8567727.html
Copyright © 2011-2022 走看看