博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序iOS端如何暂停animated动画
阅读量:6175 次
发布时间:2019-06-21

本文共 1379 字,大约阅读时间需要 4 分钟。

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

animation-play-state

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

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

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

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

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

在iOS上的处理

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

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

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

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

let style = window.getComputedStyle(element, [pseudoElt]);复制代码

那么具体要怎么做呢?

实现

See the Pen by luogao () on .

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

大致解释一下就是:

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

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

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

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

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

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

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

值得在最后前一提的是

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

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

参考

  • []

本文作者: Roy Luo

本文链接:

转载于:https://juejin.im/post/5b5dd0a85188251ac22b5dd3

你可能感兴趣的文章
PHP FPM源代码反刍品味之五:信号signal处理
查看>>
5G网速真的有理论上那么高吗?
查看>>
Set添加自定义方法对象如何保证唯一性
查看>>
站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
查看>>
技术工坊|浅谈区块链的Layer2扩展(北京)
查看>>
SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
查看>>
Apache和PHP结合 及 Apache默认虚拟主机
查看>>
添加自定义监控项目配置邮件告警测试告警不发邮件的问题处理
查看>>
solidity智能合约的经典设计模式
查看>>
华为交换网络基础、基本配置、STP/RSTP
查看>>
SpringCloud 微服务 (十七) 容器部署 Docker
查看>>
不定项选择题
查看>>
netty 分析博客
查看>>
Spring Cloud构建微服务架构服务注册与发现
查看>>
BCGControlBar教程:如何将MFC控件的BCGControlBarBCGSuite添加到对话框中
查看>>
深入理解Java8 Lambda表达式
查看>>
Java集合框架面试问题集锦
查看>>
Java每天10道面试题,跟我走,offer有!(六)
查看>>
四种途径提高RabbitMQ传输数据的可靠性(二)
查看>>
c语言实现多态
查看>>