微信小程序动画组件使用解析,类似vue,且更强大


Posted in Javascript onAugust 01, 2019

演示

演示1

微信小程序动画组件使用解析,类似vue,且更强大

演示2

微信小程序动画组件使用解析,类似vue,且更强大

演示3

微信小程序动画组件使用解析,类似vue,且更强大 

一、功能描述

1、预设过渡

  • 支持区分enter、leave
  • 支持预设过渡的组合
  • 特别强调:支持元素展开、闭合的过渡。name=='slide'或['slide'[,]],即可实现,无需外部传height
  • 支持外部传类来过渡或动画
/* 预留过渡 */
/**
*1、fade
*2、移动:up,right,down,left四个方向
*3、scale缩放:默认是从0->1,还预设了一个从1->1.2的
*4、rotate旋转。顺时针旋转。角度用以上方向来指示。如果逆时针中间加上reserve。
如rotate-right表示选择180度,rotate-down-reserve表示逆时针旋转90度。
预设了,90,180,270,360;-90.-180,-270,-360角度的旋转
*5、slide:内容块张开还是隐藏。 √

*说明:以上是整体过渡的单元:传name的时候,可以多个组合,形成更加复杂的过渡。
*如果这些组合,还不够你的使用,可以部分或全部过渡通过外部传类来实现。
*/

2、蒙层相关功能

  • 无蒙层:mask:0。//此时过渡元素为卡槽
  • 透明蒙层1:mask:1。//此时过渡元素为卡槽。如:左移100%,只是移动卡槽宽度的100%
  • 透明蒙层2:mask:2。//此时过渡元素为蒙层。如:左移100%,则是移动蒙层宽度的100%
  • 半透明蒙层3:mask:3。///此时过渡元素为蒙层。如:弹窗上移,则是蒙层上移。
  • 半透明蒙层4:mask:4。///此时过渡元素为卡槽。如:弹窗上移,则是蒙层自身是缩放。卡槽上移

3、卡槽样式完美设置

  • 由以上可知。蒙层由多种情况。但
  • 完美支持百分比设置:外部传custom-class即可

4、其它细节

  • 完美支持自定义top、tab导航情况
  • 蒙层(包括透明蒙层)下,预设5个布局位置:结合方向等,可实现左右抽屉、上下弹出、中间淡入淡出等效果
  • 支持leave动画结束后,通知父节点:可实现多节点联动。如:手风琴效果

5、支持所有的节点。包括组件作为卡槽内容

  • 对需要动画的元素/组件套上这个组件即可实现过渡动画
  • 其实整个小程序页面做进入过渡,也挺炫酷的。类似支付宝页面进蚂蚁森林

二、可传属性(可配置项)

过渡相关类

externalClasses: [
'enter-class',
'enter-active-class',
'enter-to-class',
'leave-class',
'leave-active-class',
'leave-to-class',
],

内容(卡槽)样式

externalClasses:[
'custom-class',
]

说明:完美支持像素、百分比、或者absolute的设置

配置项

properties: {
name: {
type: [String,Object,Array],//支持区分enter、leave过渡
value:{
enter:{
type:[String,Array],
value:['up','fade'],//支持传数组,即内设的过渡,可组合
},
leave:"fade"
 }
},
show: {
 type: Boolean,
 value: false
},
duration: { //run Time ms
 type: [String,Number,Object],//`过渡时间,支持区分enter、leave。如果enter不需要过渡,enter:0即可`
 value:{
  enter:300,
  leave:300,
 }
},
//leave过渡之后状态是否保留。而不是display:none
//带有mask,避免影响页面操作。这边强制禁止保留状态。适用于非mask的情况。mask:0和1、2(1、2是全透明的,设置了属性虽然不会影响页面操作。建议不宜保留)
retain:{
 type:Boolean,
 value:false
},
mask: { //`支持选蒙层类型:预设5中类型` 以下四个个是配套的,针对mask的配置
 type: [String,Number],//如果为0,表示没有蒙层。1、2:全透明蒙层
 value: '0',
},
//顶部的margin。如果没有自定义navBar或tabBar则,fixed区域为中间的可视区域。否则为中间可视区域+自定义bar区域。
//因此为了兼容,如果自定义了bar,则要传值进来修正蒙层的区域。
margin:{//记得带上单位哦。
 type: Object,
 value:{
  top:'0px',
  bottom:'0px',}
},
position: { //`支持卡槽位置:top、right、bottom、left、center`如果有mask,则mask中的卡槽位置是哪里。如果要再偏移,则外部卡槽使用margin来实现即可
 type: String,
 value: "right",
},
close: { //如果有mask,点击Mask是否关闭蒙层
 type: Boolean,
 value: false
}

三、完整代码(demo)

git代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
Apr 02 Javascript
事件模型在各浏览器中存在差异
Oct 20 Javascript
jquery如何判断某元素是否具备指定的样式
Nov 05 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
Mar 23 Javascript
javascript事件委托的方式绑定详解
Jun 10 Javascript
JavaScript中几种排序算法的简单实现
Jul 29 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
Jun 13 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
Sep 28 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
关于node-bindings无法在Electron中使用的解决办法
Dec 18 Javascript
详解es6新增数组方法简便了哪些操作
May 09 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
Dec 23 Javascript
vue项目中全局引入1个.scss文件的问题解决
Aug 01 #Javascript
jQuery中DOM操作原则实例分析
Aug 01 #jQuery
详解package.json版本号规则
Aug 01 #Javascript
ES6 新增的创建数组的方法(小结)
Aug 01 #Javascript
详解基于Wepy开发小程序插件(推荐)
Aug 01 #Javascript
深入浅析Vue中mixin和extend的区别和使用场景
Aug 01 #Javascript
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 #Javascript
You might like
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
javascript URL锚点取值方法
2009/02/25 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
原生js实现打字动画游戏
2017/02/04 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
2019/01/29 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
Python中用于返回绝对值的abs()方法
2015/05/14 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
英国Boots旗下太阳镜网站:Boots Designer Sunglasses
2018/07/07 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
eBay荷兰购物网站:eBay.nl
2020/06/26 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
温馨提示标语
2014/06/26 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
商超业务员岗位职责
2015/02/13 职场文书
企业安全生产规章制度
2015/08/06 职场文书
XX部保密工作制度范本
2019/08/27 职场文书