最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序?qū)崿F(xiàn)元素漸入漸出動(dòng)畫效果封裝方法

 更新時(shí)間:2019年05月18日 11:00:25   作者:LYJSpeedX  
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)元素漸入漸出動(dòng)畫效果封裝方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

開端

之前一直使用堪稱“萬能”的jQuery處理用戶交互的動(dòng)畫,近日開發(fā)微信小程序,微信小程序高度限制的語法和功能使開源函數(shù)可謂對(duì)其“無能為力”。
那沒辦法,只好自己寫一個(gè)可以讓元素漸入漸出的,可復(fù)用的函數(shù)了。做到類似jQuery show()的效果

原創(chuàng)文章,允許轉(zhuǎn)載分享。但請(qǐng)轉(zhuǎn)載請(qǐng)一定標(biāo)明出處,這是起碼的尊重
本文章閱讀前需要對(duì)微信小程序的動(dòng)畫api有所了解

先看效果

可以看到,動(dòng)畫效果十分流暢,高度復(fù)用,封裝好后只需要三行代碼實(shí)現(xiàn)動(dòng)畫

解決

1.尋根問底,發(fā)現(xiàn)wx_mini_program(下面稱呼微信小程序?yàn)閣xmp [差點(diǎn)叫成 (*´ノ皿`)mmp] )有一個(gè)全局的js邏輯文件,叫app.js,有意思,可以往里面塞自己寫的object(函數(shù)數(shù)據(jù)等等),那就從那里入手吧
2.在app.js中定義全局的動(dòng)畫函數(shù)

App({
 //漸入,漸出實(shí)現(xiàn) 
 show : function(that,param,opacity){
  var animation = wx.createAnimation({
   //持續(xù)時(shí)間800ms
   duration: 800,
   timingFunction: 'ease',
  });
  //var animation = this.animation
  animation.opacity(opacity).step()
  //將param轉(zhuǎn)換為key
  var json = '{"' + param + '":""}'
  json = JSON.parse(json);
  json[param] = animation.export()
  //設(shè)置動(dòng)畫
  that.setData(json)
 },

 //滑動(dòng)漸入漸出
 slideupshow:function(that,param,px,opacity){
  var animation = wx.createAnimation({
   duration: 800,
   timingFunction: 'ease',
  });
  animation.translateY(px).opacity(opacity).step()
  //將param轉(zhuǎn)換為key
  var json = '{"' + param + '":""}'
  json = JSON.parse(json);
  json[param] = animation.export()
  //設(shè)置動(dòng)畫
  that.setData(json)
 },

 //向右滑動(dòng)漸入漸出
 sliderightshow: function (that, param, px, opacity) {
  var animation = wx.createAnimation({
   duration: 800,
   timingFunction: 'ease',
  });
  animation.translateX(px).opacity(opacity).step()
  //將param轉(zhuǎn)換為key
  var json = '{"' + param + '":""}'
  json = JSON.parse(json);
  json[param] = animation.export()
  //設(shè)置動(dòng)畫
  that.setData(json)
 }
})

3.現(xiàn)在我們?cè)倏纯凑{(diào)用這個(gè)函數(shù)的具體方法
在wxml中,只需要設(shè)置animation綁定即可,以首頁index為例

// 這里是pages/page/index.wxml
//使用view包裹需要?jiǎng)赢嫷脑?
//class中定義動(dòng)畫開始前的初始樣式,如透明度=0,向下偏移200px等,animtion屬性填入綁定值
<view class="init" animation="{{slide_up1}}">

4.在該頁的js中

// 這里是pages/page/index.js
//首先獲取小程序?qū)嵗?,訪問app.js中的函數(shù)
this.app = getApp();
//調(diào)用show函數(shù),傳參
//注意:查看上面show函數(shù)定義查看參數(shù)含義
//第一個(gè)參數(shù)是當(dāng)前的頁面對(duì)象,方便函數(shù)setData直接返回?cái)?shù)據(jù)
//第二個(gè)參數(shù)是綁定的數(shù)據(jù)名,傳參給setData,詳細(xì)見上面
//第三個(gè)參數(shù)是上下滑動(dòng)的px,因?yàn)閏lass="init"定義初始該元素向下偏移了200px,所以這里使其上移200px
//第四個(gè)參數(shù)是需要修改為的透明度,這里是1,表示從初始的class="init"中定義的透明度0修改到1
this.app.slideupshow(this, 'slide_up1', -200, 1)

5.讓我們完善流程,達(dá)到預(yù)覽圖首頁的效果(有延時(shí)的邊上升邊出現(xiàn)效果)
wxml就是將各個(gè)容器分別綁定不同的變量,一個(gè)view容器就是一個(gè)動(dòng)畫單位(可以這樣理解),如

<view class="init" animation="{{slide_up1}}">
  <card>...</card>
</view>
<view class="init" animation="{{slide_up2}}">
  <card>...</card>
</view>

頁面的js

//onload時(shí)獲取小程序?qū)嵗?
onLoad: function (options) {
  this.app = getApp()
 },
//頁面展示時(shí),觸發(fā)動(dòng)畫
 onShow: function () {
  this.app.slideupshow(this, 'slide_up1', -200, 1)

  setTimeout(function () {
   this.app.slideupshow(this, 'slide_up2', -200, 1)
  }.bind(this), 200);
 },
//頁面隱藏時(shí),觸發(fā)漸出動(dòng)畫
 onHide: function () {
   //你可以看到,動(dòng)畫參數(shù)的200,0與漸入時(shí)的-200,1剛好是相反的,其實(shí)也就做到了頁面還原的作用,使頁面重新打開時(shí)重新展示動(dòng)畫
  this.app.slideupshow(this, 'slide_up1', 200, 0)
  //延時(shí)展現(xiàn)容器2,做到瀑布流的效果,見上面預(yù)覽圖
  setTimeout(function () {
   this.app.slideupshow(this, 'slide_up2', 200, 0)
  }.bind(this), 200);
 }

以上所述是小編給大家介紹的微信小程序?qū)崿F(xiàn)元素漸入漸出動(dòng)畫效果封裝方法詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • JavaScript Typescript基礎(chǔ)使用教程

    JavaScript Typescript基礎(chǔ)使用教程

    TypeScript是Microsoft(微軟)開發(fā)的一種開源編程語言,它充分利用了JavaScript原有的對(duì)象模型,并在此基礎(chǔ)上進(jìn)行了擴(kuò)充,TypeScript設(shè)計(jì)目標(biāo)是開發(fā)大型應(yīng)用,它可以編譯成純JavaScript,編譯出來的JavaScript可以運(yùn)行在任何一種JS運(yùn)行環(huán)境中
    2022-12-12
  • JavaScript數(shù)值轉(zhuǎn)換的三種方式總結(jié)

    JavaScript數(shù)值轉(zhuǎn)換的三種方式總結(jié)

    JavaScript數(shù)值轉(zhuǎn)換一般有三種方式,Number(param)函數(shù)、parseInt(param)、parseIFloat(param),下面為大家詳細(xì)介紹,需要的朋友可以參考下
    2014-07-07
  • ES6中Generator與異步操作實(shí)例分析

    ES6中Generator與異步操作實(shí)例分析

    這篇文章主要介紹了ES6中Generator與異步操作,結(jié)合實(shí)例形式分析Generator的概念、功能及相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • JS生態(tài)系統(tǒng)加速探索Draft-js?emoji插件功能及使用探索

    JS生態(tài)系統(tǒng)加速探索Draft-js?emoji插件功能及使用探索

    這篇文章主要介紹了JS生態(tài)系統(tǒng)加速探索Draft-js?emoji插件功能使用探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • js實(shí)現(xiàn)一個(gè)可以兼容PC端和移動(dòng)端的div拖動(dòng)效果實(shí)例

    js實(shí)現(xiàn)一個(gè)可以兼容PC端和移動(dòng)端的div拖動(dòng)效果實(shí)例

    這篇文章主要介紹了js實(shí)現(xiàn)一個(gè)可以兼容PC端和移動(dòng)端的div拖動(dòng)效果實(shí)例,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-12-12
  • JavaScript自定義localStorage監(jiān)聽事件的解決方法

    JavaScript自定義localStorage監(jiān)聽事件的解決方法

    在項(xiàng)目開發(fā)過程中,發(fā)現(xiàn)有很多時(shí)候進(jìn)行l(wèi)ocalStorage.setItem()操作設(shè)置本地存儲(chǔ)后,頁面必須刷新才能夠獲取到存儲(chǔ)數(shù)據(jù),為了解決這個(gè)問題,就必須要用到自定義localStorage監(jiān)聽事件了,所以本文給大家介紹了自定義localStorage監(jiān)聽事件,需要的朋友可以參考下
    2024-10-10
  • JavaScript中call,apply,bind的區(qū)別與實(shí)現(xiàn)

    JavaScript中call,apply,bind的區(qū)別與實(shí)現(xiàn)

    這篇文章主要介紹了JavaScript中call,apply,bind的區(qū)別與實(shí)現(xiàn),文章通過圍繞主題思想展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • js判斷是否是手機(jī)頁面

    js判斷是否是手機(jī)頁面

    本文主要介紹了js判斷是否是手機(jī)頁面的方法。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-03-03
  • Javascript處理DOM元素事件實(shí)現(xiàn)代碼

    Javascript處理DOM元素事件實(shí)現(xiàn)代碼

    DOM元素都有一些標(biāo)準(zhǔn)事件,一般使用時(shí)只要使用onclick=function的方式就可以了,但是當(dāng)需要為DOM元素添加多個(gè)事件,刪除事件,或在用Javascript封裝控件的時(shí)候,為封裝的控件添加自定義事件的時(shí)候
    2012-05-05
  • JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象的定義和繼承詳解

    JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象的定義和繼承詳解

    這篇文章主要介紹了JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象的定義和繼承,結(jié)合實(shí)例形式詳細(xì)分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象定義、繼承、屬性、方法、深拷貝等相關(guān)概念與操作技巧,需要的朋友可以參考下
    2019-07-07

最新評(píng)論

二手房| 安塞县| 齐齐哈尔市| 土默特左旗| 日照市| 响水县| 密云县| 湄潭县| 樟树市| 东乡族自治县| 依兰县| 旬阳县| 兴山县| 囊谦县| 兴国县| 四会市| 棋牌| 合江县| 高陵县| 涟水县| 安国市| 抚远县| 汝阳县| 宜春市| 龙井市| 隆德县| 新疆| 隆德县| 肇庆市| 剑阁县| 正镶白旗| 铜梁县| 上饶市| 抚顺市| 鄂尔多斯市| 南昌县| 郑州市| 汤原县| 德兴市| 湾仔区| 东宁县|