动画
这里带大家了解下 Mobilebone 中过场动画的实现与设置。
实现
Mobilebone 中的过场动画是通过 CSS animation 属性实现的。
通过添加类名 'in' 让页面元素显示,通过添加类名 'out' 让页面元素隐藏,而类名 'reverse' 可以让动画反向执行,会用在返回这种场景中。其中,'in' 和 'out' 不能同时出现。
过场动画的类型也是通过类名设置的,默认的过程动画效果是左右滑动切换,和手机 APP 原生的过场效果一致,使用的是类名 'slide'。
例如,现在有一个页面元素的 HTML 代码是这样的:
<div class="page out"></div>
则执行下面的 JS 语句就可以让这个页面元素从浏览器窗口右侧出现。
page.classList.add('slide');
page.classList.remove('out');
page.classList.add('in');
当然,实际开发无需关心上面的细节,Mobilebone 已经在内部处理好了。
类型
Mobilebone 支持扩展过场动画类型,两种方法:
- 开发者自定义;
- 使用官方扩展;
开发者自定义
开发者可以自定义任意的动画类名,然后写好和类名 'in'、'out'、'reverse' 组合样式即可,例如下面的CSS代码:
.fade.out {
opacity: 0;
animation-duration: 125ms;
animation-name: fadeout;
}
.fade.in {
opacity: 1;
animation-duration: 225ms;
animation-name: fadein;
}
@keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fadeout {
from { opacity: 1; }
to { opacity: 0; }
}
此时,只需要通过 Mobilebone 提供的 API 重置掉默认的 'slide' 为这里的 'fade' 就可以有自定义的淡入淡出过场效果了。
例如,本文档的上下移入移出效果就是使用的自定义的 'slideup' 过场效果。
官方扩展
Mobilebone 官方提供了多种过场类型,都合在了专门的过场动画 CSS 文件中,在项目的 src 文件目录下,名为 mobilebone.animate.css,其中包含以下类型的过场动画效果:
- fade - 淡入淡出
- slideup - 上移/淡出
- slidedown - 下落/淡出
- pop - 放大缩小
- turn - 翻转(3D效果需要容器上设置类名
'viewport-turn') - flip = 弹入弹出(3D效果需要容器上设置类名
'viewport-flip') - flow - 流入流出
各个效果可以访问对应的测试页面体验。
设置
上面介绍了过场动画类型,这里讲下如何设置这些过场动画。
分两种情况:
- 全局设置;
- 局部设置;
全局设置
全局改变 Mobilebone 过场动画类型需要使用 Mobilebone.classAnimation 这个API接口,例如:
Mobilebone.classAnimation = 'fade';
这个时候,当页面过场发生的时候,会在页面元素上设置类名 'fade',而不是默认的 'slide'。此时,只要有对应的CSS动画设置,则过场的时候就会有你想要的动画效果出现了。
另外,也可以使用老的 Mobilebone.form 接口全局设置过场动画类型。
局部设置
如果希望仅仅某一个页面的过场效果是特殊的,可以使用 data-form 在对应的页面元素上进行设置即可,例如:
<div class="page out" data-form="flip"></div>
此时,上面的 HTML 代码对应的页面元素在显示和隐藏的时候就会使用“弹入弹出”这个过场动画效果。
发现错误?想参与编辑?在 GitHub 上编辑此页!