基于WePY2.x框架下的小程序开发实现动画效果的弹窗组件

这个项目很适合新手入门WePY框架和小程序开发,包含组件封装,自定义导航,微信登录,网络请求、各种业务逻辑处理等。觉得有用的帮忙给个star~

基于WePY2.x框架下仿豆瓣小程序

标题实在是不知道该怎么再进行缩减了。首先说明下是小程序开发,其次是基于WePY框架下。因为其使用类Vue语法进行小程序开发,与原生小程序开发和基于Taro框架下使用类React语法的小程序开发在语法上还是有很大区别的,所以特别强调一下。

一、前言

随着公司小程序需求的日益上升,在假期自学了原生小程序开发以及小程序云开发。但是公司小程序工程又是基于WePY框架下进行开发的,其使用类Vue语法,方便那些习惯于用Vue框架进行前端开发的同学。所以进行WePY开发之前,还要先去学习Vue

但是类Vue毕竟是类Vue,与本身的Vue还是有诸多不同的。在WePY1.x的时代,一眼就能看到原生小程序的影子。目前的2.x时代已经对此优化了很多,本篇文章就是基于WePY2.x下实现动画效果的弹窗组件的,所以使用的时候一定要先注意版本。

二、代码

动画弹窗组件

里面包含了Vue原生小程序基于WePY框架三种实现方案。具体为什么会有3种,且往下看。

三、实现历程

1. Vue实现

因为WePY框架下的小程序是类Vue语法,所以自然而然想到用Vue的方式去解决问题。

  • 实现效果


    Vue实现效果
  • 实现原理

通过Vue的transition标签+CSS3动画属性

  • 实现代码

Vue实现弹窗组件

本案例通过cdn引用而Vue,去测试实现动画弹窗。因为只是实验,所以并没有使用Vue脚手架

  • 实现逻辑

水平有限,在自己的知识区内进行解释。具体可以看代码

通过transition组件去监听其下DOM的插入与移除。transition的特性就是可以给任何元素和组件添加enter/leave的过渡。详细点说就是当DOM通过v-ifv-show显示或隐藏时,transition会在其显示与隐藏的过渡阶段动态添加enter或者leave类。然后结合CSS3的transition属性,去针对不同的过渡阶段做动画样式。这点其实和React的一个动画库react-transition-group有异曲同工之妙,之前的一篇文章有玩过React转场动画,期间就使用了React这个库。

  • 结果

在Vue工程下,成功实现了弹窗组件。将其移植到WePY的小程序工程中,出现了问题。WePY虽然是类Vue语法,但毕竟不是真正的Vue,所以不识别transition组件~Game Over

2. 原生小程序实现

打开小程序官方文档,发现有相关实现动画的API

  • 实现效果


    原生小程序实现效果
  • 实现原理

小程序官方API wx.createAnimation(Object object)

  • 实现代码

原生小程序实现弹窗组件

  • 实现逻辑

水平有限,在自己的知识区内进行解释。具体可以看代码

创建组件时,使用wx.createAnimation初始化一个动画实例。通过observes监听组件的是否显示属性的变化。根据属性的改变值调用动画实例的bottom(改变哪个CSS属性就调用动画实例的哪个方法)函数,并传入bottom改变的值。然后导出动画队列并其绑定给动画载体(标签)的animation属性。

  • 结果
    WePY工程不支持原生小程序语法,最明显的就是原生小程序通过setData手动去实现数据绑定,而WePY可以通过类Vue的v-bind进行绑定。并且两者组件之间本身就是有很多区别的。具体可以查看WePY文档

3. WePY小程序实现

虽然WePY不支持原生小程序的语法,但是其工程内是可以调用原生小程序的官方API的

  • 实现效果


    WePY实现效果
  • 实现原理

小程序官方API wx.createAnimation(Object object)

  • 实现代码

WePY小程序实现弹窗组件

  • 实现逻辑

水平有限,在自己的知识区内进行解释。具体可以看代码

通过类Vue语法v-bind去绑定动画载体的animation属性,在watch下去监听显示与隐藏属性的改变,然后动态去导出wx.createAnimation创建的动画实例的动画队列。此时不用进行setData,因为v-bind已经自动将新的动画队列绑定到动画载体上了。

  • 结果

完美解决需求,最后的实现也确实很有意思,用的vue语法,去绑定原生小程序组件特有的animation属性。所以印证了勇于尝试,勇于探索是解决问题的唯一之道

四、额外补充

在三种方式封装组件中,无论哪一种都是支持solt插槽组件。所以可以将弹窗内容作为插槽,以便使用者针对业务需求扩展出更加个性化的弹窗样式。

五、感触

前端虽杂,但还是很有趣的。加油吧!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • 开源项目 wepy-wechat-demo:基于wepy开发的仿微信聊天界面小程序 深大的树洞:基于wepy开发的...
    dufebin阅读 4,041评论 0 19
  • 在说说WePY框架之前,先小结一下自己对前端工作的基本认识。对普通的前端开发者来讲,做到心中有数,方能得心应手。在...
    锋享前端阅读 815评论 0 1
  • 即使在这个信息全球化、思想开放的现代社会,国人对于姻婚的观念还是相当传统的,女孩一旦芳龄过30岁,就自然被社...
    依寒阅读 564评论 0 0
  • 不是因为有了希望才坚持 而是因为坚持才有希望 不是因为有了机会才争取 而是因为争取了才有机会 不是因为会了才去做 ...
    Seven_七柒琪阅读 256评论 0 0
  • 哄小轰阅读 165评论 0 1