anime.js动画在iOS7 Safari及iOS9 Opera Mini中无法触发的问题求助
嘿,刚好碰到过类似的旧iOS动画兼容问题,给你几个实用的排查方向:
首先可以确定,桌面端正常说明你的动画逻辑本身没问题,问题大概率出在旧iOS版本WebKit内核的兼容性坑上,试试下面这些方法:
换用
max-height替代height做展开动画
旧iOS的WebKit对height:auto的动画支持非常差,哪怕你用了动画库也没用。可以把菜单的height设为0,max-height设一个比菜单实际最大高度大的固定值(比如500px),配合overflow:hidden,再给max-height加过渡动画——这种模拟展开的方式在旧iOS上兼容性好很多。补全WebKit前缀
旧iOS内核需要带前缀的CSS属性,比如把transition改成-webkit-transition,animation改成-webkit-animation。很多时候只是缺了前缀,动画就完全不生效。检查动画库的兼容范围
你是首次用这个动画库,先确认下它的文档里有没有标注支持iOS7/iOS9这类旧系统。如果库本身已经放弃对低版本iOS的支持,那要么换个轻量的兼容型动画库,要么直接用原生CSS过渡代替。确保点击事件能被正确触发
旧iOS上的点击事件有300ms延迟,甚至可能因为元素没有“可点击标识”而不触发。可以给菜单div加上cursor: pointer或者-webkit-tap-highlight-color: transparent样式,也可以试试把click事件换成touchstart(注意要加防误触逻辑)。先测试最简版动画
写个最简化的测试案例:一个空div,点击后用CSS过渡改变它的高度,看看在旧设备上能不能生效。如果最简版能跑,再逐步加回你的业务代码,就能排查出是哪部分逻辑冲突导致动画失效了。
内容的提问来源于stack exchange,提问作者tijanicharles

