微信小程序之实现页面缩放式侧滑效果

摘要:
由于微信小程序无法操作根节点页面,因此只能使用div来模仿页面根节点。isFix用于切换动画名称的状态。在r-box设置bindtap单击事件后,r-list还会设置一个不冒泡的catchtap事件。这是为了在单击r-box的空白处时达到不冒泡的效果。R-box是右侧幻灯片div fixHide,fixShow是侧幻灯片栏的动画效果。

效果图:

微信小程序之实现页面缩放式侧滑效果第1张

实现原理:点击按钮,往需要动画的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做起来会不会简单一些或者更顺畅一点,这个就看自己勤不勤了。 

免责声明:文章转载自《微信小程序之实现页面缩放式侧滑效果》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unreal的控制台命令参数合集windows server 2008 x64下oracle 10gR2的安装方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

uniapp在hbuildex上整合腾讯云智服小程序

在网上找了很久关于这方面但只找到下面这份资料,但还是感谢大佬的思路 https://blog.csdn.net/qq_43032844/article/details/104801053 我重新整理了一下 参考文档: https://docs.qq.com/doc/DSktaeFZkdFFTRGN1 1.请登录微信小程序后台,进入“设置-第三方服务-插件管...

小程序实战——高考分数线查询,你可以使用云开发构建一个小程序!(含源码)

导语 2020 年高考报名人数达到 1071 万人,再创历史新高。在今年的高考落下帷幕之际,介绍一款基于云开发 CloudBase的高考录取分数线查询小程序,希望能为考生的志愿填报提供便利。 技术文档:https://cloudbase.net 数据来源 小程序后台共收录近 30w 条数据,包含 2008-2019 年大部分重点高校的各个批次的文理分科录...

百度小程序开发实战--踩坑经历

文章列表rich-text的图片宽度问题效果如下后端返回的数据格式为string,小程序对次采用了rich-text来识别传入的htmlrich-text推荐使用node的数组模式,字符串模式会影响解析速度(因为最终还是会转换为数组类型),但是后端返回的为string格式,是由后台编辑器传入的。这就导致了无法操作css中 rich-text 里边的图片...

小程序下找地点、查路线、搜地铁,用这3个插件就够了!

以下内容转载自腾讯位置服务公众号文章《小程序下找地点、查路线、搜地铁,用这3个插件就够了!》作者:腾讯位置服务链接:https://mp.weixin.qq.com/s/BYJQTEChD6Df8iZfHs8wIg来源:腾讯位置服务公众号著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。   自从2017年微信上线小程序以来,小程序已经...

uni-app使用Vant组件

前言 vant ui有h5版和微信小程序版。其h5版只能用于h5,其微信小程序版(vant weapp)可用于微信和App,从uni-app 2.4.7起,H5和QQ小程序也支持了微信小程序组件。 使用步骤 下载代码 在项目根目录下新建 wxcomponents 目录 ,此目录应该与components 目录同级。 直接通过 git 下载 vant-we...

解决小程序弹出层滚动穿透的问题

今天在做小程序的时候,遇到了一个棘手的问题,那就是弹出层的滚动穿透,即弹出层滚动,那么被弹出层覆盖的下面的内容区域也会进行滚动,这一点就很麻烦了。弹出层我是用的view标签然后使用的position:fixed进行的定位;说一下我的解决思路: 一:当弹出层里面无滚动的时候: 可以在遮罩的view标签上定义一个防止事件冒泡的方法: catchtouchmov...