微信小程序iOS端如何暂停animated动画

在知道有animation-play-state这个animation的参数时,我内心是激动的。在得知iOS端并不支持时,一股凉意袭来

animation-play-state

先来介绍一下今天的主角animation-play-state

animation-play-state CSS 属性定义一个动画是否运行或者暂停。可以通过查询它来确定动画是否正在运行。另外,它的值可以被设置为暂停和恢复的动画的重放。

恢复一个已暂停的动画,将从它开始暂停的时候,而不是从动画序列的起点开始在动画。

在MDN文档中了解到,这是一个实验中的功能,但是其作用还是强大的。既可以控制/获取元素的动画状态(paused,running)

所以,这个animation的参数用来控制动画的播放状态再合适不过了。画外音:你还没考虑兼容性呢!对!就是这个兼容性问题。在chrome上这个参数是可以支持的,但是iOS设备上就不支持了...叹息。

在iOS上的处理

当然不能因为兼容性问题就不用这个参数了,当然不能让每个iOS用户去下载一个chrome浏览器,当然...

那我们怎么解决呢???用JS

通过Window.getComputedStyle()方法,我们可以获取元素实时的styleCSSStyleDeclaration对象,这个对象表示CSS属性键值对的集合。也就是说我们使用这个方法可以获取一个正在进行动画的元素当前的style值。

PS:关于Window.getComputedStyle()方法的值可以在MDN上了解到,这里不展开叙述。给出一个语法的例子(摘自MDN)

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

那么具体要怎么做呢?

实现

<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 href="https://codepen.io/luogao/pen/ejeLJm/">animation-play-state</a> by luogao (<a href="https://codepen.io/luogao">@luogao</a>) on <a href="https://codepen.io">CodePen</a>.</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>

代码已经在上面的codepen预览中展示啦,如果现实不来请点这里👉Roy Luo's codepen

大致解释一下就是:

在元素的外层的包裹元素上添加获取到的执行动画的元素的style计算属性,从而让执行动画的元素暂停下来。

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

其实,最先遇到这个问题是在做小程序的时候。一个播放器的界面,中间一张专辑图片。在圆形的黑胶唱片边框中旋转。当播放停止,图片也同时停止旋转。停在当前旋转的位置

当时看似简单的一个需求,使用了animation-play-state并且与预期一样达到了效果,在模拟器中

没错,洋洋得意的以为完成了需求,结果真机(iOS)上一测试,原形毕露。

当时看到小程序的官方社区中提到说iOS不支持这个animation-play-state🤦‍♂️🤦‍♂️🤦‍♂️🤦‍

幸得残阳映枫红在sf的一个问题中的回答让我找到了方向。感谢之~

值得在最后前一提的是

这里有三个小程序的坑要提一下

  • nodesRef.fields(fields, [callback])这个方法需要在基本库2.1.0(个人感觉不是个该着重考虑的问题)
  • 这个方法是异步的(自行感受)
  • 应该区分iOS和安卓设备,进行不同的处理。能不用这个nodesRef.fields方法尽量不要用~

参考

本文作者: Roy Luo

本文链接: 微信小程序iOS端如何暂停animated动画

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

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,969评论 3 119
  • 昨天去见了他,他静静的坐在一边等我,远远的看见了我对我挥挥手,淡淡的对着我笑,就像十七岁的时候一样,只是眼神里少了...
    554的鱼阅读 345评论 0 5
  • 由我最崇拜的一位名师推荐,假期里我阅读了李崇建老师写的《麦田里的老师》这本书,虽然里面涵盖了大量心理学范畴的内容我...
    超人妈妈_68eb阅读 1,540评论 0 3
  • 问答 什么是闭包? 有什么作用? 闭包是指能够访问自由变量的函数(变量在本地使用,但在闭包中定义)。换句话说,定义...
    李奕豪阅读 347评论 0 0
  • 先把需要的文件导入虚拟机 在终端中在主机上传输: scp /User/dllo/Desktop/Linux/mys...
    EnjoyGoodTime阅读 279评论 0 1