微信小程序iOS端如何暫停animated動畫

在知道有animation-play-state這個animation的參數(shù)時,我內(nèi)心是激動的。在得知iOS端并不支持時,一股涼意襲來

animation-play-state

先來介紹一下今天的主角animation-play-state

animation-play-state CSS 屬性定義一個動畫是否運行或者暫停??梢酝ㄟ^查詢它來確定動畫是否正在運行。另外,它的值可以被設(shè)置為暫停和恢復(fù)的動畫的重放。

恢復(fù)一個已暫停的動畫,將從它開始暫停的時候,而不是從動畫序列的起點開始在動畫。

在MDN文檔中了解到,這是一個實驗中的功能,但是其作用還是強大的。既可以控制/獲取元素的動畫狀態(tài)(paused,running)

所以,這個animation的參數(shù)用來控制動畫的播放狀態(tài)再合適不過了。畫外音:你還沒考慮兼容性呢!對!就是這個兼容性問題。在chrome上這個參數(shù)是可以支持的,但是iOS設(shè)備上就不支持了...嘆息。

在iOS上的處理

當(dāng)然不能因為兼容性問題就不用這個參數(shù)了,當(dāng)然不能讓每個iOS用戶去下載一個chrome瀏覽器,當(dāng)然...

那我們怎么解決呢???用JS

通過Window.getComputedStyle()方法,我們可以獲取元素實時的styleCSSStyleDeclaration對象,這個對象表示CSS屬性鍵值對的集合。也就是說我們使用這個方法可以獲取一個正在進行動畫的元素當(dāng)前的style值。

PS:關(guān)于Window.getComputedStyle()方法的值可以在MDN上了解到,這里不展開敘述。給出一個語法的例子(摘自MDN)

 let style = window.getComputedStyle(element, [pseudoElt]);

那么具體要怎么做呢?

實現(xiàn)

<p data-height="417" data-theme-id="light" data-slug-hash="ejeLJm" data-default-tab="js,result" data-user="luogao" data-pen-title="animation-play-state" class="codepen">See the Pen <a >animation-play-state</a> by luogao (<a >@luogao</a>) on <a >CodePen</a>.</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>

代碼已經(jīng)在上面的codepen預(yù)覽中展示啦,如果現(xiàn)實不來請點這里??Roy Luo's codepen

大致解釋一下就是:

在元素的外層的包裹元素上添加獲取到的執(zhí)行動畫的元素的style計算屬性,從而讓執(zhí)行動畫的元素暫停下來。

那么在微信小程序中又是如何呢?

其實,最先遇到這個問題是在做小程序的時候。一個播放器的界面,中間一張專輯圖片。在圓形的黑膠唱片邊框中旋轉(zhuǎn)。當(dāng)播放停止,圖片也同時停止旋轉(zhuǎn)。停在當(dāng)前旋轉(zhuǎn)的位置

當(dāng)時看似簡單的一個需求,使用了animation-play-state并且與預(yù)期一樣達到了效果,在模擬器中。

沒錯,洋洋得意的以為完成了需求,結(jié)果真機(iOS)上一測試,原形畢露。

當(dāng)時看到小程序的官方社區(qū)中提到說iOS不支持這個animation-play-state???♂????♂????♂????

幸得殘陽映楓紅在sf的一個問題中的回答讓我找到了方向。感謝之~

值得在最后前一提的是

這里有三個小程序的坑要提一下

  • nodesRef.fields(fields, [callback])這個方法需要在基本庫2.1.0(個人感覺不是個該著重考慮的問題)
  • 這個方法是異步的(自行感受)
  • 應(yīng)該區(qū)分iOS和安卓設(shè)備,進行不同的處理。能不用這個nodesRef.fields方法盡量不要用~

參考

本文作者: Roy Luo

本文鏈接: 微信小程序iOS端如何暫停animated動畫

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,239評論 3 119
  • 昨天去見了他,他靜靜的坐在一邊等我,遠遠的看見了我對我揮揮手,淡淡的對著我笑,就像十七歲的時候一樣,只是眼神里少了...
    554的魚閱讀 389評論 0 5
  • 由我最崇拜的一位名師推薦,假期里我閱讀了李崇建老師寫的《麥田里的老師》這本書,雖然里面涵蓋了大量心理學(xué)范疇的內(nèi)容我...
    超人媽媽_68eb閱讀 1,656評論 0 3
  • 問答 什么是閉包? 有什么作用? 閉包是指能夠訪問自由變量的函數(shù)(變量在本地使用,但在閉包中定義)。換句話說,定義...
    李奕豪閱讀 407評論 0 0
  • 先把需要的文件導(dǎo)入虛擬機 在終端中在主機上傳輸: scp /User/dllo/Desktop/Linux/mys...
    EnjoyGoodTime閱讀 361評論 0 1

友情鏈接更多精彩內(nèi)容