先给大家看下效果图
分析
这种不固定起始位置的动画,自然不能用 gif 图,所以只能用原生代码实现
那我们有什么工具来实现动画呢?
小程序提供了 JS API createAnimation 来创建动画
CSS animation
工具有了,我们再看一下什么是抛物线。
这里我们只讨论水平抛物线,水平抛物线从数学原理上来说就是【水平匀速、垂直加速的运动】,转换成代码层面就是在动画效果 timingFunction 中,水平动画采用 linear ,垂直动画采用 ease-in
所以我们需要把这个抛物线动画分解成 两个 同时 进行但 不同动画效果 的动画。
实现
小程序的实现
JS:
HTML:
<view animation="{{animationY}}" style="position:fixed;top:{{ballY}}px;" hidden="{{!showBall}}"> <view class="ball" animation="{{animationX}}" style="position:fixed;left:{{ballX}}px;"></view> </view>
据我所知,用 transform: transtate() 来实现的动画会比 top & left 性能更优,但尝试下来发现并不能做到理想的交互效果,期待后续继续研究吧
H5 的实现
// todo
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com